暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

郑保卫 - 索引优化策略及实战

数据和云 2017-01-04
233

 本文中将要介绍的索引战略方案是以尽可能少的索引来满足尽可能多的数据读取类型的索引构建方法。这个策略方案要求在构建索引时,尽可能多地搜集当前正在使用的未来将要出现的数据读取要求。





索引设计的步骤


1. 针对目标数据库的 SGA 进行搜集,主要的搜集信息有表的信息,索引信息,SQL 语句,绑定变了,SQL 的执行计划,以及表的列的统计信息等。

2. 由解析引擎进行解析,解析出读取路径(ACCESS PATH),针对解析出来的成果,根据相应的纬度,确定出优化对象表

3. 针对确定出来的优化对象,进行索引优化设计

4. 产出索引设计指南,SQL 优化指南,并在评审通过后应用到生产环境




读取路径(ACCESS PATH)是,就是 SQL 语句中就是谓词条件,基于表,会有不同的访问路径组合和分组,这些读取路径都是在 SQL 语句里面涉及到相关表的所有读取路径的组合,综合分析 SQL 中使用的条件语句和分组之后,进行索引设计。




对于搜集的 ASIS 的 index 和搜集的 AP 进行分析,是进行索引设计时首先需要进行的工作,通过对每张表里的所有种类的读取路径的组合进行分析,查看里面的所有的语句,现有的索引是否被执行计划用上以及是否合理,并调整为 ToBe-Index,对于能够应用原有索引的应尽量复用。


针对没有使用上索引的读取路径组合单独进行索引设计并根据结果构建 ToBe-Index。


对于没有被执行计划使用上的索引,理论上是应该删除,但是这些索引在删除时必须要确认没有 SQL 使用或者很少被使用到才可以删除,需进行评估后才能执行删除动作。




在索引设计的过程中,作为首先靠考虑的索引的第一列应该选取哪一个,应该是离散度好(值的种类多)和使用频率高的,在上面的例子中,CUST_NO,PRICE_STD,BNK_CD,BSE_CRD_NO 的离散度较好,使用较为频繁,适合作为索引的第一列,那么产生索引就有四种,如果第一列的过滤能力无法达到很好的效果,那么就需要考虑建立组合索引,那么经过组合别的列,最终产生的索引为:


CUST_NO

PRICE_STD+BNK_CD+APR_DT

BNK_CD+ARP_DT+SND

BSE_CRD_NO


这4个索引,所以这4个索引就能已经能够满足目前表上面的所有的读取路径的组合。




最终的产出物中应当包含表上的所有的读取路径,ToBe-Index 映射到读取路径的映射关系,表上的列的统计信息,包含列名,离散度(种类)等信息,以及 ASIS-Index 和 ToBe-Index 的详细信息(新增的索引,删除的索引,修改的索引,保留的索引)

如何加入云和恩墨大讲堂微信群

搜索盖国强(Eygle)微信号:eeygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。



云和恩墨
数据驱动,成就未来。整合业界顶尖的技术与合作伙伴资源,围绕数据及相关领域,提供解决方案和专业服务。
业务架构
电子渠道(网络销售)分析系统、数据治理
IT基础架构
分布式存储解决方案
数据架构
Oracle DB2 MySQL NoSQL
专项服务:架构/安全/容灾/优化/整合/升级/迁移
运维服务:运维服务  代维服务
人才培养:个人认证  企业内训
软件产品:工具软件(SQL 审核、监控、数据恢复)
应用架构
应用软件开发:数据建模SQL审核和优化

恩墨学院

恩墨学院是云和恩墨(北京)信息技术有限公司旗下的培训事业部,创业数年专注于数据库认证、技能培训,以专业的讲师塑造品牌,以专业的训练保证就业,目前已经发展成为国内数据库领域培训领导品牌。

文章转载自数据和云,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论