表级锁用于控制多会话对表的并发访问,主要有共享读锁和独占写锁两种模式;共享读锁允许多个会话并发读但禁止写,独占写锁仅允许单会话读写并阻塞其他所有操作;其开销小但并发性低,适用于MyISAM等引擎,高并发场景下易成瓶颈,InnoDB通过行级锁提升并发性能。

MySQL中的表级锁主要用于控制多个会话对表的并发访问,尤其在使用MyISAM、MEMORY等存储引擎时较为常见。表级锁的开销小,加锁快,但并发性能相对较低。表级锁主要有以下两种模式:
1. 表共享读锁(Table Read Lock)
当一个会话对某张表加上共享读锁后,该会话和其他会话都可以读取这张表的数据,但任何会话都不能修改数据,直到所有读锁被释放。
例如:
LOCK TABLES t_read READ;
SELECT * FROM t_read; — 可以执行
UPDATE t_read SET col=1; — 阻塞或报错
多个会话可以同时持有同一张表的读锁,因此读操作是并发允许的。
2. 表独占写锁(Table Write Lock)
当一个会话对某张表加上写锁后,只有该会话可以读写这张表,其他会话既不能读也不能写,必须等待写锁释放。
AiPPT模板广场
AiPPT模板广场-PPT模板-word文档模板-excel表格模板
147 查看详情
例如:
LOCK TABLES t_write WRITE;
SELECT * FROM t_write; — 可以执行
UPDATE t_write SET col=1; — 可以执行
写锁是排他的,即使另一个会话只需要读取,也必须等待写锁释放。
基本上就这些。表级锁虽然简单高效,但在高并发写入场景下容易成为瓶颈,InnoDB引擎通过行级锁提供了更好的并发性能。
以上就是mysql表级锁的两种模式的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/582877.html
微信扫一扫
支付宝扫一扫