建设局网站投诉,php网站开发学什么,qq网页版链接,网站域名能更该吗转载自 MySQL中的共享锁与排他锁 在MySQL中的行级锁,表级锁,页级锁中介绍过#xff0c;行级锁是Mysql中锁定粒度最细的一种锁#xff0c;行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种#xff0c;本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项…转载自 MySQL中的共享锁与排他锁 在MySQL中的行级锁,表级锁,页级锁中介绍过行级锁是Mysql中锁定粒度最细的一种锁行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。
共享锁(Share Lock)
共享锁又称读锁是读取操作创建的锁。其他用户可以并发读取数据但任何事务都不能对数据进行修改获取数据上的排他锁直到已释放所有共享锁。
如果事务T对数据A加上共享锁后则其他事务只能对A再加共享锁不能加排他锁。获准共享锁的事务只能读数据不能修改数据。
用法
SELECT ... LOCK IN SHARE MODE;
在查询语句后面增加LOCK IN SHARE MODEMysql会对查询结果中的每行都加共享锁当没有其他线程对查询结果集中的任何一行使用排他锁时可以成功申请共享锁否则会被阻塞。其他线程也可以读取使用了共享锁的表而且这些线程读取的是同一个版本的数据。
排他锁eXclusive Lock
共享锁又称写锁如果事务T对数据A加上排他锁后则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据又能修改数据。
用法
SELECT ... FOR UPDATE;
在查询语句后面增加FOR UPDATEMysql会对查询结果中的每行都加排他锁当没有其他线程对查询结果集中的任何一行使用排他锁时可以成功申请排他锁否则会被阻塞。
意向锁
InnoDB还有两个表锁
意向共享锁IS表示事务准备给数据行加入共享锁也就是说一个数据行加共享锁前必须先取得该表的IS锁
意向排他锁IX类似上面表示事务准备给数据行加入排他锁说明事务在一个数据行加排他锁前必须先取得该表的IX锁。
意向锁是InnoDB自动加的不需要用户干预。
对于insert、update、deleteInnoDB会自动给涉及的数据加排他锁X对于一般的Select语句InnoDB不会加任何锁事务可以通过以下语句给显示加共享锁或排他锁。
共享锁SELECT ... LOCK IN SHARE MODE;
排他锁SELECT ... FOR UPDATE;