powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему не используется SUMMARY TABLE ?
25 сообщений из 28, страница 1 из 2
Почему не используется SUMMARY TABLE ?
    #32395155
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база статистики (содержит около 500 000 записей за один день) и SUMMARY TABLE по этой таблицы для быстрого подведения итогов. Сум.таблица содержит в себе последних 40 дней. Вот таблицы:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE NULLID.STAT  (
		  DATE DATE , 
		  HOUR SMALLINT , 
		  IPIN CHAR( 15 ) , 
		  IPOUT CHAR( 15 ) , 
		  Traffik DOUBLE )

create summary table nullid.stat_summary as (
select date, 
Sum(Traffik) as Traffik 
from nullid.stat 
where date>(CURRENT DATE- 40  day) 
group by date
) data initially deferred refresh deferred




И при выполнении запроса

Код: plaintext
select date, Sum(Traffik) from nullid.stat where date>'2004-01-30' group by date


выполнение дооолгое, совсем не такое как если выполнить

Код: plaintext
select date, Sum(Traffik) from nullid.stat_summary where date>'2004-01-30' group by date


Refresh table выполняю после обновления таблицы всегда. Почему не выполняется запрос к суммари табле ?
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32395966
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А статистика свежая???
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32396249
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что значит свежая? Если имеется в виду - выполняетсяли refresh table после каждого обновления - ДА!
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32397061
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свежая означает RUNSTATS когда последни раз запускали???
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32397668
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно с этого места поподробнее.
Дело в том, что в умных книжках (rebook) ничего нет про RUNSTATS+SumTab. В хелпе я действительно нашел упоминание про RUNSTATS + SumTab. Вот оно

"Since summary tables behave like regular tables in many ways, the same considerations for optimizing data access using tablespace definitions, creating indexes, and issuing RUNSTATS apply to summary tables. "

и все... Это не отвечает на вопросы:

1. Как часто надо запускать RUNSTATS (если учесть что в формуле выбора SumTab есть параметр DATE)

2. С какими параметрами

В любом случае даже после выполнения RUNSTATS к таблице исходной и summary - начего не поменялось.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32397854
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2expln -d SAMPLE -stmtfile xz.sql -terminator @ -o xz.out

где
xz.sql файл с вашим запросом
xz.out это то что ты должен сюда запостить.
@ разделитель операторов.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32397960
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожелению этот DB2 сервер этого проекта работает на версии 7.2
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32398559
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот на восьмом сервере создал нечто похожее и запустил. Исходные данные такие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE Trace  (
ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( START WITH + 1  , INCREMENT BY + 1  , NO CACHE ) , 
Date Date, 
Size Integer, 
From Char( 120 ),
To Char( 120 ),
.....
IsOnlySPAM Char( 1 ) default 'S',
primary key(ID) )

и SUMMARY TABLE

Код: plaintext
1.
2.
3.
4.
5.
create summary table trace_sum_last40 as (
select Date, From , To, Sum(Size) as Size  
from trace
where IsOnlySPAM<>'S' AND  date > (CURRENT DATE -  40  day)
group by Date, From , To
) data initially deferred refresh deferred

вот запрос (который по логике должен быть перенаправлен в trace_sum_last40 )
Код: plaintext
1.
2.
3.
select date, Sum(size) 
  from trace 
  where IsOnlySPAM<>'S' and date>'2004-01-11' 
  group by date

вот ответ утилиты:

Isolation Level = Cursor Stability
Blocking = Block Unambiguous Cursors
Query Optimization Class = 5

Partition Parallel = No
Intra-Partition Parallel = No

SQL Path = "SYSIBM", "SYSFUN", "SYSPROC", "DB2ADMIN"


SQL Statement:

select date, Sum(size)
from trace
where IsOnlySPAM<>'S' and date>'2004-01-11'
group by date


Section Code Page = 1251

Estimated Cost = 8448,232422
Estimated Cardinality = 23,000000

Access Table Name = DB2ADMIN.TRACE ID = 2,7
| #Columns = 2
| Relation Scan
| | Prefetch: Eligible
| Lock Intents
| | Table: Intent Share
| | Row : Next Key Share
| Sargable Predicate(s)
| | #Predicates = 2
| | Insert Into Sorted Temp Table ID = t1
| | | #Columns = 3
| | | #Sort Key Columns = 1
| | | | Key 1: DATE (Ascending)
| | | Sortheap Allocation Parameters:
| | | | #Rows = 23
| | | | Row Width = 21
| | | Piped
| | | Buffered Partial Aggregation
Sorted Temp Table Completion ID = t1
Access Temp Table ID = t1
| #Columns = 3
| Relation Scan
| | Prefetch: Eligible
Final Aggregation
| Group By
| Column Function(s)
Return Data to Application
| #Columns = 2

End of section
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32399150
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Статистику по обеим таблицам собрана или нет???
2) Статистику вам лучше собрать со всеми опциями
3) Статистику нужно обновлять регулярно. Насколько зависит от того как интенсивно меняется таблица
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32399354
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор 1) Статистику по обеим таблицам собрана или нет???
ДА.

автор2) Статистику вам лучше собрать со всеми опциями

Я запускаю
runstats on table db2admin.Trace and indexes all
runstats on table db2admin.Trace_sum_last40 and indexes all

Какие еще параметры?
Что влияет на сум.табл ? где почитать?

автор3) Статистику нужно обновлять регулярно. Насколько зависит от того как интенсивно меняется таблица

После каждого "refresh table db2admin.Trace_sum_last40" получается ?
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32399847
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что с уровнем оптимизации запроса???
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32399900
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй заодно

RUNSSTATS ON TABLE NULLID.STAT WITH DISTRIBUTION
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32400359
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уровень деволтовый - 5

"RUNSSTATS ON TABLE NULLID.STAT WITH DISTRIBUTION" не помогло

попробовал создать SumTbl вообще без where (смотри верхний пример)

Код: plaintext
1.
2.
3.
4.
5.
create summary table nullid.stat_summary as (
select date, 
Sum(Traffik) as Traffik 
from nullid.stat 
group by date
) data initially deferred refresh deferred


всеравно при вызове
Код: plaintext
select date, Sum(Traffik) from nullid.stat where date>'2004-01-30' group by date


не используется. У уже не знаю что и думать.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32401330
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй

create summary table nullid.stat_summary as (
select date,
Sum(Traffik) as Traffik,
Count(*) as Connections,
from nullid.stat
group by date
) data initially deferred refresh deferred
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32405932
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не помогло
Код: plaintext
select Date, Sum(T_ALL) from nullid.stat where date>'2004-01-15' group by date
выполняется МИНУТЫ

а
Код: plaintext
select Date, Sum(T_ALL) from nullid.stat_summary where date>'2004-01-15' group by date
около 3 сек.

это после всех
Код: plaintext
1.
2.
refresh table ...
RUNSTATS ON TABLE NULLID.stat WITH DISTRIBUTION and indexes all
RUNSTATS ON TABLE NULLID.stat_summary WITH DISTRIBUTION and indexes all


какие еще идеи?
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32406006
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Сount включил в запрос???
2) Попробуй заменить > на >=
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32406154
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Нет
2. Нет

:(
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32406158
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в смысле
1. не помогло
2. не помогло
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32409564
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
побольше RTFM-а,

например:

8.1, sql reference, create table:

A REFRESH DEFERRED system-maintained materialized query table defined with ENABLE QUERY OPTIMIZATION can be used to optimize the processing of queries if CURRENT REFRESH AGE is set to ANY and CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION is set such that it includes system-maintained materialized query tables. A REFRESH DEFERRED user-maintained materialized query table defined with
ENABLE QUERY OPTIMIZATION can be used to optimize the processing of queries if CURRENT REFRESH AGE is set to ANY and CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION is set such that it includes user-maintained materialized query tables. A REFRESH IMMEDIATE materialized query table defined with ENABLE QUERY
OPTIMIZATION is always considered for optimization. For this optimization to be able to use a REFRESH DEFERRED or a REFRESH IMMEDIATE materialized query table, the fullselect must conform to certain rules in addition to those already described. The fullselect must:
– be a subselect with a GROUP BY clause or a subselect with a single table
reference
– not include DISTINCT anywhere in the select list
– not include any special registers
– not include functions that are not deterministic.
If the query specified when creating a materialized query table does not
conform to these rules, a warning is returned (SQLSTATE 01633).
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32411077
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, Виктор Вы правы я действительно не сделал этого. После установки в ANY - все заработало.

Только появилась МААААЛЕНЬКАЯ неприятность при работе с ними. В WHERE таблицы нельзя вводить параметр по которому группируешь (и в доке этого я не видел).

Т.е. в моем примере нельзя создавать summary table на последние 40 дней (что весьма хотелосьбы, зачем кешировать все данные).

Т.е. если создать таблицу :
Код: plaintext
1.
2.
3.
4.
create summary table trace_sum_last40 as (
  select Date, Sum(Size) as Size  
  from trace   where IsOnlySPAM<>'S' AND  date > (CURRENT DATE -  40  day)
group by Date
) data initially deferred refresh deferred

то эта СТ не будет подхватываться

при запросе
Код: plaintext
select date, Sum(Size) from trace where IsOnlySPAM<>'S' AND date>'2004-02-10' group by date


Даже если напрямую задать дату
Код: plaintext
1.
2.
3.
4.
create summary table trace_sum_last40 as (
  select Date, Sum(Size) as Size  
  from trace   where IsOnlySPAM<>'S' AND  date > '2003-01-10'
group by Date
) data initially deferred refresh deferred

то все-равно не будет

А если создавать вообще без даты
Код: plaintext
1.
2.
3.
4.
create summary table trace_sum_last40 as (
  select Date, Sum(Size) as Size  
  from trace  where IsOnlySPAM<>'S' 
group by Date
) data initially deferred refresh deferred

то СТ срабатывает (естественно каждый раз я выполнял и refresh и runstats)

Есть коментарии?
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32411575
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искусственный интеллект еще не создан, а приемы, примененные Ibm-ерами, стало быть, не справились. Не понимаю, зачем Вам эта борьба за байты. Что 40 записей, что 4000 (размер за более чем 10 лет!) - пренебрежимо малые размеры по нынешним понятиям.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32411581
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, напоминаю, что current date не является determenistic. Что касается константы, то странно, что оптимизатор с этим не справился. Возможно, дело в том, что 'yyyy-mm-dd' все-таки строка, а не дата, и в этом какие-то затруднения, а с численной колонкой было бы по-другому?
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32411585
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню даже, current date - это special register.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32411927
kostya0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет борьбы за байты - Вы не правы. В рабочем варианте группировка КОНЕЧНО не только по дате а по 10 полям.

Исходная таблица в день содержит 1 000 000 (1 милион) записей а сумари тейбл за день примерно 30 000. Соответственно если хранить хотябы 1 год, то объемы не хилые. А если 10?

Предлагаете дату задавть числом? Я подумаю... посмотрим.
...
Рейтинг: 0 / 0
Почему не используется SUMMARY TABLE ?
    #32412666
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, поможет ли замена date на number - это просто смутная мысль, которую можно проверить. Вспомнил, что в 8.1 на VIEW с UNION ALL оптимизатор-таки опознает даты (здесь был пример в одном из старых топиков).

Если надо непременно ограничение "за последние XXX дней", то без не-deterministic функции или special register не обойтись, а это значит, что к summary table можно будет обращаться только напрямую.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему не используется SUMMARY TABLE ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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