PerfQA Analyzer测试(七)--空间数据库性能问题排查
Trace文件对于一般人可读性差,需要使用TKprof工具进行转换。转换后可读取sde数据库操作时每条SQL语句的执行时间和执行操作的总时间,找到数据库中的慢SQL语句,从而针对性的进行优化。
一、使用TKprof工具格式化Trace文件
1.在数据库服务器以管理员身份打开cmd窗口
2.浏览到trace文件路径
3.输入命令行并运行
TKPROF filename1, filename2
[ PRINT = integer ]
[ AGGREGATE = [ YES | NO ] ]
[ SYS = [ YES | NO ] ]
[ [ TABLE = schema.table ] | [ EXPLAIN = user/password ] ]
[ RECORD = filename ]
Filename1 指定的输入文件。
Filename2 格式化输出文件。
PRINT 只列出输出文件的第一个SQL语句。默认为所有的SQL语句。
AGGREGATE 如果= NO ,则不对多个相同的SQL进行汇总。
SYS 禁止或启用 将SYS用户所发布的SQL语句列表到输出文件中。
TABLE 在输出到输出文件前,用于存放临时表的用户名和表名。
EXPLAIN sde数据库管理员的账号密码
SORT 排序方式,建议选择按照每句sql语句执行的耗时倒叙排序
4.命令行例子
截图1:样例命令行执行结果tkprof orcl_ora_3400_PerfQA_Trace.trc text.txt explain=sde/sde aggregate=yes waits=yes sort=fchela
截图2:样例命令行执行结果
二、Trace文件分析
截图3:格式化后的Trace文件COUNT: 这个语句被parse、execute、fetch的次数。
CPU:这个语句对于所有的parse、execute、fetch所消耗的cpu的时间,以秒为单位。
ELAPSED:这个语句所有消耗在parse、execute、fetch的总的时间。
DISK:从磁盘上的数据文件中物理读取的块的数量。一般来说更想知道的是正在从缓存中读取的数据而不是从磁盘上读取的数据。
QUERY:在一致性读模式下,所有parse、execute、fetch所获得的buffer的数量。一致性模式的buffer是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。
CURRENT:在current模式下所获得的buffer的数量。一般在current模式下执行insert、update、delete操作都会获取buffer。在current模式下如果在高速缓存区发现有新的缓存足够给当前的事务使用,则这些buffer都会被读入了缓存区中。
ROWS: 所有SQL语句返回的记录数目,但是不包括子查询中返回的记录数目。对于select语句,返回记录是在fetch这步,对于insert、update、delete操作,返回记录则是在execute这步。
网友评论