Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / drop distributions / 11 сообщений из 11, страница 1 из 1
08.11.2011, 09:57
    #37515556
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
добрый день,

подскажите плиз,правильно ли я понимаю,что достаточно один раз сделать drop distributions при upgrade для удаления старых распределений в словаре,а затем в процессе ежедневной работы drop distributions не нужен,достаточно лшь update stat medium&high на нужных столбцах,которые и построят распределения или я что-то не понял?


спасибо большое
...
Рейтинг: 0 / 0
08.11.2011, 10:58
    #37515650
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
нужно ли делать каждый раз так:

update statistics low drop distributions
update statistics medium distributions only

для того,чтобы сначала удалить все распределения,а потом построить их заново по всем таблицам??

или достаточно сделать так один раз при переходе на новую версию,а потом в работе распределения вообще не трогать и делать только medium&high на нужные столбцы с индексами и на этом успокоиться?
...
Рейтинг: 0 / 0
08.11.2011, 11:24
    #37515693
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
вообще как часто надо трогать распределения,если структура таблицы не меняется,т.е. индексы не строятся и не удаляются,идет только лишь изменение данных?


спасибо большое
...
Рейтинг: 0 / 0
08.11.2011, 11:47
    #37515754
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
а вообще я прочитал,что при автоматическом обновлении статистики distributions собираются автоматически,правильно ли я понял?

а если выключить автоматическое обновление, то распределение нужно собирать периодически,потому что статической статистики не хватит.

вот только последний вопрос: распределение нужно по всем столбцам или только по индексным столбцам?
...
Рейтинг: 0 / 0
08.11.2011, 11:49
    #37515760
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
LudeV,

и еще вопрос в эту же тему:

если я удалил из onconfig строки, отвечающие за автоматическое обновление статистики,то СУБД будет считать,что значения по умолчанию или он выключит данный механизм,если он не указан в файле параметров?

спасибо большое
...
Рейтинг: 0 / 0
08.11.2011, 13:46
    #37516064
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
LudeVвообще как часто надо трогать распределения,если структура таблицы не меняется,т.е. индексы не строятся и не удаляются,идет только лишь изменение данных?

зависит от множества факторов:

1.количества изменений или его процентного соотношения от общего числа строк в таблице.
Т.е. если изменилось "много" данных, несколько тысяч строк, но это всего лишь 1% от общего числа строк в таблице, то новое распределение, скорее всего, ничего не изменит. Поэтому, у меня ранее был скрипт на нахождение таблиц, у которых изменилось не менее 10% строк и только для них делался расчет статистики (см. ниже такой пример для более старых версий IDS).
У некоторых здешних участников сбор статистики производится намного чаще, чем раз в сутки, но только на нужных активных таблицах и в заданные промежутки времени.

2. размера БД и общей производительности железа при сборе статистики.
Если у вас полный US по всем базам занимает несколько минут, то не стоит заморачиваться с различными вариантами. Просто периодически выполнять полный вариант в автоматическом режиме (планировщик заданий). Если же время довольно большое или не устраивает, то тогда уже имеет смысл искать различные варианты оптимального (для вашего случая) набора операторов для сбора статистики.

3. версии IDS.
Влияние распределений и статистики иногда сильно отличалось, т.к. оптимизаторы постоянно совершенствовались и их логика менялась. Хорошо помню, как в каких то версиях 7-ки приходилось насильно убивать распределения на мелких таблицах, чтобы оптимизатор ничего о них не знал и не включал на них индексный поиск, а тупо сканировал - это было значительно выгодней.
Т.е. вам нужно знать особенности оптимизатора вашей версии и особенности вашей прикладной системы

4. вашего желания в построении эффективной системы администрирования или требований бизнеса к производительности всей системы в целом.

P.S. Мне почему то кажется, исходя из вашего вопроса, что вы не совсем понимаете назначение распределения данных, как оно собирается и его влияние на производительность...рекомендую разобраться и внимательно почитать соответствующие разделы.

P.P.S. Не проверялся на версиях выше 10-й
Код: plaintext
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
------------------------------------------------------------------
-- update_stat_need_only.sql
--
-- This is an SQL script to generate UPDATE STATISTICS commands 
-- by the difference between real number rows (systabinfo) and known one (systables) 
--      difference > 10% 
-- 
--      IDS 7.3+ 9.2+
--
--     %DBA%\bat\update_stat_opt.bat  db_name  update_stat_need_only
--
-- V.Shulzhenko  DBA_Tools  
------------------------------------------------------------------
--  Отобрать только таблицы, у которых кол-во строк изменилось на 10%
------------------------------------------------------------------
select   s.tabid                        table_id
        ,s.tabname[ 1 , 32 ]                table_name
        ,abs(sum(i.ti_nrows)-s.nrows)   difference
--        ,sum(i.ti_nrows)                real_rows
        ,s.nrows                        known_rows
from  sysmaster:systabinfo i,systables s
where i.ti_partnum = s.partnum
       and s.tabid >  99  and s.tabtype='T'
group by  1 , 2 , 4 
having abs(sum(i.ti_nrows)-s.nrows) > s.nrows* 0 . 1 
into temp _temp_dbatools with no log;
------------------------------------------------------------------
--select * from _temp_dbatools;
select count(*) updated_tables from _temp_dbatools;
------------------------------------------------------------------
--  MEDIUM для всех столбцов, кроме являющихся первыми в индексах
------------------------------------------------------------------
output to '_update_stat_opt.sql' without headings
SELECT UNIQUE 'UPDATE STATISTICS MEDIUM FOR TABLE ', TRIM(s.tabname)||';', '--'|| 2 
FROM systables s, _temp_dbatools t
WHERE t.table_id = s.tabid

------------------------------------------------------------------
--  HIGH для столбцов, являющихся первыми в индексах пользовательских таблиц
------------------------------------------------------------------
UNION
SELECT UNIQUE 'UPDATE STATISTICS HIGH FOR TABLE ', TRIM(s.tabname) || '(' ||
       TRIM(colname) || ');', '--'|| 4 
FROM systables s, syscolumns c, sysindexes i, _temp_dbatools t
WHERE s.tabid = c.tabid
AND i.tabid = s.tabid
AND i.part1 = c.colno
and t.table_id=s.tabid

order by  3 ;
------------------------------------------------------------------
...
Рейтинг: 0 / 0
08.11.2011, 15:43
    #37516396
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
vasilis,

а Вы немогли бы подсказать: автоматический сбор статистики, появившийся в 11.70 собирает распределения?

можно самый главный вопрос: эти распределения нужны по всей таблице или только по индексированным полям?

Вот Вы делаете MEDIUM для всех столбцов, кроме являющихся первыми в индексах, что тоже собирает распределения,потом high для столбцов,которые первые в индексах,т.е. получается если таблица имеет 10 столбцов и 3индекса,то по остальным 7 столбцам тоже надо собирать распределения,правильно ли я понял?
...
Рейтинг: 0 / 0
08.11.2011, 16:07
    #37516468
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
LudeVа Вы немогли бы подсказать: автоматический сбор статистики, появившийся в .70 собирает распределения?

Хотя я уже три года не работаю с информиксом и не сталкивался с механизмом автоматического сбора статистики, который появился в новых версиях, но почти уверен, что распределения собираются. Но какие и как - не подскажу, читайте доки.
LudeVможно самый главный вопрос: эти распределения нужны по всей таблице или только по индексированным полям?

по тем столбцам, по которым вы будете фильтровать результаты. Денис же (кажется, именно вам) уже говорил насчет предикатов.
Чаще всего на таких столбцах уже строят индексы (или они автоматически построены для связующих ключей), но далеко не всегда такие индексы есть по разным причинам.
LudeVВот Вы делаете MEDIUM для всех столбцов, кроме являющихся первыми в индексах, что тоже собирает распределения,потом high для столбцов,которые первые в индексах,т.е. получается если таблица имеет 0 столбцов и 3индекса,то по остальным 7 столбцам тоже надо собирать распределения,правильно ли я понял?
нет, неправильно. Еще раз советую почитать - что такое распределения, как они используются оптимизатором и зачем они нужны вообще.
...
Рейтинг: 0 / 0
08.11.2011, 17:45
    #37516698
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
vasilis,

спасибо большое.

все понял.прочитал в доке
...
Рейтинг: 0 / 0
08.11.2011, 21:35
    #37517041
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
LudeVвсе понял.прочитал в доке
В каком?
...
Рейтинг: 0 / 0
09.11.2011, 09:33
    #37517497
LudeV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
drop distributions
bk0010,

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


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