mysql 锁

百般思念 提交于 2019-11-27 17:03:11

1、flush tables with read lock    全局锁 

  导致全库只读

  mysqldump-single-transaction (通过repeatable read 隔离级别启动事务)

  set  global read-only  一般用来判断主备库

2、表级锁

  lock table  unlock table  表锁

  MDL 元数据锁 (开始第一次查询是获取读锁,事务提交时才会释放MDL读锁)

  小表的DDL语句会导致全库崩溃

  select  * from table 获取MDL读锁

  alter table add index (a)  blocked 等待读锁释放获取MDL写锁

  后续所有的的操作都会被blocked

 

3、行级锁(引擎层实现)

  两阶段锁: 真正查询时使用,提交时释放。 尽量将可能同时操作的语句放到后面

  死锁,死锁检测

    ---innodb_lock_wati_time   50 默认

    ---innodb_deadlock_detect  on

  死锁发生的场景

    ----并发100线程    同时修改某条记录  会发现cpu100%,但实际更新操作缺很少(这是因为死锁检测耗费了大量cpu)

    ----解决方案 将单条记录拆成多条,降低死锁的可能性

 

 

  

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!