Mysql锁机制简单认识和实际验证

一、锁的概念

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

二、读锁(共享锁)和写锁(排它锁)

读锁是针对同一资源数据,多个读操作之间互不影响

写锁当一个写操作未完成之前,会阻断其他写锁和读锁

三、三锁

表锁(偏读)

特点:偏myisam存储引擎,开销小,加索快,无死锁,锁粒度大,锁发生冲突概率低,并发低。

行锁(偏写)

特点:偏innodb存储引擎,开销大,加索慢,有死锁,锁定粒度小,锁发生冲突概率最低,并发高。

支持事务,采用了行级锁。

页锁(介于行表锁之间)

四、手动增加表锁/行锁命令

Lock table 表名 read/write,表名2 read/write,其他;

五、查看表上加过的锁

Show open tables;Mysql锁机制简单认识和实际验证_第1张图片

六、解读锁和写锁命令

Unlock tables;

Mysql锁机制简单认识和实际验证_第2张图片

七、表锁的读锁问题案例

Mysql锁机制简单认识和实际验证_第3张图片

执行完unlock mylock;后,右边可以继续执行

Mysql锁机制简单认识和实际验证_第4张图片

八、表锁的写锁案例问题

Mysql锁机制简单认识和实际验证_第5张图片 Mysql锁机制简单认识和实际验证_第6张图片

九、表锁分析命令

Show status like ‘table%’;

分析参数1table_locks_immdediate:产生表级锁定次数,表示可以立即获取锁的查询次数,每次立即获取锁值+1

分析参数2tale_locks_waited:出现表级锁定争用而发生等待的次数(不能立即获取锁次数,每等待一次锁值+1),锁值越高说明表级锁争夺情况越严重

十、myisam读写锁调度是写优先,写锁后其他线程不能做任何操作,大量写会操作长时间的阻塞。

十一、查看当前数据库的事务隔离级别:show variables like ‘tx-isolation’;

Mysql锁机制简单认识和实际验证_第7张图片

十二、innodb自身采用了行级锁

多个线程或进程操作同一行会阻塞,不同行不阻塞,这就是冲突小

十三、行锁升级表锁情况,查询条件索引失效

Mysql锁机制简单认识和实际验证_第8张图片

十四、间隙锁的危害

Mysql锁机制简单认识和实际验证_第9张图片

你可能感兴趣的:(MySql)