(MariaDB/MySQL)MyISAM存儲引擎讀、寫操作的優先級


MariaDB/MySQL中使用表級鎖的存儲引擎(例如MyISAM、Aria(MariaDB對MyISAM引擎的改進,前身是MyISAM))在讀(select)、寫操作(insert、delete、update、replace)上有優先級的概念。默認情況下,寫操作的優先級高於讀操作。注:不適用於InnoDB存儲引擎。

以MyISAM為例。當有進程正在寫MyISAM表的時候,又有新的讀操作、寫操作出現,則會先執行完所有的寫操作,等寫完后才會讀表。實際上並非總是先執行完所有寫操作,因為有系統變量max_write_lock_count控制最大寫鎖數量,當這些數量的寫操作完成后會轉為執行讀操作。

所以,INSERT、LOAD DATA INFILE、UPDATE、REPLACE、DELETE語句都有LOW_PRIORITY關鍵字,用來降低對MyISAM存儲引擎的寫操作優先級,使得MariaDB先執行完所有的讀操作后再執行寫操作。而SELECT語句有HIGH_PRIORITY關鍵字,用來提高讀操作的優先級。除了這兩個關鍵字,還可以設置系統變量low_priority_updates=on來降低寫操作優先級。

唯一需要注意的是,INSERT語句不僅有LOW_PRIORITY,也有HIGH_PRIORITY。當使用INSERT HIGH_PRIORITY語句時,表示禁用INSERT的並發插入行為。


免責聲明!

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



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