| 关键词: important nbsp 试衣间 同时 事务 一个 顾客 0px 数据 border |
MySQL数据库锁介绍 1. 锁的基本概念当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性。锁就是其中的一种机制。我们可以用商场的试衣间来做个比喻。商场里得每个试衣间都可供多个消费者使用,因此可能出现多个消费者同时试衣服需要使用试衣间。为了避免冲突,试衣间装了锁,某一个试衣服的人在试衣间里把锁锁住了,其他顾客就不能再从外面打开了,只能等待里面的顾客,试完衣服,从里面把锁打开,外面的人才能进去。 2. 锁的基本类型数据库上的操作可以归纳为两种:读和写。多个事务同时读取一个对象的时候,是不会有冲突的。同时读和写,或者同时写才会产生冲突。因此为了提高数据库的并发性能,通常会定义两种锁:共享锁和排它锁。2.1 共享锁(Shared Lock,也叫S锁)共享锁(S)表示对数据进行读操作。因此多个事务可以同时为一个对象加共享锁。(如果试衣间的门还没被锁上,顾客都能够同时进去参观)产生共享锁的sql:select * from ad_plan lock in share mode;2.2 排他锁(Exclusive Lock,也叫X锁)排他锁也叫写锁(X)。排他锁表示对数据进行写操作。如果一个事务对对象加了排他锁,其他事务就不能再给它加任何锁了。(某个顾客把试衣间从里面反锁了,其他顾客想要使用这个试衣间,就只有等待锁从里面给打开了)产生排他锁的sql: select * from ad_plan for update; 对于锁,通常会用一个矩阵来描述他们之间的冲突关系。 S X S + – X – – + 代表兼容, - 代表不兼容 时间\事务 Tx1: Tx2: 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除 |