zoukankan      html  css  js  c++  java
  • MRR,BKA,ICP相关

    MRR

    Multi-Range Read,多范围读,5.6以上版本开始支持

    工作原理&优化效果:

        将查询到的辅助索引结果放在一个缓冲(read_rnd_buffer_size = 4M)中

        将buffer中的辅助索引根据主键(ROWID)进行排序

        再根据上述排序后的主键(ROWID)顺序(回表)读取数据

        减少磁盘随机访问,将随机访问转变成顺序访问,提高I/O读性能

        减少buffer pool中的页面被替换次数

        可批量处理对索引的查询操作

    优化器开关optimizer_switch控制是否启用MRR:

        默认未启用MRR

        mrr = on & mrr_cost_based = on

        mrr_cost_based设置为off时表示强制开启MRR

        mrr_cost_based设置为on,表示优化器会通过基于成本的算法来确定是否 需要开启MRR(也就是,不强制启用MRR)

        执行计划中现实 Using MRR

        5.6.35中有bug

    BKA

    Batched Key Access,批量索引访问,MySQL5.6开始支持

    同时用于表连接以及join buffer时的索引访问

    支持inner join、outer join、semi-join,以及nested-outer join

    JOIN表扫描时效率更高,提高JOIN效率 

    默认未启用,需要手动开启:

        optimizer_switch = "batched_key_access_on"

        前置条件:mrr=on,mrr_cost_based=off

        执行计划显示 Using join buffer (Batched Key Access) 

    ICP

    index condition pushdown,MySQL5.6以上支持

    主要优化效果:

        在以前,是把index key过滤后的全部记录(数据集较大)丢给server层,再进行index filter、table filter过滤

        有了ICP,就可以把index filter下推(pushdown)到引擎层进行过滤

        好处很明显,减少server层数据集,减少数据传输,提高处理效率

        支持range、ref、eq_ref、eq_or_null类型查询

        执行计划显示 Using index condition 意向 

     

     

    具体的执行计划看optimize_trace

  • 相关阅读:
    IDEA 修改JavaWeb的访问路径
    坦克大战--Java类型 ---- (1)音乐播放
    codeforces 620C
    算法笔记之KMP算法
    算法笔记数组
    26. Remove Duplicates from Sorted Array
    哈夫曼树的证明
    Complete Binary Search Tree
    Root of AVL Tree
    .net framework环境
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11542302.html
Copyright © 2011-2022 走看看