基于裸数据的异地数据库性能诊断与优化

简介: 影响数据库性能的因素有很多,从大的方面可以分为硬件和软件。硬件包括CPU、内存、存储、网络设备等,软件方面包括操作系统版本、操作系统参数、数据库版本、数据库参数、数据库架构、运行的SQL代码等。 以上因素中,运行的SQL代码可单独归为一类,这部分内容多变,可控性较低,与业务强关联,动态影响,难以准确捕获,问题此消彼长难以根除。

影响数据库性能的因素有很多,从大的方面可以分为硬件和软件。硬件包括CPU、内存、存储、网络设备等,软件方面包括操作系统版本、操作系统参数、数据库版本、数据库参数、数据库架构、运行的SQL代码等。

以上因素中,运行的SQL代码可单独归为一类,这部分内容多变,可控性较低,与业务强关联,动态影响,难以准确捕获,问题此消彼长难以根除。通过我们处理的故障类型统计,80%的性能问题来自于不良的SQL语句编写。

生产环境常做访问控制,管理生产环境DBA忙于日常事务无法顾及数据库性能。本文介绍一次性从生产库上获取分析性能SQL相关的数据,拿到本地环境分析诊断生产性能问题。

裸数据获取

较详细分析一个SQL的性能,需要的内容包括执行计划信息、表的基础信息、索引基础信息、SQL写法问题等等。这些内容都存放在数据字典中。

1、创建相关的表,语句参考:

3bde969dc2a52d62f5dba76a87c81b78afaac67e

注:(第三条、第四条红框处,没有* 是因为这两个视图里面有long类型,不支持create as ct操作,实际操作过程中,未获取long类型的数据,只选取了必要的列)

2、通过数据泵导出上述创建的表

3、导出AWR裸数据

$ORACLE_HOME/rdbms/admin/awrextr.sql

4、本地导入创建的表

5、通过数据泵导入AWR裸数据

$ORACLE_HOME/rdbms/admin/awrload.sql

裸数据初析

1、执行时段为10~12点,15~17点,平均执行时长超过1秒的SQL统计。多个采样期间都有执行的,取执行次数最多的采样期间。

ab5b36943cc0fc8faf5f001cd2ec193ad9a1b7af

2、执行结果部分展示如下:

64f053fb50340d9cef7a910ddad92099b8dfc52d

3、生成这获取这此SQL的SQLAWR数据脚本(取前20)

fb223b84d60e8181d85e86e55ec862608722ed2a

4、生成结果放入命令窗口执行

6826068b7c8640a5758487c79995959bbef0b7c6

注:红框为格式化操作

5、生成结果展示如下

8581b8c1d9b0af945d063baab39d2b8ccf6b722d


案例解析

NEW_TOP_PHYSICAL_16_awr_sqlrpt_dqdx4x39x2x7m.html

SQL文本

SELECT COUNT(1)
FROM GPCXXXXXXXX A
WHERE A.VALIDDATE < :B1
AND A.SUBMITDATE < :B1
AND A.SUBMITDATE >SYSDATE - 40
AND A.FEETYPE IN ('307')
AND A.PLANSTATUS = 'N'
AND ROWNUM = 1;

f59a4135195c6ed047f7a20780a233ba1e8e07c3


  1. 小时内还未执行完一次,但占用整个采样期间8.21%的物理读,并伴有严重的IO等待,对采样期间数据库整体性能有较大影响
  2. 执行计划中存在全表扫描操作
  3. 语句简单易懂

表基础信息

2493238c253cf89fe2a8c138c209f6d2cca123f2

近3亿行,未分区,平均行长149,理论占用空间大小为 296815739*149*1.17/1024/1024/1024=48G,实际占用约50G空间(从MY_DBA_SEGMENTS中获取),知此表碎片并不严重或不存在碎片。

SQL绑定变量分析

20ce40a4e7d6bd23ecd0ab02d4675fbb2f70488c

结合绑定变量和条件看,大范围上,只查询40天以内的数据。

条件列数据分布情况

14d177cd2d110b25044360fde7ea32951c93c462

回顾下SQL条件:

WHERE A.VALIDDATE < :B1
AND A.SUBMITDATE < :B1
AND A.SUBMITDATE > SYSDATE - 40
AND A.FEETYPE IN ('307')
AND A.PLANSTATUS = 'N'
AND ROWNUM = 1;

结合条件和上述查询结果,分析如下:

FEETYPE,PLANSTATUS是等值关联,VALIDDATE是开区间范围关联,SUBMITDATE是闭区间范围关联。已知此表中SUBMITDATE保留3年数据,在数据分布平均的情况下,此SQL查询的数据量约为(296815739/3/365)*40/25/2=21.7W,约占整个表的0.07%。理论上适合使用索引,不必要全表扫描。

索引情况分析

9d67232c1a664536f4398c83bca755027b550d4d

  1. 此表当前存在3个组合索引4个单列索引
  2. 其中前三个索引实则过滤性极差,索引的NDV值仅2个或者3个,除非值严重分布不均,同时又经常选取值少的部分,不然这类索引没有存在的必要
  3. 结合本例子SQL,涉及的列上均没有索引,建立FEETYPE, SUBMITDATE两列组合索引,理应提升SQL性能
解决方案


  1. 建立FEETYPE, SUBMITDATE组合索引,执行SQL执行时长缩短到10S以内
  2. 表按SUBMITDATE分区,数据按月存放数据

原文发布时间为:2017-11-15
本文作者:杨江
本文来自云栖社区合作伙伴“ 数据和云”,了解相关信息可以关注“ 数据和云”微信公众号
相关文章
|
11天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
1天前
|
数据库
编程日记02:个人站优化数据库和日志
编程日记02:个人站优化数据库和日志
5 0
|
2天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
|
2天前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
3天前
|
存储 关系型数据库 分布式数据库
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
PolarDB分布式版存储引擎采用CSM方案均衡资源开销与可用性。
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
|
4天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
10 0
|
10天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
11天前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
11天前
|
存储 缓存 固态存储
优化矢量数据库性能:技巧与最佳实践
【4月更文挑战第30天】本文探讨了优化矢量数据库性能的技巧和最佳实践,包括硬件(如使用SSD、增加内存和利用多核处理器)、软件(索引优化、查询优化、数据分区和压缩)和架构(读写分离、分布式架构及缓存策略)方面的优化措施。通过这些方法,可以提升系统运行效率,应对大数据量和复杂查询的挑战。
|
12天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
24 0