系统整容纪:用知识来“武装“自己~认识MySQL的锁与事务
💡
原文中文,约19700字,阅读约需47分钟。
📝
内容提要
本文介绍了MySQL锁和事务的基本知识,并解决了一个关于事务中select语句的问题。通过实际操作验证,InnoDB引擎和可重复读隔离级别下的普通select语句不带锁。问题最终发现在spring事务超时设置上,成功解决了问题。
🎯
关键要点
- 本文介绍了MySQL锁和事务的基本知识。
- 通过实际操作验证,InnoDB引擎和可重复读隔离级别下的普通select语句不带锁。
- 问题最终发现是在spring事务超时设置上,成功解决了问题。
- 锁是一种保护临界资源的机制,MySQL中有共享锁和排他锁。
- 行锁是锁定数据库中的单独记录,间隙锁用于解决幻读问题。
- 临键锁结合了行锁和间隙锁,防止幻读的出现。
- 表锁用于控制多个并发事务对数据库表的访问。
- 意向锁用于表明事务在某一数据行上请求的锁定类型。
- 死锁是多个事务因争夺资源而造成的相互等待现象。
- MySQL的事务具有原子性、一致性、隔离性和持久性(ACID特性)。
- MySQL支持四种事务隔离级别:读未提交、读已提交、可重复读和串行化。
- 多版本并发控制(MVCC)提高了数据库的并发性能。
- 自增主键锁用于保护自增主键的唯一性和连续性。
- INSERT和DELETE语句的锁定流程涉及意向锁、自增锁和行锁等。
- 最终问题的根因在于spring事务的超时设置。
➡️