对于锁需要重点掌握以下:
1. 锁分类
● 表锁
● 行锁
● 对象锁(meta-table锁),在table cache层实现
● 页锁
● 排他锁(互斥锁、X锁)
● 共享锁(S锁)
2.锁的使用注意事项
● innodb引擎是行级锁,适用于高并发场景的后台系统
● myisam引擎采用的是表级锁,适用于前端web系统
● 执行delete\update时默认会加互斥锁
● innodb, 如果delete \update在where条件后的字段没有加索引,会造成锁表,严重并发性能
● 修改字段、删除主键、删除主键字段时会造成meta-table锁
设置锁等待超时时间: innodb_lock_wait_timeout=500 (单位为s)
锁常用的命令:
● 查看表锁争用情况
show status like 'table%'
value值越高,锁争用情况越严重。
● 查看锁表的状态
show processlist;
对应的status值能看出来是否有锁表。
1. 锁分类
● 表锁
● 行锁
● 对象锁(meta-table锁),在table cache层实现
● 页锁
● 排他锁(互斥锁、X锁)
● 共享锁(S锁)
2.锁的使用注意事项
● innodb引擎是行级锁,适用于高并发场景的后台系统
● myisam引擎采用的是表级锁,适用于前端web系统
● 执行delete\update时默认会加互斥锁
● innodb, 如果delete \update在where条件后的字段没有加索引,会造成锁表,严重并发性能
● 修改字段、删除主键、删除主键字段时会造成meta-table锁
设置锁等待超时时间: innodb_lock_wait_timeout=500 (单位为s)
锁常用的命令:
● 查看表锁争用情况
show status like 'table%'
value值越高,锁争用情况越严重。
● 查看锁表的状态
show processlist;
对应的status值能看出来是否有锁表。