mrr優化的目的就是減少磁碟的隨機訪問,innodb由於聚集索引的特性,如果查詢使用輔助索引,並且用到表中非索引列,那麼需要回表讀取資料做後續處理,過於隨機的回表會伴隨大量的隨機io。
而mrr的優化並不是通過輔助索引讀取到資料就回表,而是通過範圍掃瞄將資料存入read_rnd_buffer_size,然後對其按照primary key(row id)排序,最後使用排序好的資料進行順序回表,因為innodb 中葉子節點資料是按照primary key(row id)進行排列的,這樣就轉換隨機io為順序io了,對於瓶頸為io的sql查詢語句將帶來極大的效能提公升。
bka(batched key access)結合mrr特性進行高效join操作。
1.將外迴圈表中相關列放入join buffer中。
2.批量的將key(索引鍵值)傳送到mrr介面。
3.mrr通過收到的key,根據其對應的primary key (row id )進行排序,然後再根據排序後的primary key(row id)順序的讀取聚集索引,得到需要的列資料。
4.返回結果集給客戶端。
mysql中的編碼 mysql中的編碼
一 mysql中的編碼 mysql show variables like collation mysql show variables like character set 預設是latin1編碼,會導致中文亂碼。修改庫的編碼 mysql alter database db name charac...
mysql中 變數 mysql中的變數
toc 變數 mysql本質是一種程式語言,需要很多變數來儲存資料。mysql中很多的屬性控制都是通過mysql中固有的變數來實現的。系統變數 系統內部定義的變數,系統變數針對所有使用者 mysql客戶端 有效。檢視系統所有變數 show variables like pattern mysql允許...
mysql中的函式名 MySQL中的函式
一 數學函式 數學函式主要用於處理數字,包括整型 浮點數等。abs x 返回x的絕對值 select abs 1 返回1 ceil x ceiling x 返回大於或等於x的最小整數 select ceil 1.5 返回2 floor x 返回小於或等於x的最大整數 select floor 1.5...