这是Mysql备核心知识篇,涉及知识包括,Mysql基础知识 ,sql优化,幻读,脏读,主从复制等,包含了多数的Mysql核心知识点,可用于八股文复习宝典,也可用于加深知识,建议大家以闯关的模式进行阅读,然后根据内容查漏补缺,欢迎提问相互学习交流。
之前已经完成了
后续还将更新:
Mysql核心知识篇概览 Mysql事务的四大特性 脏读、不可重复读、幻读 常见的隔离级别由低到高有哪几种 Mysql常见的存储引擎 Mysql的存储引擎InnoDB和MyISAM区别和选择问题 普通索引和唯一索引的区别 创建索引的时候主要考虑啥,使用索引的优缺点有哪些,使用应该注意些什么 select、where、from、group by、having、order by的执行顺序 数据库的时候相似类型的字段区分 千万级Mysql数据表分页查询优化思路 线上的数据库,你会做哪些监控 Mysql常见日志 数据库主从异步复制原理及流程图 数据库主从复制的好处 主从同步延迟问题,怎么解决 什么场景下会出现主从数据不⼀致 mysql间隙锁
Mysql事务的四大特性
脏读、不可重复读、幻读
常见的隔离级别由低到高有哪几种
事务的隔离级别越高,事务越安全,但是并发能力越差。
Mysql常见的存储引擎
常见的有多类,InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE、CSV等 ⼀般比较常用的有InnoDB、MyISAM MySQL 5.5以上的版本默认是InnoDB,5.5之前默认存储引擎是MyISAM
Mysql的存储引擎InnoDB和MyISAM区别和选择问题 可参考这篇博文,点击即可查看
普通索引和唯一索引的区别 可参考这篇博文,点击即可查看
创建索引的时候主要考虑啥,使用索引的优缺点有哪些,使用应该注意些什么
考虑点:结合实际的业务场景,在哪些字段上创建索引,创建什么类型的索引 索引好处: 快速定位到表的位置,减少服务器扫描的数据 有些索引存储了实际的值,特定情况下只要使用索引就能完成查询 索引缺点: 索引会浪费磁盘空间,不要创建非必要的索引 插⼊、更新、删除需要维护索引,带来额外的开销 索引过多,修改表的时候重构索引性能差
索引优化实践
尽量使用数据量少的索引,索引值过长查询速度会受到影响 选择合适的索引列顺序 内容变动少,且查询频繁,可以建立多几个索引 内容变动频繁,谨慎创建索引 根据业务创建适合的索引类型,比如某个字段常用来做查询条件,则为这个字段建立索引提高查询速度 组合索引选择业务查询最相关的字段
我对SQL优化的理解
** select、where、from、group by、having、order by的执行顺序** 重点知道[重点]的三个
数据库的时候相似类型的字段区分
千万级Mysql数据表分页查询优化思路
线上的数据库,你会做哪些监控
业务性能
Mysql常见日志
数据库主从异步复制原理及流程图 流程图如下:

流程概述:
数据库主从复制的好处 容灾使用,用于故障切换 业务需要,进行读写分离减少主库压⼒
主从同步延迟问题,怎么解决
保证性能第⼀情况下,不能百分百解决主从同步延迟问题,只能增加缓解措施。 现象:主从同步,大数据量场景下,会发现写入主库的数据,在从库没找到。 原因:
解决办法:
什么场景下会出现主从数据不⼀致
主从⼀致性校验,怎么做? Mysql主从复制是基于binlog复制,难免出现复制数据不⼀致的风险,引起⽤户数据访问前后不⼀致的风险 所以要定期开展主从复制数据⼀致性的校验并修复,避免这些问题
解决方案之⼀,使用Percona公司下的⼯具 pt-table-checksum⼯具进⾏⼀致性校验 原理: 主库利用表中的索引,将表的数据切割成⼀个个chunk(块),然后进行计算得到checksum值。 从库也执相应的操作,并在从库上计算相同数据块的checksum,然后对⽐主从中各个表的checksum是否⼀致并存储到数据库,最后通过存储校验结果的表就可以判断出哪些表的数据不⼀致
pt-table-sync(在从库执行)⼯具 进行修复不⼀致数据,可以修复主从结构数据的不⼀致,也可以修复非 主从结构数据表的数据不⼀致 原理:在主库上执行数据的更改,再同步到从库上,不会直接更改成从的数据。在主库上执行更改是基于主库现在的数据,也不会更改主库上的数据,可以同步某些表或整个库的数据,但它不同步表结构、索引,只同步不⼀致的数据
注意: 默认主库要检查的表在从库都存在,并且同主库表有相同的表结构 如果表中没有索引,pt-table-checksum将没法处理,⼀般要求最基本都要有主键索引 pt-table-sync⼯具会修改数据,使用前最好备份下数据,防止误操作
拓展 pt-table-checksum怎么保证某个chunk的时候checksum数据⼀致性? 当pt⼯具在计算主库上某chunk的checksum时,主库可能在更新且从库可能复制延迟,那该怎么保证主库与从库计算的是”同⼀份”数据,答案把要checksum的⾏加上for update锁并计算,这保证了主库的某个chunk内部数据的⼀致性
mysql间隙锁