手动增加表锁
lock table 表名字 read(write),表名字2 read(write),其他;
查看表上加过的锁
show open tables;
解锁
unlock tables
MyISAM在执行查询语句前,会自动给涉及的所有表加上读锁,在执行增删改前会给涉及的所有表加上写锁。
show STATUS like 'table%'
查看事务隔离级别
SHOW VARIABLES LIKE ‘tx_isolation’
自动提交
set autocommit=0或1;
字段b是varchar类型,现在索引失效了,因为查询时没有用引号,导致行锁变表锁!
间隙锁的危害:
a in(1,6)这个区间都被锁了,a=2在这个区间内,session2的插入阻塞了!
查看锁的争夺情况
SHOW STATUS LIKE 'innodb_row_lock%'
行锁的优化建议:
1.尽可能让所有的数据检索都是用索引,避免无索引导致行锁升级为表锁。
2.尽量缩小查询范围,避免间隙锁的范围。
3.尽量控制事务大小,缩减事务时间,减少锁定资源量
4.尽可能低级别事务隔离