随着软件系统的复杂度提高,软件系统的性能瓶颈可能出现的地方有很多,可能是代码,也可能是应用服务器,可能是前端界面层,也可能是中间件,还有,可能是数据库。而对于数据库出现瓶颈而言,又要分两种情况,一种是数据库架构、设计有问题;另外一种则是提交处理的SQL语句有问题。
据统计,在数据库应用系统中,大部分的性能问题都是由于低效率的SQL语句造成的,在性能问题中占了80%以上的比例。这提醒我们,软件系统中的SQL语句测试和性能调优不可忽视。我们需要通过优化SQL语句来避免很多数据库的性能问题。
SQL测试和调优过程
一个标准的SQL测试和调优过程需要包括4个迭代步骤:
(1)识别有问题的SQL语句
第一步是找到引起性能问题的SQL语句,这些SQL语句可能嵌入在前端程序代码中,可能在后台数据库对象中,例如存储过程、视图等。
对于那些动态构建的SQL语句,也就是说只有程序执行时才组合创建成可执行的SQL语句,我们可以通过一些工具来捕获它们,例如对于SQLServer,可以使用附带的事件探查器。
(2)优化SQL语句
第二步是在数据库中准备适当的数据,执行SQL语句,查看性能表现。数据的准备工作可以通过编写Insert语句来完成,也可以借助一些现成的工具(例如DataFactory)来完成。
……………………
在这里,SQL Optimizer会自动分析这条SQL语句的数据库执行计划。SQL Optimizer的Auto Tune功能则可以智能地对给定的SQL语句进行分析,找出语义上一致的可替换语句,也就是说找出那些能查询出相同结果,但是写法不一样的SQL语句。
例如下面的SQL语句可以中使用了IN关键字:
但是要得到同样的查询结果,我们也可以用EXISTS关键字,只不过语句的写法不一样:
……………………
版权声明:及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。