位置: 编程技术 - 正文

MySQL Index Condition Pushdown(ICP)性能优化方法实例

编辑:rootadmin

推荐整理分享MySQL Index Condition Pushdown(ICP)性能优化方法实例,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

一 概念介绍

Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。

a 当关闭ICP时,index 仅仅是data access 的一种访问方式,存储引擎通过索引回表获取的数据会传递到MySQL Server 层进行where条件过滤。

b 当打开ICP时,如果部分where条件能使用索引中的字段,MySQL Server 会把这部分下推到引擎层,可以利用index过滤的where条件在存储引擎层进行数据过滤,而非将所有通过index access的结果传递到MySQL server层进行where过滤.

优化效果:ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数,减少io次数,提高查询语句性能。

二 原理

Index Condition Pushdown is not used:

1 Get the next row, first by reading the index tuple, and then by using the index tuple to locate and read the full table row. 2 Test the part of the WHERE condition that applies to this table. Accept or reject the row based on the test result.Index Condition Pushdown is used 1 Get the next row s index tuple (but not the full table row). 2 Test the part of the WHERE condition that applies to this table and can be checked using only index columns. If the condition is not satisfied, proceed to the index tuple for the next row. 3 If the condition is satisfied, use the index tuple to locate and read the full table row. 4 est the remaining part of the WHERE condition that applies to this table. Accept or reject the row based on the test result.

三 实践案例

a 环境准备 数据库版本 5.6. 关闭缓存 测试数据下载地址 b 当开启ICP时

此时情况下根据MySQL的最左前缀原则, first_name 可以使用索引,last_name采用了like 模糊查询,不能使用索引。 c 关闭ICP

MySQL Index Condition Pushdown(ICP)性能优化方法实例

当开启ICP时 查询在sending data环节时间消耗是 0.s

当关闭ICP时 查询在sending data环节时间消耗是 0.s

从上面的profile 可以看出ICP 开启时整个sql 执行时间是未开启的2/3,sending data 环节的时间消耗前者仅是后者的1/4。ICP 开启时的执行计划 含有 Using index condition 标示 ,表示优化器使用了ICP对数据访问进行优化。ICP 关闭时的执行计划显示use where.

案例分析

以上面的查询为例关闭ICP 时,存储引擎通前缀index first_name 访问表中条first_name 为Anneke的数据,并在MySQL server层根据last_name like '%sig' 进行过滤开启ICP 时,last_name 的like '%sig'条件可以通过索引字段last_name 进行过滤,在存储引擎内部通过与where条件的对比,直接过滤掉不符合条件的数据。该过程不回表,只访问符合条件的1条记录并返回给MySQL Server ,有效的减少了io访问和各层之间的交互。

ICP 关闭时 ,仅仅使用索引作为访问数据的方式。

ICP 开启时 ,MySQL将在存储引擎层 利用索引过滤数据,减少不必要的回表,注意 虚线的using where 表示如果where条件中含有没有被索引的字段,则还是要经过MySQL Server 层过滤。

四 ICP的使用限制

1 当sql需要全表访问时,ICP的优化策略可用于range, ref, eq_ref, ref_or_null 类型的访问数据方法 。2 支持InnoDB和MyISAM表。3 ICP只能用于二级索引,不能用于主索引。4 并非全部where条件都可以用ICP筛选。 如果where条件的字段不在索引列中,还是要读取整表的记录到server端做where过滤。5 ICP的加速效果取决于在存储引擎内通过ICP筛选掉的数据的比例。6 5.6 版本的不支持分表的ICP 功能,5.7 版本的开始支持。7 当sql 使用覆盖索引时,不支持ICP 优化方法。

MySQL order by性能优化方法实例 前言工作过程中,各种业务需求在访问数据库的时候要求有orderby排序。有时候不必要的或者不合理的排序操作很可能导致数据库系统崩溃。如何处理好ord

MySQL 5.7增强版Semisync Replication性能优化 一前言前文介绍了5.5/5.6版本的MySQLsemisync基础原理和配置,随着MySQL5.7的发布,新版本的MySQL修复了semisync的一些bug并且增强了功能。支持发送binlog和接受

MySQL Semisynchronous Replication介绍 前言MySQL5.5版本之前默认的复制是异步(Asynchronous)模式的,MySQL5.5以plugins的方式提供了SemisynchronousReplication模式。在介绍semisync之前,我们先了解:半同步Asyn

标签: MySQL Index Condition Pushdown(ICP)性能优化方法实例

本文链接地址:https://www.jiuchutong.com/biancheng/347685.html 转载请保留说明!

上一篇:MySQL slave_net_timeout参数解决的一个集群问题案例

下一篇:MySQL order by性能优化方法实例(mysql order by 性能)

  • 医疗机构销售药品需要销售记录吗
  • 小规模纳税人要交增值税吗
  • 预缴税款计算公式
  • 代收代缴消费税会计分录
  • 公立医院事业单位录用是编制吗
  • 办公室水电费计算公式
  • 电子发票限额多了怎么办
  • 会计信息采集审核需要多久
  • 个人出口货物到国外
  • 小企业会计准则和企业会计准则的区别
  • 资产损失企业所得税扣除
  • 同一控制下的企业合并的会计核算方法
  • 房地产开发企业预收款预缴增值税
  • 存在商业折扣的情况下,应收账款按什么金额入账?
  • 所得税汇算清缴时间期限
  • 其他资本公积属于
  • 年化收益率和年利率的区别的例子
  • 长期股权投资的交易费用计入哪里
  • 工程的进项税怎么处理
  • 个人去税务局开劳务发票要交多少税
  • 不需要缴纳增值税的有
  • 零售环节包括哪些
  • 产品检测费用计入什么科目
  • 是否所有电池产品都需在进口环节缴纳消费税?
  • 手机home键是什么意思图片
  • 发放应付职工薪酬的账务处理
  • elementui能做什么
  • 业务招待费应计入期间费用的哪项费用
  • 废品损失科目的期末余额在借方表示什么?
  • 超期未认证的发票怎么处理
  • zend framework手册
  • PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
  • 单位购买电水壶会计入账
  • 计提工资后面附什么
  • 代开专票的个税减免吗?
  • 固定资产盘盈属于其他业务收入吗
  • 电商的优惠券怎么做账
  • 单位安装摄像头合法吗
  • 小规模纳税人的认定标准是什么
  • 评估增值净利润调减
  • 发票复核人一定要填吗
  • 农村信用社可计算利息吗
  • 清算期间研发费怎么算
  • 建设银行e信通介绍
  • 提取盈余公积金
  • 递延所得税负债会计分录
  • 税控盘全额抵减如何填写申报表
  • 确认代销手续费怎么做账
  • 微信提现手续费多少?
  • 固定资产安装费计入入账价值吗
  • 投资利润率怎么看投资好还是不好
  • 如果对装修费用有异议怎么办
  • 季度末需要结转本年利润吗
  • 收取履约保证金的作用
  • 红字发票是怎么开的
  • 教育类退费
  • 餐饮行业的原材料怎么做账
  • 企业和债权人有什么利益冲突
  • 简单介绍清明上河图
  • mysql连接时间长怎么优化
  • mysql join 慢
  • bios怎么恢复出厂设置有什么后果?
  • 电脑win7win8win10操作系
  • 文件历史版本功能
  • 新百伦588
  • ubuntu的快捷键
  • centos怎么查看文件
  • xp内置语音输入没反应
  • win8切换管理员账户
  • 用户访问控制手段
  • 游戏开发之二维码怎么弄
  • python num怎么用
  • perl格式化输出 %s
  • opengl怎么学
  • JavaScript splice()方法详解
  • ajax+node+request爬取网络图片的实例(宅男福利)
  • 贵阳市税务局投诉电话号码
  • 国家税务总局令16号公告
  • 营业执照网上申报入口官网
  • 河北地税局电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设