Пытаюсь составить отчет "Хоггеры статистики". Все те пользователи, которые загружали статистику загрузки процессора
На каком «table.cols» (или col1, col2 и т. д.) они запускали статистику и когда они ее запускали.
Я написал приведенный ниже отчет, но вижу, что он далек от реального
- Он не «разделяет» ЦП по заданному запросу на некоторую долю весов в таблице. Таким образом, если в статистической операции самый дорогой ЦП был в таблице FACT.BILLION_DOLLAR, но была также таблица DIMENSION.DWARF, DIMENSION.DWARF ложно отобразится на диаграмме, что делает отчет недостоверным.
Я также пытаюсь составить еще один отчет, в котором мне нужен ТОП ЦП по ТАБЛИЦЕ. Это не «строго» возможно, потому что ЦП предназначен для запроса, а не для объекта, но внутри запроса я хочу «разделить» ЦП пропорционально (я думаю, что количество (*) будет 1 критерием). Итак, КАК мне это сделать Он «заводит не того парня» — имя пользователя против запуска операции статистики отображается неправильно. Наш производственный идентификатор, который запускает статистику, — SWPRDUSR, но главный пользователь статистики отображается как SYSPRDUSR, который является системным продуктом. пользователь, и он действительно не возится с нашими вещами, так что я знаю, что здесь что-то не так.
Вот что я запускаю Я запускаю этот отчет не для всей системы, НО только для моей базы данных, каскадноsel 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 from
DBC.DBQLogtbl a join DBC.DBQLoBJTBL s on ( s.ProcID = a.ProcID and cast ( s.CollectTimeStamp as date ) = cast ( a.CollectTimeStamp as date ) ) where objectdatabasename in ( sel child
from dbc.children where parent ='FINDB'
group by 1 ) and ObjectType='tab' and statementType='collect statistics' group by 1,2,3,4 UNION ALL sel 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 from
PDCRinfo.DBQLogtbl a join PDCRinfo.dbqlobjtbl_hst s on ( s.queryID = a.queryID and s.Logdate = a.Logdate )
where objectdatabasename in ( sel child
from dbc.children where parent ='FINDB'
group by 1 ) and ObjectType='tab' and statementType='collect statistics' group by 1,2,3,4 order by 5 desc , 3 asc, 2 asc, 1 asc ;