mysql的表锁和行锁,排他锁和共享锁。
2018-07-17 04:07:57来源:博客园 阅读 ()
1、表锁和行锁
表锁和行锁锁的粒度不一样,表锁锁住的是一整张表,行锁锁住的是表中的一行数据。
InnoDB使用的是行级锁,MyISAM使用的是表级锁。
注意:在InnoDB中,例如模糊查询select * from tb where name like 'lin%'的时候也会锁住一整张表。
2、共享锁和排他锁
共享锁又称读锁(S锁),一个事务获取了共享锁,其他事务可以获取共享锁,不能获取排他锁,其他事务可以进行读操作,不能进行写操作。
排他锁又称写锁(X锁),如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
对于insert、update、delete,InnoDB会自动给涉及的数据加排他锁(X);
对于一般的Select语句,InnoDB不会加任何锁,事务可以通过以下语句给显示加共享锁或排他锁。
共享锁:SELECT ... LOCK IN SHARE MODE;
排他锁:SELECT ... FOR UPDATE;
共享锁例子:
事务一:使用lock in share lock获取共享锁,开始事务,不提交也不回滚
事务二:对同一条记录进行修改,会产生阻塞,查询不会阻塞
事务三:对同一记录进行查询(加共享锁),不阻塞,共享锁允许其他事务也获取共享锁
排他锁例子:
事务一:select语句后跟for update获取排他锁,其他事务不能进行查询和修改的操作
事务二:对同一记录进行加锁查询会被阻塞
事务三:对该记录的加锁写操作会阻塞
参考网址:http://www.hollischuang.com/archives/923
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MySQL上机实习报告(一)
下一篇:探究MySQL MGR的读写分离
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash