MySQL 锁相关

找工作有一段时间了,基本上是被虐的体无完肤,说明一个问题,自己以为对的学习方式是不对的,或者说不是很高效。

心血来潮,想开始写一些博客记录一下,学习的历程,也不知道能坚持多久。。。。


——————正文——————


MySQL 锁机制


1、MySIAM 存储引擎

支持的类型是表锁,表共享读锁(Table Read Lock),表独占写锁(Table Write Lock


详情见这个 https://www.cnblogs.com/leedaily/p/8378779.html  


乐观锁

一、在对数据库中进行操作时,认为肯定会有其他的操作会跟我们的修改产生冲突,所以每次操作都会上一个锁。


  • 共享锁(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE

  • 排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE


注意事项:

1、是根据索引来对行进行锁定的,如果用的是非索引字段则会将表锁住。

2、行/表 被锁定后,其他脚本可以正常读取记录,但是如果修改记录的话,则会被阻塞,直到排他锁被 commit

3、对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁(X)


乐观锁:认为操作不会有数据冲突,数据库是不支持的,需要我们用代码逻辑实现,一般是通过数据库增加一个version字段来进行控制

1、表中增加一个version字段,每次对数据进行更新后,进行值+1操作。然后通过之前查出来的version值,如果一致则完成,不一致则返回错误


https://www.cnblogs.com/laoyeye/p/8097684.html 参考这篇文章




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章