打卡(2020-05-07)
锁问题的由来
锁是计算机协调多个线程并发访问某一资源的机制,在数据库中
除了io,cpu的抢用以外,数据也是一种允许供许多个用户共享的资源。如何保证并发的一致性,有效性是数据必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
常见的三种锁,锁的特性如下
- 表级锁:开销小,加锁快;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。
- 页面锁:开销和加锁的时间介于表锁和行锁之间;会出现死锁,锁定粒度介于表锁和行锁之间,并发度一般。
- 行级锁:开销大,加锁慢;会出现死锁,锁的粒度最小,发生锁冲突的概率最低,并发度也最高。
查看表级锁争用的情况
// 可以检查 table_locks_waited 和 table_locks_immediate 状态分析系统上的表锁定情况
show status like 'table_%';
// 说明:如果table_locks_waited这个值比较高,说明有严重的表锁争用情况。