登录
首页 >  数据库 >  MySQL

mysql间隙锁实战,记录一次有意思的线上问题

来源:SegmentFault

时间:2023-01-20 12:42:04 104浏览 收藏

对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《mysql间隙锁实战,记录一次有意思的线上问题》,主要介绍了MySQL、数据库、数据库锁,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

数据库系统的锁

数据库系统使用锁是为了支持对共享资源进行访问,提供数据的完整性和一致性。

锁类型

InnoDB存储引擎中实现了如下两种标准的行级锁:

  • 共享锁(S Lock),允许事务读一行数据
  • 排他锁(X Lock),允许事务删除或者更新一条数据

如果一个事务t1已经获得了行r的共享锁,那么另外的事务t2也可以立即获得行r的共享锁。因为读取并没有改变r行的数据,成为这种情况为锁兼容(Lock Compatible)。但是若有其他事务t3想获得行r的排他锁,则必须等待t1,t2释放行r上共享锁,这种情况被称为锁不兼容。

如果想要查询数据的最新版本,可以使用当前读。当前读需要加锁,可以加读锁(select...lock in share mode),也可以加写锁(select...for update)。

本篇关于《mysql间隙锁实战,记录一次有意思的线上问题》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>