Mysql基础信息

说明:1.mysql8.0之后查询缓存已经删除,不再考虑
2.mysql5.5之后默认引擎为innodb,myisam基本不再使用
3.存储引擎:不同的数据文件在磁盘的不同组织形式
xx.frm:表结构数据(mysql8.0已取消)
xx.ibd:innodb, 表实际数据文件+数据索引文件,mysql8.0之后增加序列化字典信息(Serialized Dictionary Information,SDI),SDI被写在.ibd文件内部,它是数据字典包含的信息的一个冗余副本,作用类似于frm文件(表结构)
xx.MYD:myisam 表实际数据
xx.MYI :myisam 数据索引文件
在这里插入图片描述
局部性原理:mysql会根据局部性原理进行磁盘预读。
时间局部性:被访问过的数据,很可能被再次访问
空间局部性:数据与程序有聚集成群的倾向,我们希望将具备同一特性的数据放在同一空间,
磁盘预读:磁盘与内存进行数据交互时最小的逻辑单位称之为页,datapage,大小4kb 或8kb,与操作系统有关系,innodb默认16kb,大小可以修改,sql查看命令: show variables like ‘innodb_page_size’

索引:索引是存放在磁盘中的(防止断电导致内存消失),每次mysql启动会将索引分块加载到内存中。索引数据以K-V格式存储,key:索引字段的真实值。 value:整行数据(存储位置,地址,偏移量)

扩展信息
在这里插入图片描述
存储引擎常用类型
innodb:数据结构B+树,也支持自适应hash
myisam:数据结构B+树
memory:数据结构hash索引

hash索引问题:
1.需要好的hash算法保证散列足够均匀,否则1.存储空间浪费,2产生hash冲突(hash碰撞)
2.hash表无序,在范围查询时需要逐个遍历,效率低
3.hash表不适于分块读取,所有数据放在内存中需要占用大量内存空间

回表(二次查询):进行索引查询时,首先通过索引定位到对应页,然后再根据行的物理地址找到所需的数据行
发生情况:

  1. 索引不包含所有需要查询的字段
    当查询语句中需要返回的列不在索引列上时,即使通过索引定位了相关行,仍然需要回表获取其他列的值。
  2. 使用了非聚簇索引
    非聚簇索引(Secondary Index)只包含了索引列的副本以及指向对应主键的引用,查询需要通过回表才能获取完整的行数据。
  3. 使用了覆盖索引但超过了最大索引长度
    在MySQL的InnoDB存储引擎中,每个索引项的最大长度是767字节,如果查询需要返回的字段长度超过了该限制,同样会触发回表操作。

回表操作主要发生在读取操作(SELECT)中,写入操作(INSERT、UPDATE、DELETE)一般不会触发回表

索引覆盖:
查询的字段都在某个索引上,并且没有超过最大索引长度限制,MySQL可以直接从索引中获取所需数据,而无需回表。
最左匹配:
生效条件:多列组成复合索引时,最左边的、也就是第一个字段进行排序,在第一个字段排序的基础上,再对联合索引中后面的第二个字段进行排序,依此类推。(不用担心字段顺序,mysql执行器会自动优化查询顺序)
失效条件:当全表字段都建立索引(useing index)时,where 条件会全部走索引,此时最左匹配原则失效。

索引失效情况:
1.当查询的字段从左开始,索引字段会匹配最左侧字段,直到匹配失败则不再走当前索引,如AB字段,则均会走索引;AC字段,则A字段会走索引;BC字段,则均不会走索引;单独的A、B、C字段查询,因为只有A字段匹配上了组合索引,会走索引,B、C字段查询均不会走索引。
2.范围查询(>、<、between、like %)就会停止匹配。
3.In语句数据太多时,也会有可能不走索引
4.在查询条件中对索引列使用函数
5.在查询条件中对索引列进行表达式计算
6.在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值