SQLSERVER语句性能分析
SQL SERVER通过设置 STATISTICS 查看执行SQL时的系统情况。
SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。
SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。
SET STATISTICS TIME ON:显示每个查询执行后的结果集,代表查询执行的配置文件。
使用方法:打开SQL SERVER 查询分析器,输入以下语句:
SET STATISTICS PROFILE ON
SET STATISTICS IO ON
SET STATISTICS TIME ON
GO /*--你的SQL脚本开始*/
SELECT [TestCase] FROM [TestCaseSelect]
GO /*--你的SQL脚本结束*/
SET STATISTICS PROFILE OFF
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
MySQL语句性能分析
SHOW PROFILES /*查看SQL耗时情况,用于分析SQL性能*/
SHOW PROFILE[type[,type]...] /*查看SQL语句资源消耗情况,type见下面type说明*/
[FOR QUERY n] /*查询指定语句ID为n的情况,ID为SHOW PROFILES查询出语句的Query_ID*/
[LIMIT row_count[OFFSET offset]]
上面type可以是:
- ALL 所有信息
- BLOCK IO 模块I/O操作次数
- CONTEXT SWITCHES 上下文切换数
- CPU 用户CPU使用情况
- IPC 发送和接收消息的数量
- MEMORY 内存使用情况
- PAGE FAULT 页面错误量
- SOURCE 源码中的函数名称与位置
- SWAPS SWAP次数
Oracle语句性能分析
Autotrace /*SQLPLUS的AutoTrace是分析SQL的执行计划,执行效率的工具*/
用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
SET AUTOT[RACE] ON /*开启AutoTrace,显示AUTOTRACE信息和SQL执行结果*/
|SET AUTOT[RACE] TRACEONLY /*开启AutoTrace,仅显示AUTOTRACE信息*/
|SET AUTOT[RACE] ON EXPLAIN /*开启AutoTrace,仅显示AUTOTRACE的EXPLAIN信息*/
|SET AUTOT[RACE] ON STATISTICS /*开启AutoTrace,仅显示AUTOTRACE的STATISTICS信息*/
/*执行的SQL语句*/
SET AUTOT[RACE] OFF /*停止AutoTrace*/
结果列说明:
recursive calls /*递归调用-执行SQL的时候的产生的递归调用的数量,这个参数和访问数据字典的次数有很大的关系。一般来说,这个参数值不会很大。*/
db block gets /*DB块取-在发生INSERT,DELETE,UPDATE,SELECT FOR UPDATE的时候,数据库缓冲区中的数据库块的个数。在SELECT语句中一般为0。*/
consistent gets /*一致性读-除了SELECT FOR UPDATE的时候,从数据库缓冲区中读取的数据块的个数*/
physical reads /*物理读*/
redo size /*重做日志大小-执行SQL的过程中,产生的重做日志的大小*/
bytes sent via SQL*Net to client /*通过sql*net发送给客户端的字节数*/
bytes received via SQL*Net from client /*通过sql*net接受客户端的字节数*/
sql*net roundtrips to/from client /*See how setting the arraysize affects SQL*Net roundtrips to/from client.*/
sorts(memory) /*在内存中发生的排序*/
sorts(disk) /*不能在内存中发生的排序,需要硬盘来协助*/
rows processed /*结果记录数*/
set timing on; /*在SQPPLUS中得到语句总执行的时间,显示时间单位为:毫秒*/