Mysql面试总结

Mysql笔记@TOC

总结一些关于面试中涉及到的MySQL的知识点

最近年底在找工作,总结了一些mysql常会问到的知识点和原理,总结一下以便于今后在工作求职中提供参考

Mysql常用的三种存储引擎

  1. Innodb
    Innodb是Mysql事务性数据库引擎,在日常工作中应用比较频繁,事务安全,支持回滚;不支持全文搜索,需要占用更大的空间维护数据与索引。
  2. MyIsam
    MyLsam不支持事务,特点是访问速度快,对事务完整性没有要求的情况下可使用。
  3. Merge
    Merge本身不存储数据,通过定义一组数据类型完全相同的Mylsqm表,来进行数据的操作。对Merge表的操作实际上是对多个MyIsam表的小组进行操作,常用于分表查询。

Innodb

Innodb的特点是是并发高,读取快;本身提供了细粒度行锁,较其他引擎,Innodb对并发访问处理的能力更强;采用B+树存储索引,减少了频繁的IO访问量,使索引的查找更快。

一. Innodb常用的锁(当前默认事务隔离级别为可重复度):

有如下一张表info
|id|name |sex|
|1 |张三 |男 |
|2 |李四 |男 |
|4 |王五 |男 |
|6 |赵六 |男 |
  1. 记录锁
    select * from info where id = 1 for update;
    当执行完这条查询之后,mysql会锁住id=1的这一行数据,直到这条事务结束之前,其他事务无法在对id=1这条数据进行修改,删除操作。
  2. 间隙锁
    select * from info where id between 4 and 7;
    执行完这条操作,mysql会锁住id在4-10之间的所有所有数据,临间锁的目的是防止当查询id在4-7操作执行的过程中,其他事务执行了一条id=7和id=5的插入操作,导致查询出来的数据只包含id=4和6的两条数据,而数据库中却存在着id=7和id=5的幻影数据。其主要目的就是防止不可重复度的情况发生,如果数据库事务隔离级别下降为读提交,那么间隙锁会自动失效。
  3. 临间锁
    临间锁是记录锁与间隙锁的结合技能锁住指定id的行,又能锁住行区间的数据,方知幻读情况产生。
    PK上潜在的临键锁为:
    (-infinity, 1]
    (2, 4]
    (4, 6]
    (6, +infinity]

mysql Innodb引擎还有其他4种锁,自增锁(锁表),共享锁,排他锁,意向锁,后续会进行更新

二. Innodb的索引:
Innodb的索引分为两类,聚合索引和辅助索引

  1. 聚合索引
    每一个主键上的索引即是一个聚合索引,若没有主键Innodb会选取第一个非空且唯一的字段建立聚合索引。聚合索引以B+树的结构进行存储,每一个叶子结点上包含着索引值与该条数据的行记录数据。在每次执行查询时,mysql并不能根据索引查询到行数据
  2. 辅助索引
    在一个表中可以存在多个辅助索引,其存储结构与聚合索引相同,均是B+树,不同之处是在于,辅助索引的叶子结点上包含的是加索引字段的值与一个标签,这个标签记录着改行记录聚合索引的key,索引根据辅助索引查询一行全量数据时,其实是进行了两次索引查询,第一次查询辅助索引,获得集合索引的值,之后根据这个值去集合索引进行查询,查找到叶子结点上的数据,并返回。
  3. 联合索引
    联合索引是根据多条索引进行查询,遵循最左前缀规则。对where,order by,group by 都生效
  4. 覆盖索引
    指从辅助索引中就能获取到需要的记录,而不需要查找聚簇索引中的记录。使用覆盖索引的一个好处是因为辅助索引不包括一条记录的整行信息,所以数据量较聚集索引要少,可以减少大量io操作。

三. Innodb支持的索引结构:
B树索引:特点是树高一般设置为2-4,所以每次进行索引查询的次数不超过4次,结合当下硬件访问磁盘的时间约为0.01秒,所以一次查询会不超过0.04秒。
哈希索引:无法人为干涉,innodb自适应。
集群索引

MyIsam

支持全文索引

全文索引具体操作
https://blog.csdn.net/qq_38377190/article/details/80873621

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值