MySQL总结

本文详细介绍了MySQL的使用场景、数据库引擎(如Innodb、MyIASM、MEMORY)、索引原理(包括B+树、Hash索引)、事务的四大特性与隔离级别,以及锁的概念和优化。此外,还讨论了SQL优化策略,包括长难语句、关联查询、子查询的优化,并提出了数据结构的优化建议。通过对MySQL的深入理解,有助于提升数据库的性能和管理效率。
摘要由CSDN通过智能技术生成

MySQL

为什么使用数据库

数据保存在内存

  • 优点:存取速度快
  • 缺点:数据不能永久存取

数据保存在文件

  • 优点:数据可以持久化
  • 缺点:速度比内存操作慢,频繁的IO操作,查询数据数据不方便

数据保存在数据库

  • 优点:数据可以持久化,使用SQL语句,查询方便效率高,管理数据方便
  • 缺点:数据库本身需要内存来管理,需要保证数据库的稳定性,增加了系统的复杂性

范式

  • 第一范式:每列都不可再拆分
  • 第二范式:在第一范式的基础上,非主键列完全依赖于主键,不能是依赖于主键的一部分
  • 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键

1.引擎

查询mysql版本

select version();

image-20230208230403620

查询当前mysql支持的引擎:

show engines;

image-20230208230444702

InnoDB是默认的引擎

查询某个表使用的引擎

SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_NAME = 'sys_user';

image-20230213200437273

Innodb

Innodb引擎提供了对数据库ACID事务的支持,还提供了行级锁和外键的约束,设计目标是处理大数据容量的数据库系统

特性:

  • 插入缓冲:通过将插入操作的数据存储在缓存区中实现,当缓存区满时,Innodb会将缓冲区中的数据写入磁盘,以便将数据永久保存
  • 二次写:通过将更新操作的日志记录到缓冲池中,然后将缓冲池中的日志记录写入磁盘上的日志文件中来实现,当更新操作完成后,Innodb会将更新操作的日志记录写入磁盘上的数据文件中,从而实现二次写的功能
  • 自适应哈希索引:当插入新行时,Innodb会根据行中的值计算出一个哈希值,然后将该哈希值插入到索引中,当查询时根据查询值计算出一个哈希值,然后搜索索引中的哈希值
  • 预读:Innodb预读是通过在查询时将查询结果的下一页数据预先读取到内存中,以便用户需要时可以立即提供给用户,从而提高查询效率的

MyIASM

不提供事务支持,不支持行级锁和外键

MEMORY

所有的数据在内存中,速度处理快,安全性不高

MyISAM与InnoDB区别

MyISAM InnoDB
存储结构 每张表三个文件:frm:表定义,MYD:数据文件,MYI:索引文件 一个或多个文件,表大只受操作系统文件大小限制,一般为2G
存储空间 可被压缩,存储空间小 会建立缓冲池用于高速缓冲数据和索引
文件格式 数据和索引分开存储,数据.MYD,索引.MYI 数据和索引集中存储,.idb
存储顺序 插入顺序保存 主键大小保存
外键 不支持 支持
事务 不支持 支持
锁支持 表级锁定 行级锁定,表级锁定
索引实现 B+树索引,堆表 B+树索引,索引组织表
哈希索引 不支持 支持
全文索引 支持 不支持

引擎选择

默认Innodb

MyISAM:以读写插入为主的应用程序

Innodb:更新删除操作频率较高,要保证数据的完整性,并发量高,需要支持事务

2.索引

一种数据结构,通常是使用B树及其B+树实现

索引类型

  • 主键索引

数据列不允许重复,不允许为null,一个表只能创建一个索引

  • 唯一索引

数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引

创建一个唯一索引:alter table [table_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值