Teradata - 前 "stats hoggers" 的报告
Teradata - report for top "stats hoggers"
正在尝试编译 "statistics Hoggers" 报告。所有那些大吃CPU 运行宁统计数据
的用户"table.cols"(或col1,col2等),他们运行统计数据以及他们何时运行它。
我写了下面的报告,但我可以看出它与真实情况相去甚远
- 它不会 "Split" 在给定查询上 CPU 按一定比例的权重 table。因此,如果在统计操作中 - 最昂贵的 CPU 在 FACT.BILLION_DOLLAR table 但也有 DIMENSION.DWARF table , DIMENSION.DWARF 会虚假显示在图表上 - 这使报告具有误导性。
我也在尝试编写另一份报告,我希望 TABLE 成为 TOP CPU。它不是 "Strictly" 因为 CPU 不是针对 object 的查询,而是在查询中我想按比例 "split" CPU (我猜计数(*) 将是 1 个标准)。那么我如何完成这项工作
它 "pulls over the wrong guy"- 针对 运行 统计操作的用户名显示不正确。我们的生产 ID 运行s stats 是 SWPRDUSR,但最高统计用户显示为 SYSPRDUSR,他是系统范围的产品。用户,他真的不会弄乱我们的东西 - 所以我知道这里有些不对劲。
这就是我 运行ning
我运行宁此报告不是系统范围的但仅针对我的我的数据库,级联
选择
a.username,
s.ObjectTableName,
s.objectdatabasename,
--s.ObjectColumnName,
cast ( s.CollectTimeStamp as date ) ,
CAST( SUM((((a.AmpCPUTime(DEC(18,3)))+
ZEROIFNULL(a.ParserCPUTime)) )) AS DECIMAL(18,3)) as Total_CPU
来自<br>
DBC.DBQLogtbl一个加入DBC.DBQLoBJTBLs
在 ( s.ProcID = a.ProcID
and cast ( s.CollectTimeStamp as date ) = cast ( a.CollectTimeStamp as date ) )
其中 object 中的数据库名称 (
选择 child<br>
来自 dbc.children
其中 parent ='FINDB'<br>
按 1 分组)
和 ObjectType='tab'
和 statementType='collect statistics'
按 1,2,3,4 分组
联合所有
选择
a.username,
s.ObjectTableName,
s.objectdatabasename,
s.Logdate,
--s.ObjectColumnName,
CAST( SUM((((a.AmpCPUTime(DEC(18,3)))+
ZEROIFNULL(a.ParserCPUTime)) )) AS DECIMAL(18,3)) as Total_CPU
来自<br>
PDCRinfo.DBQLogtbl 加入 PDCRinfo.dbqlobjtbl_hst s
在 ( s.queryID = a.queryID
和 s.Logdate = a.Logdate )<br>
其中 object 中的数据库名称 (
选择 child<br>
来自 dbc.children
其中 parent ='FINDB'<br>
按 1 分组)
和 ObjectType='tab'
和 statementType='collect statistics'
按 1,2,3,4 分组
按 5 desc , 3 asc , 2 asc , 1 asc 排序
;
第一个 Select 缺少连接条件:s.queryID = a.queryID
Collect Stats
一直是单身table,不需要拆分CPU。
正在尝试编译 "statistics Hoggers" 报告。所有那些大吃CPU 运行宁统计数据
的用户"table.cols"(或col1,col2等),他们运行统计数据以及他们何时运行它。
我写了下面的报告,但我可以看出它与真实情况相去甚远
- 它不会 "Split" 在给定查询上 CPU 按一定比例的权重 table。因此,如果在统计操作中 - 最昂贵的 CPU 在 FACT.BILLION_DOLLAR table 但也有 DIMENSION.DWARF table , DIMENSION.DWARF 会虚假显示在图表上 - 这使报告具有误导性。
我也在尝试编写另一份报告,我希望 TABLE 成为 TOP CPU。它不是 "Strictly" 因为 CPU 不是针对 object 的查询,而是在查询中我想按比例 "split" CPU (我猜计数(*) 将是 1 个标准)。那么我如何完成这项工作 它 "pulls over the wrong guy"- 针对 运行 统计操作的用户名显示不正确。我们的生产 ID 运行s stats 是 SWPRDUSR,但最高统计用户显示为 SYSPRDUSR,他是系统范围的产品。用户,他真的不会弄乱我们的东西 - 所以我知道这里有些不对劲。
这就是我 运行ning 我运行宁此报告不是系统范围的但仅针对我的我的数据库,级联选择 a.username, s.ObjectTableName, s.objectdatabasename, --s.ObjectColumnName, cast ( s.CollectTimeStamp as date ) , CAST( SUM((((a.AmpCPUTime(DEC(18,3)))+ ZEROIFNULL(a.ParserCPUTime)) )) AS DECIMAL(18,3)) as Total_CPU 来自<br> DBC.DBQLogtbl一个加入DBC.DBQLoBJTBLs 在 ( s.ProcID = a.ProcID and cast ( s.CollectTimeStamp as date ) = cast ( a.CollectTimeStamp as date ) ) 其中 object 中的数据库名称 ( 选择 child<br> 来自 dbc.children 其中 parent ='FINDB'<br> 按 1 分组) 和 ObjectType='tab' 和 statementType='collect statistics' 按 1,2,3,4 分组 联合所有 选择 a.username, s.ObjectTableName, s.objectdatabasename, s.Logdate, --s.ObjectColumnName, CAST( SUM((((a.AmpCPUTime(DEC(18,3)))+ ZEROIFNULL(a.ParserCPUTime)) )) AS DECIMAL(18,3)) as Total_CPU 来自<br> PDCRinfo.DBQLogtbl 加入 PDCRinfo.dbqlobjtbl_hst s 在 ( s.queryID = a.queryID 和 s.Logdate = a.Logdate )<br> 其中 object 中的数据库名称 ( 选择 child<br> 来自 dbc.children 其中 parent ='FINDB'<br> 按 1 分组) 和 ObjectType='tab' 和 statementType='collect statistics' 按 1,2,3,4 分组 按 5 desc , 3 asc , 2 asc , 1 asc 排序 ;
第一个 Select 缺少连接条件:s.queryID = a.queryID
Collect Stats
一直是单身table,不需要拆分CPU。