优化sql

点击蓝字 关注我们 作为金融机构业务系统的数据承载——数据库,在金融科技快速发展的过程中,随着互联网化、业务敏捷化等业务场景的转变,数据库性能也受到了极大的挑战。为了加快信息化建设的步伐,云和恩墨助力于某全国性专业财产保险公司实现IT信息化建设的发展,数据库zCloud云管理平台帮助客户加快实现自动化运维的进程。

6699ab4239fe6727c4b7811a7e82a66a.gif

点击蓝字

关注我们

作为金融机构业务系统的数据承载——数据库,在金融科技快速发展的过程中,随着互联网化、业务敏捷化等业务场景的转变,数据库性能也受到了极大的挑战。为了加快信息化建设的步伐,云和恩墨助力于某全国性专业财产保险公司实现IT信息化建设的发展,数据库zCloud云管理平台帮助客户加快实现自动化运维的进程。

针对zCloud的一些特定功能,让我们跟随着云和恩墨驻场工程师小秦(化名)在实际操作中来详细了解这款精心雕琢的产品。

zCloud云管平台可以通过监控来帮助我们快速的定位以及解决数据库问题。

第一种是常规监控:通过监控数据库运行状态,包括错误告警、会话数、常规性能指标、空间使用率等。

eacfd85bc990ae4100dfe99392aaff53.png

第二种是实时性能监控:通过收集全方位的性能指标,在出现性能问题时,通过等待事件、SQL语句、执行计划、以及相关联的对象,帮助数据库管理人员快速诊断复杂的性能问题,并提出性能优化建议。

下面通过几个场景来演示zCloud在性能下钻方面的表现:

1

场景一:如何分析TOP SQL

在性能页面,选择一个时间段,可以清晰的看到这个时间段影响性能的TOP SQL,可以帮助我们快速的定位该SQL执行时间。如果关心更详细的信息,可以点击SQL ID下钻到SQL性能详情页面。

1808d500030f203d4194230adf85c83c.png

在SQL性能详情页面,可以看到完整的SQL文本、性能数据、执行计划、性能分析、等待事件以及会话的基本信息等。在新版本中支持SQL文本格式化。

如下图所示SQL文本页面展示执行该SQL的完整SQL语句。

6723f7b1f20b4841a5e1761553173b7d.png

在性能数据页面,可以还可以了解该SQL运行的整体统计,内容包括今天的执行次数、最近活跃时间、执行时间等。

faeb230a31266cfe73147610fc4dab05.png

在执行计划页面可以看到该SQL的执行计划,可以根据执行计划来对SQL进行优化,并且在该页面可以看到该SQL所涉及的对象信息。

f7d15b22d2aff2d0561d591efe0e4e84.png

性能分析页面,通过智能分析引擎,zCloud可以对SQL提出创建索引的建议,我们可以根据实际环境来对该SQL进行判断,是否可以根据该建议来进行优化。

f32a4e00c7a2333f37568f31092fb898.png

2

场景二:如何分析事务锁

事务锁分析页面展示锁的信息,后面会话阻塞分析是树形结构,此处锁信息是横向展示锁的信息。当数据库会话较多时可以帮助我们准确的定位哪个会话产生了锁。

99586fb62149dbef892ca19711a4f4a9.png

3

场景三:如何分析临时表空间异常增长

在业务同步一些数据使用insert等操作,可能会导致一些表的统计信息不准确,在表连接时产生笛卡尔积导致临时表空间扩展,如下图所示,这时临时表空间的使用量并不高,但是,使用量在23:13-23:43之间从3GB增加到96GB,通过temp表空间使用趋势,我们可以定位到23:13-23:43时间段该临时表空间异常扩展;接下来我们就可以通过实时性能来查找该时间段的问题SQL。

81b3cd2c91e2273459bf10ef6e6e772b.png  

4

场景四:如何分析特定时间段的性能问题

在实时性能页面我们可以查找最近48小时内的性能数据,接下来在实时活动会话中选取我们所要查找的时间段。

fa3ea5c471d71275d09ddcbf7a7d26d4.png

如下图所示,选定时间框后,下边一栏会展现出该时间段的TOP SQL和TOP SESSION,我们可以按照Activity%的大小来查看SQL(TOP SQL处的Activity%为不同的wait class在ASH中出现的次数与ASH中总的次数的比值),点击SQL_ID可以下钻到SQL性能详情页面。

e358734dc9d4d5f5d6fd39d07d6b6922.png

如下图所示,在SQL性能详情页面的等待事件中发现了direct path write temp等待事件。

2c9d9cc9711b2f707b6d6ac8b8428464.png

同时在执行计划页面发现merge join cartesian,并且发现该表的统计信息中行数为0。

1d77c54263038b4c6456864b62ffa52e.png

93451b0835eafa8c659bb09e0f6f7ece.png

最终和业务沟通后,该表所在的存储过程中每次都先truncate table,之后进行insert,导致统计信息中记录该表行数为0,产生笛卡尔积连接。

2aa90566f9f64728e80f33474964badf.png

面对各种突发状况,云和恩墨zCloud数据库云管平台不断吸取经验,进行全面的优化和改进,汇集各行业更多客户对安全管理、持续数据优化管理的典型需求,不断增强平台对内、对外的服务质量管理。在未来,云和恩墨还将引领国产的数据库云管平台走向一个新的高度。

9982f6577247bdbb3c15049ad31c4ccc.png

知秋君
上一篇 2024-08-18 16:02
下一篇 2024-08-18 15:36

相关推荐