2010-08-03 102 views
0

我们目前正在质疑我们公司的数据模型(数据库模式),这种模式在过去几年一直在疯狂地分布式增长,现在有冗余并且缺乏清晰度。不同的数据库(Oracle和MySQL)通过不同的工具进行查询,由不同的工具为不同目的(计费,报告,业务等)开发。计算MySQL和/或Oracle中的列访问统计信息

为了更清楚地了解不同工具的数据依赖性,即工具T需要哪些确切的信息,一种方法是直接从每个数据库执行的SQL查询中识别它们。或者,让数据库自己收集这些统计数据会更加有趣。

这种统计的

例子是

  • 如何经常是从表T访问
  • 如何经常是表T1和T2连接在一起

没有人知道如何做到这一点列C与MySQL或Oracle或两者兼而有之?

回答

0

MySQL有一个general query log。有关如何启用日志和读取日志的说明是MySQL参考手册的一部分。

MySQL通用查询日志是SQL连接,语句和断开连接的列表。

您将不得不处理MySQL常规查询日志以获取所需的统计信息。

Oracle商务智能服务器有一个query log。我找不到任何有关查询日志的普通Oracle数据库。

+0

我想一般查询日志只用了查询,但我要在它更好看。 – mvaz 2010-08-03 14:07:37

2

Oracle有一个SYS.col_usage $表,其中包含有关如何在WHERE子句中引用单个列的统计信息。不幸的是,没有列间关系的记录。也没有只读的列记录(就像在WHERE子句中一样)。

的EQUALITY_PREDS列是用于在where子句等的引用:用于NONEQUIJOIN_PREDS,RANGE_PREDS,LIKE_PREDS,NULL_PREDS COL = 123 的EQUIJOIN_PREDS是加入像A.COL = B.COL 也有计数器。

在生成统计数据时收集信息并将其提供给系统。

一个示例脚本这里:link text