2011-04-26 88 views
2

我正在寻找一种从Oracle和DB2数据库获取统计信息的方法,以便在每个表上执行select/update/insert/delete操作计数。换句话说,我想知道在给定的表上执行了多少次扫描操作,以及执行了多少次修改操作。关于DB2和Oracle的扫描/更新操作统计信息

我已经发现有可能为http://msdn.microsoft.com/en-us/library/dd894051%28v=sql.100%29.aspx

我需要它的理由说明它在MS SQL服务器做,是因为它提供了合理的统计,如果它是值得的给定表应用压缩。扫描/更新比率越好 - 表格越好。我认为这也适用于其他数据库。

那么有可能在Oracle或/和DB2中获得这些统计信息吗?提前致谢。

回答

1

我的答案适用于Linux,UNIX和Windows(LUW)平台的DB2数据库引擎,而不是DB2 for iSeries(AS/400)或DB2 for z/OS,其引擎内部与LUW平台显着不同。我所有的文档链接都包含了DB2 for LUW的参考版本9.7。

DB2 for LUW在每个数据引擎版本中都提供了广泛的性能和利用率统计信息,其中包括免费的DB2 Express-C产品。这些统计数据的收集由一系列名为system monitor switches的数据库引擎设置管理。您寻求的统计信息涉及桌面监视器开关,可能还包括语句和UOW(工作单元)监视器开关。当启用这些系统监视器开关时,您可以从snapshot monitors或从administrative SQL views(在SYSIBMADM模式中)中检索与SQL结果集呈现相同快照监视器输出的各种性能指标和计数器的运行总计。快照监视器比event monitors承担更少的系统开销,后者作为跟踪在后台运行,并将详细信息流存储到特定的表或文件中。

压缩是一个licensed feature,它将表和索引的内部存储从表空间改变到缓冲池(RAM缓存),直到事务日志文件。在大多数情况下,压缩和解压缩所带来的CPU额外开销大大低于I/O总体减少量。 deep row compression feature通过构建和使用一个甚至可以跨列边界的多字节模式的12位字典来压缩表中的行。在DBA干预之前,启用深度行压缩通常会将其大小缩小40%或更多。索引是compressed通过简化算法,通过省略当前索引键和先前索引键之间的常用前导字节来利用它们的排序性质。

3

在Oracle中,您可以看到sys.dba_tab_modifications中的表上有多少更新/删除/插入。数据每4小时刷新一次。对于读取,您可以使用AWR的一部分dba_hist_seg_stat。这是使用许可的。 一旦表获得新的优化器统计信息,就会重置sys.dba_tab_modifications。