TokuMX寫操做沒法加鎖的問題

問題:數據庫

TokuMX刪除文檔時,符合刪除條件的文檔不少,刪除操做持續時間長,期間,服務寫操做OPS大幅降低,同時日誌log裏發現大量「 Lock not granted. Try restarting the transaction. 」。併發

在刪除操做執行完成後,積累的update一時間涌進來。一樣的刪除行爲,在MongoDB上運行正常。rest

 

緣由:日誌

MongoDB是數據庫鎖,即便remove持續時間長,週期性釋放鎖能夠保證其餘讀寫操做執行。它支持的併發訪問,服務端其實是串行處理。rem

TokuMX是文檔鎖,寫操做會把目標文檔所有加鎖,致使其餘client在操做該文檔時hang住。對於文檔鎖,沒有深刻了解,不肯定是鎖目標文檔,仍是鎖全部掃描過的文檔,後者帶來的影響更大。文檔

 

解決方法:io

避免批量刪除文檔,避免覆蓋很廣的寫操做,對於刪除操做,能夠一次查詢,逐行刪除。cli

 

參考資料:http://www.tokutek.com/2013/09/lock-diagnostics-and-index-usage-statistics-in-tokumx-v1-2-1/date

相關文章
相關標籤/搜索