Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Аналитика и исторические сведения по изменению таблиц / 15 сообщений из 15, страница 1 из 1
28.12.2018, 10:42
    #39754395
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Здравствуйте.
Необходимо предоставить данные, которые отображают тенденцию роста таблиц и схем в целом для того, чтобы можно было прогнозировать, каких размеров они будут через промежуток времени.
Требуется Ваша помощь в разработке данного отчета.
Поскольку опыта работы с DB2 нет от слова "совсем" (хоть и есть знания в SQL), буду рад даже подсказке, в каком направлении двигаться.
Возможно ли собрать необходимые данные для дальнейшего анализа и расчета?
...
Рейтинг: 0 / 0
28.12.2018, 10:54
    #39754406
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Есть предположение, как это сделать. На примере одной таблицы.
1) получить размер таблицы
2) получить активность таблицы (количество вносимых записей за интервал). но тут есть нюансы и недопонимание. Во-первых, возможно ли это сделать, и, если да, то этот показатель средний за всю историю жизни таблицы, или что-то иное?
3) перемножить п1. и п.2.
Верно ли я думаю?
...
Рейтинг: 0 / 0
28.12.2018, 15:42
    #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
29.12.2018, 10:06
    #39754812
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Mark Barinstein,
здравствуйте, мне не понятно, что куда менять...) (извините за тупость)
мне нужен последний вариант - по всем таблицам всех схем. пробовал заменять представлением в разных местах, и только ошибку выдает, что я не туда пихаю. Подскажите, пожалуйста
...
Рейтинг: 0 / 0
29.12.2018, 10:42
    #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
29.12.2018, 11:19
    #39754836
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Mark Barinstein,
спасибо большое Вам за помощь! Запустил скрипт, посмотрим, что получится. Можете, пожалуйста, уточнить, если у меня есть партицированные таблицы, размер их тоже однозначно определяется из перечисленных размеров в запросе?
...
Рейтинг: 0 / 0
29.12.2018, 13:09
    #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
29.12.2018, 14:12
    #39754941
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Mark Barinstein,
ругается на все строки с выводом размера таблиц
и выдает ошибку типа "COL_OBJECT_P_SIZE" is not valid in the context where it is used.
...
Рейтинг: 0 / 0
29.12.2018, 14:49
    #39754959
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
AVRomanenkoругается на все строки с выводом размера таблиц
и выдает ошибку типа "COL_OBJECT_P_SIZE" is not valid in the context where it is used.Значит, в вашей версии базы такое поле не выдается этими функциями / представлением, т.к. в ней нет возможности хранения данных по колонкам.
Исключите это поле из всех команд.
...
Рейтинг: 0 / 0
02.01.2019, 08:44
    #39755447
AVRomanenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитика и исторические сведения по изменению таблиц
Mark Barinstein,

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


и ничего не изменилось. пробовал вместо метки N ставить P, тот же самый результат.
...
Рейтинг: 0 / 0
14.01.2019, 18:00
    #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
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Аналитика и исторические сведения по изменению таблиц / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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