SQL Server: 对T-SQL语句进行性能分析
2014-02-24 12:17
369 查看
清除SQL Server的数据和过程缓冲区
在对SQL语句进行性能分析前,首先要执行以下命令(但禁止在在线服务器上执行此命令!)以清除SQL Server的数据和过程缓冲区:DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE; GO
Notes:
这两条命令的作用是清除SQL Server的数据和过程缓冲区,使得我们进行性能分析时,每次执行的查询都在同一起点上。如果不这么做,对查询所得到的执行时间和I/O消耗就不具有可比性了。
执行这两条命令需要sysadmin权限。You have to be an member of the sysadmin role to issue these 2 commands.
禁止在生产环境的服务器上执行此命令!原因,正如 Notes[1] 对它的作用的解释。
用SET STATISTICS IO和SET STATISTICS TIME进行性能分析
在SQL Server Management Studio里执行:SET STATISTICS PROFILE OFF; SET STATISTICS IO ON; SET STATISTICS TIME ON; GO -- // The SQL statement to analysis GO
会得到以下这样的统计结果:
(8653 row(s) affected) Table '...'. Scan count 1, logical reads 160, physical reads 4, read-ahead reads 158, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 16 ms, elapsed time = 91 ms.
相关文章推荐
- 在Oracle库上几种特殊情况的SQL语句
- sql:无法解决 equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AS" 之间的排序规则冲突。
- 浅析MySQL数据碎片的产生
- MySQL索引类型一览 让MySQL高效运行起来
- C# 批量执行 sql语句 事务 参数
- mysql存储过程
- oracle删除重复数据并只保留一条数据
- mongodb中的mapreduce,以及java代码中的做法
- PL/SQL 快捷键设置
- 最大的Redis集群:新浪Redis集群揭秘
- Redis集群方案
- libsqlite3.dylib与libsqlite3.0.dylib区别
- 解决windows下的mysql匿名登陆无法使用mysql数据库的问题
- MySQL原理相关
- mysql删除及更改表的主键
- 使用WITH AS提高性能简化嵌套SQL
- redis的安装-windows和linux
- Oracle数据库创建表空间及用户
- Oracle数据导入、导出命令
- MySQL的基本命令