您好,登錄后才能下訂單哦!
MRR 「Multi-Range Read」初步理解 對where條件拆分,減少通過索引查到過多無用的數據;查詢索引頁葉子節點的主鍵ID后不是直接讀取數據,而是把滿足條件的主鍵ID進行排序,然后在進行數據查找。
MySQL 5.6開始支持Multi-Range Read(MRR)優化。目的是為了減少磁盤的隨機訪問,并且將隨機訪問轉化為較為順序的數據訪問,這對IO-bound類型的SQL查詢語句可帶來性能極大的提升。MRR優化可適用于rangeref,eq_ref類型的查詢
MRR優化的好處:
a)MRR使數據訪問變得較為順序。在查詢輔助索引時,首先根據得到的查詢結果按照主鍵進行排序,并按照主鍵排序的順序進行書簽查找
b)減少緩沖池中頁被替換的次數
c)批量處理對鍵值的查詢操作
對于InnoDB和MyISAM存儲引擎的范圍查詢和JOIN查詢操作,MRR工作方式如下
a)將查詢得到的輔助索引鍵值存放在一個緩存中,這是緩存中的數據是根據輔助索引鍵值排序的
b)將緩存中的鍵值根據RowID進行排序
c)根據RowID的排序順序來訪問實際的數據文件
Index Condition Pushdown (ICP)是MySQL用索引去表里取數據的一種優化。如果禁用ICP,引擎層會穿過索引在基表中尋找數據行,然后返回給MySQL Server層,再去為這些數據行進行WHERE后的條件的過濾。ICP啟用,如果部分WHERE條件能使用索引中的字段,MySQL Server 會把這部分下推到引擎層。存儲引擎通過使用索引條目,然后推索引條件進行評估,使用這個索引把滿足的行從表中讀取出。ICP能減少引擎層訪問基表的次數和MySQL Server 訪問存儲引擎的次數。
ICP 「Index Condition Pushdown」初步理解在通過輔助索引查詢時進一步過濾where其他條件,前提是where條件的數據在該索引中可以獲取到。
備注個人理解,這兩種優化前提都依賴索引,ICP依賴的是聯合索引。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。