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之ICP、MRR、BKAMySql
- MySql介紹MySql
- MySQL Undo Log和Redo Log介紹MySql
- MySQL DBA工作角色和職責介紹MySql
- MySQL MVCC介紹MySqlMVC
- mysql MVCC 介紹MySqlMVC
- MySQL索引介紹MySql索引
- MySQL MHA介紹MySql
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- 【Mysql】MySQL · 特性分析 · Index Condition Pushdown (ICP)MySqlIndex
- MySQL Utilities工具介紹和命令列總結MySql命令列
- MySQL樂觀鎖和悲觀鎖介紹MySql
- MySQL CHAR和VARCHAR資料型別介紹MySql資料型別
- LAMP架構(LAMP介紹,mysql/mariaDB介紹,Mysql安裝)LAMP架構MySql
- MySQL檢視介紹MySql
- MySQL 安裝介紹MySql
- MySQL Binlog 介紹MySql
- MySQL分支版本介紹MySql
- MySQL group replication介紹MySql
- 【MySQL】mydumper工具介紹MySql
- 【Mysql】index extensions介紹MySqlIndex
- MySQL分割槽介紹MySql
- MySQL SQL模式介紹MySql模式
- MySQL 5.5 mysqlimport介紹MySqlImport
- Amoeba for MySQL 基本介紹MySql
- 5.6新特性之NL,BNL,MRR和BKA
- MySQL垂直切分和水平切分概念和優缺點介紹MySql
- MySQL全面瓦解22:索引的介紹和原理分析MySql索引
- MySQL Galera Cluster的特性和不足之處介紹MySql
- MySQL 5.5 LOCK TABLES 和 UNLOCK TABLES 語句介紹MySql
- MySQL 8.0 目錄介紹MySql
- MySQL 官方工具utilities介紹MySql
- MySQL角色(role)功能介紹MySql
- MySQL觸發器介紹MySql觸發器
- MySQL 教程基礎介紹MySql
- MySql主從同步介紹MySql主從同步
- MySQL 5.7 NOT EXISTS用法介紹MySql
- MySQL 8.0 新增特性介紹MySql