行鎖和表鎖的區別


行鎖

1、支持的存儲引擎:Innodb;

2、InnoDB行鎖是通過給索引上的索引項加鎖來實現的,意味着:只有通過索引條件檢索數據,InnoDB才使用行級鎖,否則,InnoDB將使用表鎖!

3、適用場景:有大量按索引條件並發更新少量不同數據,同時又有並發查詢的應用

4、特點:開銷大,加鎖慢;會出現死鎖;鎖定粒度小,發生鎖沖突的概率低,並發度高

5、分析:show status like 'innodb_row_lock%';分析系統上行鎖的爭奪情況如果發現鎖爭用比較嚴重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比較高,還可以通過設置InnoDB Monitors來進一步觀察發生鎖沖突的表、數據行等,並分析鎖爭用的原因。

表鎖

1、支持的存儲引擎:Innodb、MYIsam

2、適用場景:以查詢為主,只有少量按索引條件更新數據的應用

3、特點:開銷小,加鎖快;不會出現死鎖;鎖定力度大,發生鎖沖突概率高,並發度最低

4、兩種模式:

​ • 表共享讀鎖

​ • 表獨占寫鎖

5、對兩張表顯示加鎖、解鎖

​ Lock tables orders read local, order_detail read local;

​ Select sum(total) from orders;

​ Select sum(subtotal) from order_detail;

​ Unlock tables;

6、MyISAM在執行查詢語句(SELECT)前,會自動給涉及的所有表加讀鎖,在執行更新操作(UPDATE、DELETE、INSERT等)前,會自動給涉及的表加寫鎖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM