MySQL里面的锁大致可以分为三类: 全局锁, 表锁, 行锁
全局锁
全局锁就是对整个数据库实例加锁;
加全局读锁命令: Flush tables with read lock (FTWRL) 当你需要让整个库处于只读状态的时候...备份过程中整个库完全处于只读状态
会有以下问题:
如果你在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆;
如果你在从库上备份,那么备份期间从库不能执行主库同步过来的 binlog,会导致主从延迟..., 因为你还会碰到接下来我们要介绍的表级锁.
mysql表级锁有两种: 一种是表锁, 一种是元数据锁....在mysql 5.5 中引入了MDL, 当对一个表做增伤爱差操作的时候, 加MDL 读锁; 当对一个表做结构变更擦欧总的时候, 加MDL写锁.
读锁之间不互斥, 可以有多个线程对一张表增删改查....首先我们要解决长事务, 事务不提交, 就会一直占着MDL锁,
在mysql 的information_schema 库的innodb_trx表中, 可以查到当前执行中的事务.