手動增加表鎖
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.儘可能低級別事務隔離