mysql Multi-Range Read優化
Multi-Range Read優化(MRR)。這個優化的主要目的是盡量使用順序讀盤。
MRR優化的設計思路。此時,語句的執行流程變成了這樣:
根據索引a,定位到滿足條件的記錄,將id值放入read_rnd_buffer中;
將read_rnd_buffer中的id進行遞增排序;
排序后的id數組,依次到主鍵id索引中查記錄,并作為結果返回。
這里,read_rnd_buffer的大小是由read_rnd_buffer_size參數控制的。如果步驟1中,read_rnd_buffer放滿了,就會先執行完步驟2和3,然后清空read_rnd_buffer。之后繼續找索引a的下個記錄,并繼續循環。
另外需要說明的是,如果你想要穩定地使用MRR優化的話,需要設置set optimizer_switch="mrr_cost_based=off"。(官方文檔的說法,是現在的優化器策略,判斷消耗的時候,會更傾向于不使用MRR,把mrr_cost_based設置為off,就是固定使用MRR了。
MySQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。