我正在寻找一种方法来从Oracle和DB2数据库中获得在每个表上执行的选择/更新/插入/删除操作计数的统计数据。换句话说,我想知道在给定表上执行了多少次扫描操作与执行了多少次修改操作。
我发现可以在MS SQL Server中执行此操作,如http://msdn.microsoft.com/en-us/library/dd894051%28v=sql.100%29.aspx中所述
我需要它的原因是,如果值得对给定表应用压缩,它可以提供合理的统计数据。扫描/更新比率越好-表的候选值就越好。我认为这也适用于其他数据库。
那么有没有可能在Oracle或/和DB2中获得这些统计数据呢?提前谢谢。
发布于 2011-04-27 00:09:46
我的回答适用于用于Linux、UNIX和Windows ( LUW )平台的DB2数据库引擎,而不适用于用于iSeries (AS/400)的DB2或用于z/OS的DB2,它们具有与LUW平台显著不同的引擎内部结构。我包含的所有文档链接都是针对LUW的DB2的参考版本9.7。
针对LUW的DB2在每个版本的数据引擎中提供了广泛的性能和利用率统计信息,包括免费的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,该算法通过省略当前索引键和前一个索引键之间的公共前导字节来利用索引的排序特性。
发布于 2011-04-26 20:34:29
在Oracle中,您可以在sys.dba_tab_modifications中查看对表执行了多少更新/删除/插入操作。每4小时将数据刷新到表中。对于读取,可以使用dba_hist_seg_stat,它是AWR的一部分。它的使用是经过许可的。一旦表获得新的优化器统计信息,就会重置sys.dba_tab_modifications。
https://stackoverflow.com/questions/5789024
复制相似问题