Mysql锁
Mysql有三种锁:表锁(偏读)、行锁(偏写)、页锁 1. 查看锁命令 1.1 查看锁 show open tables ; In_use为0表示没有被锁 1.2 分析表锁定 show status like '%table%' Table_locks_immediate:产生表级锁定的次数(锁的查询次数)。 Table_locks_waited:出现表级锁定争用而发生等待的次数,此值高说明存在严重表级锁争用情况。 2. 表锁 2.1 读锁(共享锁) Session 1 为Table增加 读锁 之后: Session 1 只能读锁定表,不能读其他表,写锁定表 报错 。 Session 2 可以读任何表,写锁定表 阻塞 。 2.2 写锁(独占锁) Session 1 为Table增加 写锁 之后: Session 1 可以做锁定表进行任何操作 Session 2 无法对锁定表进行任何操作 2.3 相关命令 加读锁 lock table 表名 1 read , 表名 2 read ; 加写锁 lock table 表名 1 read , 表名 2 read ; 解锁 unlock tables ; 3. 行锁 3.1 开启事务即开启了行锁 提交事务之前,其它会话查询到的都是未提交的数据,如果更新了同一行,会被阻塞,直到这个事务被提交。 set autocommit = 0 ;