您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql中的全局鎖是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql中的全局鎖是什么”吧!
1、全局鎖就是對整個數據庫實例加鎖。
2、MySQL提供了一個加全局讀鎖的方法,命令是Flush tables with read lock。當整個數據庫需要只讀時,可以使用這個命令。
然后其他線程的以下句子會被堵塞:數據更新句子(數據增刪)、數據定義句子(包括建表、修改表結構等。)和更新事務的提交句子。
典型的全局鎖使用場景是做全庫邏輯備份。也就是說,整個庫的每個表都被select存儲成文本。
但讓整個庫只讀,可能會出現以下問題:
如果在主庫備份,備份期間不能更新,業務基本停止。
若從庫備份,則在備份期間無法執行主庫同步的binlog,則會導致主從延遲。
打開可重復讀隔離級別的事務可以獲得一致性視圖。
mysqldump是官方的邏輯備份工具。當mysqldump使用參數-single-transaction時,將在導數據之前啟動事務,以確保獲得一致性視圖。由于MVCC的支持,數據可以在這個過程中正常更新。single-transaction僅適用于所有表使用事務引擎的庫。
既然要全庫只讀,為什么不用setglobalreadonly=true?
在一些系統中,readonly的值將被用作其他邏輯,例如,它用于判斷一個庫是主庫還是備庫。因此,修改global變量的方法有更大的影響。
異常處理機制存在差異。如果在執行Flushtableswithreadlock命令后,由于客戶端異常斷開,MySQL會自動釋放整個鎖,整個庫會回到正常更新的狀態。在將整個庫設置為readonly,如果客戶端出現異常,數據庫將始終保持readonly狀態,這將導致整個庫長期處于不可寫狀態,風險更高。
感謝各位的閱讀,以上就是“mysql中的全局鎖是什么”的內容了,經過本文的學習后,相信大家對mysql中的全局鎖是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。