快速SQL分析,优化数据库性能
介绍
在努力实现目标之前,您必须先知道自己的情况。越快了解查询、存储或触发器的整体情况,弄清造成您数据库性能下降的原因,问题越能得以迅速解决。数据库管理员花费了大量时间查找不同数据源中影响性能的数据。掌握整体情况是非常重要的。它使您不至于迷失在细节之中,让您能够把握问题的全局。 无论您是开发团队的全职成员,还是最后时刻的救火队员(“超级英雄”),显然工作完成得越迅速、资源使用得越少,成功来得越快。 是选择埋头研究报告和性能统计文件,辛苦熬夜,还是选择做好工作的同时享受周末,一切就看您使用什么样的工具了。Embarcadero ® DB Optimizer™是一种可在几分钟内配置完成的桌面工具,它能够帮助您找到存在问题的SQL语句。DB Optimizer可帮助您快速分析Oracle ®、Microsoft SQL Server、Sybase ®和IBM ® DB2 for LUW数据库,让您轻松识别并优化造成性能瓶颈的SQL语句。有了DB Optimizer,数据库管理员能够在单个易用IDE上灵活测试、分析和优化SQL。 DB Optimizer还包含一个功能强大的SQL IDE,该IDE具有代码自动补全、实时错误检查、解释计划、快速优化(减轻了编码工作,同时可产生高质量代码)功能。 但正如许多数据管理员知道的那样,优化数据库性能,首先得准确诊断问题。数据库分析可以让您快速得到诊断结果,让您把时间花在纠正问题而非查找问题上。 本文讨论了DB Optimizer如何帮助您更快更好地找到存在问题的SQL语句。 采用等待时长分析,省钱省时 Embarcadero DB Optimizer具有等待时长分析功能,且能显示图形化分析结果,可以快速找出引起数据库性能下降的SQL语句。 等待时长分析与跟踪分析比较 谈到等待时长分析功能的好处,打个常用的比方,那就是它能缩短您开车上班的时间。如果您想要早点到达公司,您不必知道车轮共转了多少圈,或者汽车水温是多少,只需关心哪条路线交通灯时间最短,哪条路线允许时速最高。在某些情况下,您甚至会发现,最长的路线反而是最快的。 传统的跟踪分析非常流行,它能得出一个按时间顺序排列的大型事件列表。您所需要的信息就在列表里,只要您知道自己想找什么,且有充足的时间和耐心编写用户查询。跟踪分析工具很强大,但通常适用于性能问题原因已经确定的情况。 使用等待时长分析,您可以通过比较事件延时信息表,分析造成终端等待的原因。对于大多数SQL性能问题,最好首先弄清数据库查询操作耗时多长,以及您怎样通过优化查询、解释计划或存储程序来节省时间,提高性能。有了等待时长分析,您便能够清楚的知道,查询操作或程序执行慢在什么地方,发生的频率是多少。 DB OPTIMIZER中的等待时长分析 通过将等待事件分类后分别显示在不同的面板上,DB Optimizer辨认性能问题的能力得以增强。如果事件执行超过选定时长,或者超过分析会话时长,那么该事件的名称及耗时信息将显示在等待事件分类显示面板上。 请注意,软件带有快速提示,告知您等待事件的信息以及造成问题的可能原因。 数据库平台中造成等待的事件 数据库平台 Oracle Sybase SQL Server 造成等待的事件 On CPU Application User I/O Other Commit System I/O Configuration Cluster Lock I/O Memory Network Other Other Fetch Cursor Execution Operation Transaction Connectivity Lock I/O Memory Other Buffer 将DB Optimizer得到的等待时长分析结果加入到您的工作区中,非常有价值: AD HOC测试,大大提高效率 应用程序开发中,时间投入贡献不大。利用桌面工具快速分析数据库问题,可以帮助您节省时间。分析效率的提高意味着在分析项目时浪费的时间更少。 无论负载测试的时间是3分钟还是更长,对于拥有DB Optimzer的生产数据库管理员来说,都足够完成其分析任务了。 质量检测时的分析 质检查出漏洞后,应用程序进行修改,哪怕是最后一分钟进行的修改也得进行验证和测试。DB Optimizer可以帮助您确保最后测试阶段进行的程序修改不会反过来影响数据库性能。 例如,只需15分钟的分析会话,就能轻松找出分析会话中速度最慢的SQL语句,并显示在DB Optimizer的SQL面板上。 对于每条SQL语句,您能看到如下详细统计信息: —— 总运行时间 更有效率的代码评估 不同的开发人员常常有不同的SQL编码风格。使用SQL语句,请确保查询中只处理必需的数据。使用笨拙的JOINs和复杂的WHERE语句往往可以提高数据库的性能。性能问题通常与SQL语句类型有关,如果多次使用这些“问题”语句,性能问题也会随之上升。 DB Optimizer的主要优势之一是谓词分析信息功能。谓词分析功能是指,根据谓词使用情况分析查询情况的功能,分析结果可供您快速查看,而无论类似查询执行了多少次。如果多次出现低效查询或插入,DB Optimizer会以图形方式告诉您该查询重复的次数以及每次持续的时间。 快速识别您产品中的速度瓶颈 在生产过程中进行性能分析,是捕捉棘手性能问题的最好方式,包括那些仅在复杂作用影响下出现的性能问题。例如,可在实际使用情况下更准确地分析动态SQL和存储过程。 在某些情况下,数据库在多种不同的生产环境中生产,需要生产数据库管理员交替使用多种不同工具来分析数据库在群集或分布式环境下的性能。如果能够在同一款工具中分析所有不同的数据库,就能方便不少。 通过在DB Optimizer中运行并保存数据库优化分析会话,您可以同时查看所有信息,并进行比较。您可以在Profile Launch Configuration对话框中自定义和管理您的数据源分析会话。Profile Launch Configuration位于工具栏中。 数据库优化分析会话的保存和共享都很方便。数据库生产修复不再需要耗费数周的时间。生产数据库管理员可以拍下分析快照,进行诊断,然后再发送复本给开发人员,让开发人员帮助诊断并进行修复。开发人员可以将生产环境分析时使用的参数原原本本的复制到测试环境中,重新优化分析数据库。 DB OPTIMIZER的作用 Embarcadero公司的DB Optimizer提供了问题SQL语句的快速识别、诊断和优化能力,从而实现了数据库性能最大化。它能够识别数据密集型查询以及频繁重复的查询,优化问题语句,消除存在的性能瓶颈。开发周期内的优化还可以让您定位SQL引起的性能问题,防止数据库服务意外中断。针对Oracle的快速修复功能,将以文字形式给出改进SQL性能的最佳建议,供您选择实施。DB Optimizer还提供了批量DML语句、存储程序、整个SQL文件或系统全局区的优化调整功能。 DB Optimizer具有如下功能: DB OPTIMIZER的ROI(投资回报率) 您可以采用如下方式测量DB Optimizer的ROI:
简言之,DB Optimizer通过以下三种省时的方法分析数据库:
—— 等待时长分析,并以图像方式显示分析结果,找出造成数据库性能低下的SQL语句
—— 每条SQL语句均超链到各自的详细活动信息上,可供查看
—— 支持多种数据库管理系统平台、易于安装、无需代理,真正的一站式分析工具
近年来,等待时长分析也越来越受到欢迎,因为它更实际,且能够更好的解决问题。等待时长分析因其显著的特点,又被称为“瓶颈分析”;每个数据库管理员都希望数据库瓶颈查找工作更方便更快捷。
DB Optimizer采用了等待时长分析法,将分析结果以图形图表形式显示在一个易于浏览和分析的界面中。
DB Optimizer以等待事件分类表的形式显示等待时长分析结果。该界面同样还显示了数据库配置问题和应用程序架构问题。
—— Ad Hoc测试 —— 快速识别造成产品性能问题的原因
在测试应用程序时,生产数据库管理员的经验显得非常宝贵。不幸的是,他们总是得超负荷工作,管理和监控数据库;大多数生产数据库管理员工作都非常努力,以确保产品数据库保持高效率运行。然而,发现应用程序性能问题,防止出现不良后果的关键,不是他们的时间投入,而是他们的经验。
在应用程序交付测试时进行性能分析,分析结果接近实际。数据库管理员选择在质检工程师进行测试的同时分析数据库性能,可让分析结果更加真实可靠。DB Optimzer无需安装,不影响其它团队工作,分析结果能够立即反馈到开发团队。
—— 等待时长(等待时间较长的地方)
一些机构要求生产数据库管理员协助代码审查。此外,审查往往集中在SQL语句和存储过程解释计划的效率问题上。由于代码审查往往是非正式的,时间表上没有预留专门的时间,因此生产数据库管理员必须充分利用所给的有效时间。
一旦应用程序运行,常常出现一些在测试环境中无法预测的性能问题。往往很难找到一个与您的生产环境完全吻合的测试环境。无论是硬件不足还是软件权限不够,都会影响测试环境,造成后续生产过程中性能问题频发。
—— 等待时长分析,分析结果以图形显示,可识别影响数据库性能的SQL语句。
—— 向下超链,查看单个SQL语句的详细活动信息。
—— 解释计划,以帮助您更好的了解SQL语句的执行情况及其性能成本。
—— 利用Quick Fixes实时自动识别和效率不高的SQL语句。
—— 立即优化您应用程序和数据库中的所有DML语句。
将DB Optimizer的数据库优化分析调整能力应用到开发过程中,您将会得到运行速度更快的优化代码。您还可以在进行数据库生产之前,测试其他变更与修改,确保它们不会造成性能问题。
—— 减少识别优化问题SQL语句所需的时间。 —— 缩短质量评价时间。