亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL InnoDB MRR優(yōu)化指南

 更新時(shí)間:2019年08月12日 11:30:42   作者:coderbee筆記  
這篇文章主要給大家介紹了關(guān)于MySQL InnoDB MRR優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

MRR 是 Multi-Range Read 的簡寫,目的是減少磁盤隨機(jī)訪問,將隨機(jī)訪問轉(zhuǎn)化為較為順序的訪問。適用于 range/ref/eq_ref 類型的查詢。

實(shí)現(xiàn)原理:

1、在二級(jí)索引查找后,根據(jù)得到的主鍵到聚簇索引找出需要的數(shù)據(jù)。

2、二級(jí)索引查找得到的主鍵的順序是不確定的,因?yàn)槎?jí)索引的順序與聚簇索引的順序不一定一致;

3、如果沒有 MRR,那么在聚簇索引查找時(shí)就可能出現(xiàn)亂序讀取數(shù)據(jù)頁,這對(duì)于機(jī)械硬盤是及其不友好的。

4、MRR 的優(yōu)化方式:

  • 將查找到的二級(jí)索引鍵值放在一個(gè)緩存中;
  • 將緩存中的鍵值按照 主鍵 進(jìn)行排序;
  • 根據(jù)排序后的主鍵去聚簇索引訪問實(shí)際的數(shù)據(jù)文件。

5、當(dāng)優(yōu)化器使用了 MRR 時(shí),執(zhí)行計(jì)劃的 Extra 列會(huì)出現(xiàn) “Using MRR” 。

6、如果查詢使用的二級(jí)索引的順序本身與結(jié)果集的順序一致,那么使用 MRR 后需要對(duì)得到的結(jié)果集進(jìn)行排序。

使用 MRR 還可以減少緩沖池中頁被替換的次數(shù),批量處理對(duì)鍵值的查詢操作。

可以使用命令 select @@optimizer_switch; 查看是否開啟了 MRR:

index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=off,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=on

mrr_cost_based=on 表示是否通過 cost based 的方式來選擇使用 MRR 。

set @@optimizer_switch='mrr=on/off'; 命令開啟或關(guān)閉 MRR 。

select @@read_rnd_buffer_size ; 參數(shù)用來控制鍵值的緩沖區(qū)大小,默認(rèn) 256K,當(dāng)大于該參數(shù)值時(shí),執(zhí)行器根據(jù)主鍵對(duì)已緩存的數(shù)據(jù)進(jìn)行排序,然后再通過主鍵取得行數(shù)據(jù)。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • MySQL8.0.21.0社區(qū)版安裝教程(圖文詳解)

    MySQL8.0.21.0社區(qū)版安裝教程(圖文詳解)

    這篇文章主要介紹了MySQL8.0.21.0社區(qū)版安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 解決MySQL server has gone away錯(cuò)誤的方案

    解決MySQL server has gone away錯(cuò)誤的方案

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL server has gone away錯(cuò)誤的解決辦法,有需要的朋友們可以參考下。
    2020-02-02
  • MySQL:reading initial communication packet問題解決方法

    MySQL:reading initial communication packet問題解決方法

    網(wǎng)站訪問出現(xiàn)如題錯(cuò)誤,經(jīng)過檢查my.cnf,發(fā)現(xiàn)innodb_buffer_pool_size = 2048M 設(shè)置過大,調(diào)整為innodb_buffer_pool_size = 1024M即可,網(wǎng)上也有該問題的其他解決方法,但都不能解決我的問題
    2012-07-07
  • MySQL去重該使用distinct還是group by?

    MySQL去重該使用distinct還是group by?

    這篇文章主要介紹了MySQL去重該使用distinct還是group by,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Mysql行與列的多種轉(zhuǎn)換(行轉(zhuǎn)列,列轉(zhuǎn)行,多列轉(zhuǎn)一行,一行轉(zhuǎn)多列)

    Mysql行與列的多種轉(zhuǎn)換(行轉(zhuǎn)列,列轉(zhuǎn)行,多列轉(zhuǎn)一行,一行轉(zhuǎn)多列)

    在MySQL中,行轉(zhuǎn)列和列轉(zhuǎn)行都是非常有用的操作,本文就來介紹一下Mysql行與列的多種轉(zhuǎn)換,主要包括行轉(zhuǎn)列,列轉(zhuǎn)行,多列轉(zhuǎn)一行,一行轉(zhuǎn)多列,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • mysql update語句的用法詳解

    mysql update語句的用法詳解

    本文詳細(xì)介紹了,mysql中update語句的用法,系統(tǒng)全面的學(xué)習(xí)下update更新語句的用法,有需要的朋友可以參考下
    2014-08-08
  • MySQL使用LOAD_FILE()函數(shù)方法總結(jié)

    MySQL使用LOAD_FILE()函數(shù)方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于MySQL使用LOAD_FILE()函數(shù)方法和相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • Mysql中二進(jìn)制日志操作方法說明

    Mysql中二進(jìn)制日志操作方法說明

    這篇文章主要介紹了Mysql中二進(jìn)制日志操作方法,二進(jìn)制日志中以“事件”的形式記錄了數(shù)據(jù)庫中數(shù)據(jù)的變化情況,對(duì)于MySQL數(shù)據(jù)庫的災(zāi)難恢復(fù)起著重要的作用
    2023-03-03
  • mysql 誤刪除ibdata1之后的恢復(fù)方法

    mysql 誤刪除ibdata1之后的恢復(fù)方法

    如果誤刪除了在線服務(wù)器中mysql innodb相關(guān)的數(shù)據(jù)文件ibdata1以及日志文件 ib_logfile*,應(yīng)該怎樣恢復(fù)呢
    2013-12-12
  • windows 64位下MySQL 8.0.15安裝教程圖文詳解

    windows 64位下MySQL 8.0.15安裝教程圖文詳解

    本文通過圖文并茂的形式給大家介紹了MySQL 8.0.15安裝教程(windows 64位),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04

最新評(píng)論