1. 引擎 和 锁 : http://blog.csdn.net/xifeijian/article/details/20313977
2. 查询优化 : http://www.cnblogs.com/adforce/archive/2012/06/02/2532272.html
3. 执行计划 : https://www.cnblogs.com/xiaoboluo768/p/5400990.html
4. 间隙所:https://blog.csdn.net/spring_model/article/details/53992450
5. 聚簇索引 与 非聚簇索引:https://blog.csdn.net/weixin_42570248/article/details/90710371
6. B+树索引 : http://www.liuzk.com/410.html
1. mvcc 与 锁的关系
个人感觉mvcc是对锁机制的一种补充,对于rc 和 rr两种事务隔离级别来说 ,如果只使用锁机制的话会有如下操作
RC:更新的时候加锁,其他事务任何读都要等待
RR:读的时候加锁,其他事务只能读不能更新
2. mvcc
的实现主要是依靠快照读(select)、当前读(update等)实现。rc的快照读是在查询语句开启时生成一个快照视图,rr的快照是在事务开启时生成
3. mysql执行顺序
mysql执行sql的顺序从 From 开始,以下是执行的顺序流程
1、FROM table1 left join table2 on 将table1和table2中的数据产生笛卡尔积,生成Temp1
2、JOIN table2 所以先是确定表,再确定关联条件
3、ON table1.column = table2.columu 确定表的绑定条件 由Temp1产生中间表Temp2
4、WHERE 对中间表Temp2产生的结果进行过滤 产生中间表Temp3
5、GROUP BY 对中间表Temp3进行分组,产生中间表Temp4
6、HAVING 对分组后的记录进行聚合 产生中间表Temp5
7、SELECT 对中间表Temp5进行列筛选,产生中间表 Temp6
8、DISTINCT 对中间表 Temp6进行去重,产生中间表 Temp7
9、ORDER BY 对Temp7中的数据进行排序,产生中间表Temp8
10、LIMIT 对中间表Temp8进行分页,产生中间表Temp9
4. 事务隔离级别与锁的关系
本人认为事务的隔离级别是通过锁的机制实现的,事务的隔离级别是数据库开发商根据业务逻辑的实际需要定义的一组锁的使用策略。当我们将数据库的隔离级别定义为某一级别后如仍不能满足要求,我们可以自定义 sql 的锁来覆盖事务隔离级别默认的锁机制。
5. 聚簇索引与非聚簇索引
聚簇索引不是一种新的索引类型,而是一种存储方式,是存储数据的顺序与索引的顺序一直,并且一个表只能有一个聚簇索引。