优化数据访问_chuanzhi

优化数据访问_chuanzhi

ID:37555549

大小:507.85 KB

页数:53页

时间:2019-05-25

优化数据访问_chuanzhi_第1页
优化数据访问_chuanzhi_第2页
优化数据访问_chuanzhi_第3页
优化数据访问_chuanzhi_第4页
优化数据访问_chuanzhi_第5页
资源描述:

《优化数据访问_chuanzhi》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、优化数据访问概要•本章主要介绍数据库引擎如何访问数据。–fullscantable–Index1.找不出理想的访问路径•查询优化器正确的选择执行计划后,不意味着执行计划一定能运行良好。•怎么办?–调整SQL–调整访问结构(addindex)•本节重点:–介绍几种检查手段,用来识别不理想的访问路径–找出原因并加以解决。1.1识别•衡量访问路径的标准:–处理数据时消耗的资源是否可接受。•可以接受的标准:–一个访问路径所使用的资源和返回行的总数成正比例。–所以检查应该基于返回单行所用的资源总量。•关注效率,而不仅仅是速度。–SQL语句使用越少资源,系统就会

2、越具有扩展性、越快。–资源:CPU、MEMORY、磁盘和网络。•易于收集的度量:–逻辑读数量•受制于CPU•可能导致物理读•受制于串行操作,减少逻辑读有利于避免扩展性问题。1.1识别•经验法则:–集中精力解决每个返回行具有较多逻辑读的访问路径上每个返回行逻辑读个数效率5好10-15可接受15-20低效1.1识别•举例:Select*fromtwheren1between6000and7000andn2=19;TKPROF输出内容摘要:RowsRowSourceOperation-------------------------------------

3、---------------------3TABLEACCESSBYINDEXROWIDT(cr=27pr=0pw=0time=0uscost=21size=1340card=5)24INDEXRANGESCANT_N2_I(cr=3pr=0pw=0time=0uscost=1size=0card=20)(objectid61330)注意:只考虑访问路径层的数据,而不是整个SQL语句,因为SQL语句层的数据可能会引起误导。1.1识别•举例:selectsum(n1)fromtwheren2>246;TKPROF输出内容摘要:RowsRowSourc

4、eOperation----------------------------------------------------------1SORTAGGREGATE(cr=389pr=0pw=0time=0us)160TABLEACCESSFULLT(cr=389pr=0pw=0time=6996uscost=106size=1256card=157)•操作1对操作2的结果使用了单行函数。结果,总是返回单行而隐藏了访问路径的性能数据。1.2陷阱•检查logicalread数量时,提防两个陷阱:–读一致性(readconsistency)–行预取1.2

5、.1readconsistency•事物的读一致性:Undo•基于当前块以及回滚信息,数据块相同副本应该在运行时创建。要运行这个操作,将产生若干个逻辑读。•参照实验read_consistency.sql1.2.2行预取•这种情况较少发生,在此不做特殊讲解。1.2.3原因•导致低效率访问路径原因:–没有提供合适的访问结构–提供合适访问结构,但SQL语法不允许使用。–表或者索引是分区的,但由于不能pruning,因而要访问所有分区。–Tableorindex没有分区。–查询优化器缺少统计信息。–查询优化器自身的bug或者运行机制的限制。1.2.4解决办

6、法•最小化逻辑读为目标。–添加访问结构–调整物理分区•从大体上来看:–存在适当index,具有强选择性的操作执行更高效。–选择性非常弱,全表扫描更高效。2具有弱选择性的SQL语句•全表扫描或者全分区扫描。•很多场景只能用全表扫描。–分区是企业版功能。–不是所有表是分区表。–有限的列分区。•特定场景下,全表扫描和全分区扫描可能被全索引扫描替代,因为他们比较小。2.1全表扫描•顺序读取高水位线以下的allblocks。logicalread的数量取决与block数量,不是行数。•表包含大量空的或者接近空块时,全表扫描会很差。一个block必须先读才知道是

7、否包含数据。•Delete>insert时容易导致稀疏的block。•请参照实验full_scan_hwm.sql2.2全分区扫描•弱选择性的语句,使用索引没有收益,分区是唯一可以降低逻辑读数量的选项。•使用分区初衷:–排除掉包含不相关数据的分区(因为数据字典包含分区边界信息)。--PARTITIONPRUNING•使用PARTITIONPRUNING前提:–分区表–Where对分区键的限制或使用分区键的连接条件。2.3范围分区•PARTITIONPRUNING–对SELECT、UPDATE和DELETE都起作用。–若对分区键应用了限制,查询优化器能

8、识别并尽可能的排除不包含相关数据的分区。因为数据字典包含分区边界信息。–请参照实验pruning_range

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。