1、锁
1、全局锁
定义:全局锁就是对整个数据库实例加锁,保证数据库处于只读的状态,客户端断开主动释放锁
命令:Flush tables with read lock
适用的存储引擎:myisam
应用场景:全库备份
其他备份数据库的工具:mysqldump -single-transaction 通过事务保证一致性视图
2、表级锁
适用于不支持行锁的存储引擎,如myisam
2.1、lock
命令:lock table t1 read,t2 write
特点:锁住整个表,锁的粒度大
2.2、MDL(用于保证DDL操作与DML操作之间的一致性)
对一个表进行增删改查的时候,增加MDL读锁
对一个表结构进行更新的时候,增加MDL写锁
读锁之前不互斥(可以有多个线程增删改查),读写之间互斥
注:如果要给一个表增加字段,记得加超时时间,防止一直阻塞,导致数据库宕机
来源:oschina
链接:https://my.oschina.net/u/2610056/blog/3229748