MySQL MRR和ICP介紹
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依賴的是聯合索引。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2629899/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySql介紹MySql
- MySQL Undo Log和Redo Log介紹MySql
- MySQL Binlog 介紹MySql
- MySQL MVCC介紹MySqlMVC
- mysql MVCC 介紹MySqlMVC
- MySQL索引介紹MySql索引
- MySQL樂觀鎖和悲觀鎖介紹MySql
- MySQL group replication介紹MySql
- MySQL 安裝介紹MySql
- MySQL檢視介紹MySql
- MySQL全面瓦解22:索引的介紹和原理分析MySql索引
- MySQL 官方工具utilities介紹MySql
- MySQL 8.0 目錄介紹MySql
- MySQL 8.0 新增特性介紹MySql
- MySQL觸發器介紹MySql觸發器
- MySql主從同步介紹MySql主從同步
- MySQL角色(role)功能介紹MySql
- MySQL 教程基礎介紹MySql
- MySQL資料庫鎖介紹MySql資料庫
- MySQL 延遲從庫介紹MySql
- mysql中SQL的概念介紹MySql
- MySQL審計外掛介紹MySql
- MySQL Index Condition Pushdown(ICP)的使用限制MySqlIndex
- HTTP介紹和HTML簡介HTTPHTML
- MySQL change buffer介紹和相關引數調整建議MySql
- mysql中pager和其它命令的一些小技巧介紹MySql
- MySQL觸發器的使用和優缺點介紹ZGMHMySql觸發器
- PKI和CA 介紹
- Redis介紹和使用Redis
- Lombok介紹和配置Lombok
- The Graph介紹和使用
- MySQL:關於ICP特性的說明(未完)MySql
- 【MySQL】二、Innodb 恢復工具介紹MySql
- MySQL版本發展歷史介紹MySql
- MySQL儲存引擎入門介紹MySql儲存引擎
- MySQL連線控制外掛介紹MySql
- MySQL中undo log介紹及清理MySql
- 重新整理 mysql 基礎篇————— 介紹mysql[一]MySql