powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Аналитика и исторические сведения по изменению таблиц
15 сообщений из 15, страница 1 из 1
Аналитика и исторические сведения по изменению таблиц
    #39754395
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Необходимо предоставить данные, которые отображают тенденцию роста таблиц и схем в целом для того, чтобы можно было прогнозировать, каких размеров они будут через промежуток времени.
Требуется Ваша помощь в разработке данного отчета.
Поскольку опыта работы с DB2 нет от слова "совсем" (хоть и есть знания в SQL), буду рад даже подсказке, в каком направлении двигаться.
Возможно ли собрать необходимые данные для дальнейшего анализа и расчета?
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754406
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть предположение, как это сделать. На примере одной таблицы.
1) получить размер таблицы
2) получить активность таблицы (количество вносимых записей за интервал). но тут есть нюансы и недопонимание. Во-первых, возможно ли это сделать, и, если да, то этот показатель средний за всю историю жизни таблицы, или что-то иное?
3) перемножить п1. и п.2.
Верно ли я думаю?
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754610
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenko,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
--INSERT INTO TABLE_SIZE
CREATE TABLE TABLE_SIZE AS (
SELECT 
  CURRENT TIMESTAMP TS
, T.TABSCHEMA, T.TABNAME
, SUM(A.DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE
, SUM(A.INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
, SUM(A.LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE
, SUM(A.LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE
, SUM(A.XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE
, SUM(A.COL_OBJECT_P_SIZE) COL_OBJECT_P_SIZE
FROM 
  TABLE(VALUES 
    ('SYSIBM', 'SYSCOLUMNS')
  , ('SYSIBM', 'SYSTABLES')
  ) T (TABSCHEMA, TABNAME)
, TABLE( ADMIN_GET_TAB_INFO (T.TABSCHEMA, T.TABNAME)) A
GROUP BY T.TABSCHEMA, T.TABNAME
) DEFINITION ONLY IN USERSPACE1
;

Создаете таблицу командой выше. Измените набор нужных таблиц вручную. В примере показаны пара системных.
Если надо по всем таблицам схемы, то в табличную функцию ADMIN_GET_TAB_INFO можно передавать только имя схемы и NULL в качестве второго параметра.
Если надо по всем таблицам, можно пользоваться представлением SYSIBMADM.ADMINTABINFO, основанным на этой функции.

Далее время от времени запускаете запрос выше, закомменировав 2-ю и предпоследнюю строки, и раскомментировав 1-ю.
Запрос будет вставлять записи в таблицу TABLE_SIZE с текущим временем.
Для получения показателей роста за период вы запросом получаете разницу в показателях между мин. и макс. временами интервала.
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754812
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
здравствуйте, мне не понятно, что куда менять...) (извините за тупость)
мне нужен последний вариант - по всем таблицам всех схем. пробовал заменять представлением в разных местах, и только ошибку выдает, что я не туда пихаю. Подскажите, пожалуйста
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754825
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenko,

Добрый день.

Для всех таблиц.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT INTO TABLE_SIZE
SELECT 
  CURRENT TIMESTAMP TS
, TABSCHEMA, TABNAME
, SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE
, SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
, SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE
, SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE
, SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE
, SUM(COL_OBJECT_P_SIZE) COL_OBJECT_P_SIZE
FROM SYSIBMADM.ADMINTABINFO
GROUP BY TABSCHEMA, TABNAME;
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754836
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
спасибо большое Вам за помощь! Запустил скрипт, посмотрим, что получится. Можете, пожалуйста, уточнить, если у меня есть партицированные таблицы, размер их тоже однозначно определяется из перечисленных размеров в запросе?
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754894
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenkoесли у меня есть партицированные таблицы, размер их тоже однозначно определяется из перечисленных размеров в запросе?В случае партицированных таблиц есть особенность - SYSIBMADM.ADMINTABINFO.INDEX_OBJECT_*_SIZE не включают информацию о непартиционированных (not partitioned) индексах, если такие есть в базе.
Поэтому, в общем случае запрос должен выглядеть так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
INSERT INTO TABLE_SIZE
SELECT 
  CURRENT TIMESTAMP TS
, T.TABSCHEMA, T.TABNAME
, T.DATA_OBJECT_P_SIZE
, T.INDEX_OBJECT_P_SIZE + COALESCE(I.INDEX_OBJECT_P_SIZE, 0) INDEX_OBJECT_P_SIZE
, T.LONG_OBJECT_P_SIZE
, T.LOB_OBJECT_P_SIZE
, T.XML_OBJECT_P_SIZE
, T.COL_OBJECT_P_SIZE
FROM (
SELECT 
  TABSCHEMA, TABNAME
, SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE
, SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
, SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE
, SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE
, SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE
, SUM(COL_OBJECT_P_SIZE) COL_OBJECT_P_SIZE
FROM SYSIBMADM.ADMINTABINFO
GROUP BY TABSCHEMA, TABNAME
) T
LEFT JOIN (
SELECT TABSCHEMA, TABNAME, SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
FROM TABLE(ADMIN_GET_INDEX_INFO(NULL, NULL, NULL))
WHERE INDEX_PARTITIONING='N'
GROUP BY TABSCHEMA, TABNAME
) I ON I.TABSCHEMA=T.TABSCHEMA AND I.TABNAME=T.TABNAME
;
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754941
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
ругается на все строки с выводом размера таблиц
и выдает ошибку типа "COL_OBJECT_P_SIZE" is not valid in the context where it is used.
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39754959
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenkoругается на все строки с выводом размера таблиц
и выдает ошибку типа "COL_OBJECT_P_SIZE" is not valid in the context where it is used.Значит, в вашей версии базы такое поле не выдается этими функциями / представлением, т.к. в ней нет возможности хранения данных по колонкам.
Исключите это поле из всех команд.
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39755447
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Здравствуйте. С наступившим! )
Вы можете подсказать, это нормально, что на большом объеме таблиц выполнение запроса затягивается на такое долгое время? -примерно 23 000 таблиц и почти полтора часа выполнения.
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39755496
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался, что SYSIBMADM.ADMINTABINFO очень медленно выводит информацию, в сравнении с теми же syscat.indexes, syscat.tables , syscat.tablespaces, которые выводят инфу за секунду, но показывают другие данные по размерам.
здесь ничего не поделать, верно?
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39755660
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenkoразобрался, что SYSIBMADM.ADMINTABINFO очень медленно выводит информацию, в сравнении с теми же syscat.indexes, syscat.tables , syscat.tablespaces, которые выводят инфу за секунду, но показывают другие данные по размерам.
здесь ничего не поделать, верно?
Да, по всем таблицам при больших объемах это может занимать довольно много времени.
В syscat.tables и syscat.indexes информация попадает после сбора статистики на таблицы и их индексы, и она может быть не совсем точная - на некоторые таблицы статистика вообще может быть не собрана, на некоторые - собрана c аппроксимацией (sampled).
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39759452
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
подскажите, пожалуйста, чтобы Ваш последний запрос рассчитал размер только в рамках одной таблицы, мне нужно в конце последней строкой поставить условие?
Код: sql
1.
where T.TABNAME = 'name' and T.TABSCHEMA = 'name'
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39759459
AVRomanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще я пробовал убирать строку
Код: sql
1.
WHERE INDEX_PARTITIONING='N'


и ничего не изменилось. пробовал вместо метки N ставить P, тот же самый результат.
...
Рейтинг: 0 / 0
Аналитика и исторические сведения по изменению таблиц
    #39759480
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AVRomanenkoчтобы Ваш последний запрос рассчитал размер только в рамках одной таблицы, мне нужно ...
Когда таблиц много, а надо вытащить данные по небольшому кол-ву таблиц, то эффективнее должно быть использование табличных функций, а не представлений. Иначе сначала будет сделан расчет по всем таблицам, а только потом выбраны нужные данные.
В примере можно добавлять строки по другим таблицам, если их более одной.
По нескольким таблицам
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
INSERT INTO TABLE_SIZE
SELECT 
  CURRENT TIMESTAMP TS
, A.TABSCHEMA, A.TABNAME
, T.DATA_OBJECT_P_SIZE
, T.INDEX_OBJECT_P_SIZE + COALESCE(I.INDEX_OBJECT_P_SIZE, 0) INDEX_OBJECT_P_SIZE
, T.LONG_OBJECT_P_SIZE
, T.LOB_OBJECT_P_SIZE
, T.XML_OBJECT_P_SIZE
, T.COL_OBJECT_P_SIZE
FROM TABLE (VALUES
  ('MYSCHEMA1', 'MYTABLE1')
--, ('MYSCHEMA2', 'MYTABLE2')
) A (TABSCHEMA, TABNAME)
, TABLE (
SELECT 
  SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE
, SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
, SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE
, SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE
, SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE
, SUM(COL_OBJECT_P_SIZE) COL_OBJECT_P_SIZE
FROM TABLE(ADMIN_GET_TAB_INFO(A.TABSCHEMA, A.TABNAME))
) T
LEFT JOIN TABLE (
SELECT SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE
FROM TABLE(ADMIN_GET_INDEX_INFO('T', A.TABSCHEMA, A.TABNAME))
WHERE INDEX_PARTITIONING='N'
) I ON 1=1;

...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Аналитика и исторические сведения по изменению таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]