SQL统计信息一共有以下几部分。SQL ordered by Elapsed time按照sql执行时间从长到短的排序,SQL ordered by CPU表示按照消耗CPU排序。SQL ordered by Gets表示sql获取内存块的数量,SQL ordered by Reads表示执行物理读的信息,SQL ordered by Executions表示执行次数,SQL ordered by Parse Calls表示sql被分析的次数。Sql的统计信息不能孤立的来看待,而是要结合top5事件来分析。如果是sql排名第一位,我们就能通过sql统计信息辅助分析了。SQL统计信息是一个很好的补充。对于OLTP系统来说,即使是软分析,也不能过多,依旧会消耗很多内存资源。如果top5事件中出现了很频繁的sql分析相关的Latch争用,就可以来这里确认哪些sql分析很频繁。
Latch和锁起始还是有区分的,Latch更多的是等待,而锁更多的是阻塞。Latch是oracle为了保护内存结构而发明的。Latch一般出现在这样的情况。一个数据块被一个会话读取到内存中,与此同时另外一个会话也要读取这个数据块,为了保持数据一致性,通过Latch来控制。
由Latch引发的问题比较多,除了未绑定变量外,还有一种情况是,重复执行的sql频繁访问一些相同的数据,因此可以将这些sql查询的结果缓存起来,不用多次查询,导致数据库块被频繁访问,而增加了会话的等待时间。
Statspack报告还有很多内容,包括I/O,内存等方面,就不做介绍了。
以上介绍了数据库报告的分析过程,虽然每个数据库的运行状况各异,但是大家只要掌握分析问题的方法和思路,就能很快发现问题。
原文转自:http://blog.csdn.net/xuyubotest/article/details/8158500