MySQL查询优化浅析--何登成.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL查询优化浅析--何登成

MySQL查询优化浅析 网易杭研-何登成 个人简介 • 姓名:何登成 • 工作: – 就职于网易杭州研究院,进行自主研发的TNT存储引擎的架构设计/研发工作 • 联系方式 – 邮箱:he.dengcheng@ – 微博:何_登成 – 主页:/ 何为查询优化? • 目标 – 给定一个SQL,查找SQL最优(局部最优)的执行路径,使 得用户能够更快的得到SQL执行的结果 • 指标 – 代价模型; – SQL 的每一种执行路径,均可计算一个对应的执行代价, 代价越小,执行效率越高;反之则反之; 大纲 • MySQL Optimizer流程 • MySQL Range Optimizer (分享重点) – Cost模型 – 统计信息 • MySQL Server层统计信息 • InnoDB层统计信息 • 动态收集统计信息 • 统计信息收集策略 – Range Query Examples • MySQL Join Optimizer • MySQL Optimizer Enhancement 总流程 MySQL Range Optimizer • Range Optimizer有哪些问题 – 全表扫描or 索引扫描选择? – 全表扫描的代价如何计算? – 聚簇索引Range查询代价如何计算? – 二级索引Range查询代价如何计算? – 索引覆盖扫描vs 索引非覆盖扫描? – 表级统计信息有哪些? – 统计信息在Range查询优化中何用? – 统计信息何时收集?收集算法? Range Query-代价模型 • 总代价模型 – COST = CPU Cost + IO Cost • CPU Cost – MySQL上层,处理返回记录所花开销 – CPU Cost = records / TIME_FOR_COMPARE = records / 5 – 每5条记录的处理时间,作为1 Cost • IO Cost – 存储引擎层面,读取页面的IO开销。 – 以下InnoDB为例 • 聚簇索引 • 二级索引 Range Query-聚簇索引 • 聚簇索引(IO Cost) – 全扫描 • IO Cost = table-stat_clustered_index_size • 聚簇索引页面总数 • 一个页面作为1 Cost – 范围扫描 • IO Cost = [(ranges + rows) / total_rows ] * 全扫描IO Cost • 聚簇索引范围扫描与返回的记录成比率。 Range Query-二级索引 • 二级索引(IO Cost) – 索引覆盖扫描 • 索引覆盖扫描,减少了返回聚簇索引的IO代价 – keys_per_block = (stats_block_size / 2) / (key_info[keynr].key_length + ref_length + 1) – stats_block_size / 2  索引页半满 • IO Cost – (records + keys_per_block - 1) / keys_per_block • 计算ra

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档