MySQL锁

一.概述

锁是计算机协调多个进程或线程并发访问某一资源的机制。

锁冲突:

 

二.分类

1.数据范围分类

表级锁:

行级锁:

页面锁:

 

2.操作分类

共享锁(s):共享锁允许事务读取一行的数据。

互斥锁(x):互斥锁允许事务拥有更新一行或删一行的锁。

特定行上有了共享锁,就不行佳互斥锁了。

ps:SQL不仅能实现CURD,还是实现锁的管理。也就是说,实现锁也是事务.

 

3.使用分类

意向锁:InnoDB支持多颗粒锁,允许行锁和表锁共存。

意向锁是表级别的锁,无论哪个类型的锁,事务需要在表中行的后面。

意向锁分为两种:

(1).意向共享锁(IS),SELECT ... LOCK IN SHARE MODE。

(2).意向互斥锁(IX),SELECT ... FOR UPDATE 。

 

记录锁:

记录锁是索引记录上的锁。

例如:SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE;       //避免其他事务添加、删除、修改t.c1值为10的记录.

记录锁总是锁住索引记录,即便表没有索引定义。

 

 

间隙锁:

 

临键锁:

 

插入意向锁:

 

自增锁:

posted @ 2018-12-17 23:05  san3er  阅读(80)  评论(0)    收藏  举报