好文章

244 阅读2分钟

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