MySQL索引优化分析:http://www.cnblogs.com/itdragon/p/8146439.html
MySQL 表锁和行锁机制:https://segmentfault.com/a/1190000012773157
mysql对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁,对select不会加锁,但是可以手动加锁。
排它锁:也称写锁,独占锁,当前写操作没有完成前,它会阻断其他写锁和读锁。
共享锁:不影响各个事务对数据的读操作,但是如果对数据进行修改会造成死锁,事务失败就会释放锁。
事务:
原子性、隔离性、一致性、持久性
脏读:事务A读取事务B未提交的修改的数据
不可重复读:事务A第一次读取数据初始值,事务B提交了修改的数据值,事务A第二次读取数据,数据不一致。(注重数据的修改删除)
幻读:事务A第二次读取事务B提交新增的数据,两次数据不一致。(注重数据的添加)
解决不可重复读和幻读
不可重复读锁住行数据行
幻读锁住表
悲观锁:依赖于数据库本身的锁机制,对一切操作加锁,对读操作加锁,别的事务就无法修改和删除,对修改删除操作加锁,其他事务就无法读取该数据。
乐观锁:基于版本记录机制实现,为数据加上版本标志version,每当数据别读取一次,将此标志一起读出,每跟新一次,该version加一,提交跟新时,将version与之前数据中的version进行比较,如果该version比之前的大,那么就更新,否则认为是过期数据。
https://blog.csdn.net/silyvin/article/details/77482920
mysql死锁问题分析:https://yq.aliyun.com/articles/5533
数据库隔离级别 及 其实现原理:
https://www.cnblogs.com/wajika/p/6680200.html
https://blog.csdn.net/mysteryhaohao/article/details/51669741
mysql 的可重复读的实现:读是使用mvccl来实现,写通过锁机制。
https://www.cnblogs.com/xiaoboluo768/p/5152384.html
共享锁与排他锁:https://www.cnblogs.com/boblogsbo/p/5602122.html