一 mysql中的锁
1 乐观锁 悲观锁
2 表级锁 页级锁 行锁
3 读锁(S锁) 写锁(X锁)
4 间隙锁 临健锁
二 mysql设置session的事务隔离级别:
读未提交:set tx_isolation='read-uncommitted';
读已提交: set tx_isolation='read-committed';
可重复读:set tx_isolation='repeatable-read';
串行化: set tx_isolation='serializable';
三 锁的分析
通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况
show status like 'innodb_row_lock%';
Innodb_row_lock_current_waits: 当前正在等待锁定的数量
Innodb_row_lock_time: 从系统启动到现在锁定总时间长度
Innodb_row_lock_time_avg: 每次等待所花平均时间
Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花时间
Innodb_row_lock_waits: 系统启动后到现在总共等待的次数
-- 查看事务 select * from INFORMATION_SCHEMA.INNODB_TRX;
-- 查看锁 select * from INFORMATION_SCHEMA.INNODB_LOCKS;
-- 查看锁等待 select * from INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 释放锁,trx_mysql_thread_id可以从INNODB_TRX表里查看到
kill trx_mysql_thread_id
-- 查看锁等待详细信息 show engine innodb status\G;
参考资料:
https://blog.youkuaiyun.com/cy973071263/article/details/104490345
https://blog.youkuaiyun.com/cy973071263/article/details/105188519
https://blog.youkuaiyun.com/yangshangwei/article/details/107717345