当前位置: 首页 > news >正文

SQL语句性能测试

 随着软件系统的复杂度提高,软件系统的性能瓶颈可能出现的地方有很多,可能是代码,也可能是应用服务器,可能是前端界面层,也可能是中间件,还有,可能是 数据库。而对于数据库出现瓶颈而言,又要分两种情况,一种是数据库架构、设计有问题;另外一种则是提交处理的 SQL语句有问题。

  据统计,在数据库应用系统中,大部分的性能问题都是由于低效率的SQL语句造成的,在性能问题中占了80%以上的比例。这提醒我们,软件系统中的SQL语句测试和性能调优不可忽视。我们需要通过优化SQL语句来避免很多数据库的性能问题。

  SQL测试和调优过程

  一个标准的SQL测试和调优过程需要包括4个迭代步骤:

  (1)识别有问题的SQL语句

  第一步是找到引起性能问题的SQL语句,这些SQL语句可能嵌入在前端程序代码中,可能在后台数据库对象中,例如存储过程、视图等。

  对于那些动态构建的SQL语句,也就是说只有程序执行时才组合创建成可执行的SQL语句,我们可以通过一些工具来捕获它们,例如对于SQLServer,可以使用附带的事件探查器。

  (2)优化SQL语句

  第二步是在数据库中准备适当的数据,执行SQL语句,查看性能表现。数据的准备工作可以通过编写Insert语句来完成,也可以借助一些现成的工具(例如DataFactory)来完成。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/82/n-141082.html

  在这里,SQL Optimizer会自动分析这条SQL语句的数据库执行计划。SQL Optimizer的Auto Tune功能则可以智能地对给定的SQL语句进行分析,找出语义上一致的可替换语句,也就是说找出那些能查询出相同结果,但是写法不一样的SQL语句。

  例如下面的SQL语句可以中使用了IN关键字:

  但是要得到同样的查询结果,我们也可以用EXISTS关键字,只不过语句的写法不一样:


转载:http://www.51testing.com/?action-viewnews-itemid-142060

转载于:https://www.cnblogs.com/junzhongxu/archive/2009/07/28/1532684.html

相关文章:

  • C#中的预编译指令介绍
  • jQuery学习整理 (4) 事件与事件对象 (重点)
  • 导出sql脚本时的几个问题
  • 手机游戏量产引擎研发手记-导读
  • 2009-8-5 我的自省与收获
  • C#.NET描述arcobjects中的接口查询(QI)技术
  • 软件工程 之 学习C#前的总结~
  • [转]宝宝1岁内,各阶段动作发展
  • Page.RegisterStartupScript的使用方法
  • QQ2009性能优化测试版 会员补丁
  • CListCtrl使用技巧(1)
  • C Java PHP Perl Python的程序代码美化工具使用
  • FTP服务器搭建--虚拟多用户(vsftpd)
  • Http Handler 介绍
  • 首次以管理员用户身份登录我的公司门户
  • download使用浅析
  • Java精华积累:初学者都应该搞懂的问题
  • LintCode 31. partitionArray 数组划分
  • OSS Web直传 (文件图片)
  • PHP变量
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vultr 教程目录
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 排序算法之--选择排序
  • 悄悄地说一个bug
  • 如何设计一个比特币钱包服务
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在Unity中实现一个简单的消息管理器
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (2)STL算法之元素计数
  • (23)Linux的软硬连接
  • (二十三)Flask之高频面试点
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (全注解开发)学习Spring-MVC的第三天
  • (十) 初识 Docker file
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (状压dp)uva 10817 Headmaster's Headache
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ../depcomp: line 571: exec: g++: not found
  • ./configure、make、make install 命令
  • .NET 8.0 中有哪些新的变化?
  • .Net CF下精确的计时器
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • ??在JSP中,java和JavaScript如何交互?
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @取消转义
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]