Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
При каких операциях в 10g изменяется статистика на объекты схем пользователей?
Знаю, она меняется при:
dbms_stats
analyze
exchange partition
rebuild index compute statistics

При truncate я не заметил изменений на примере таблицы с одним полем Number.
Делал вставку 1-й записи, сбор статистики, экспорт статистики в таблицу Т1, truncate, экспорт статистики в таблицу T2, сравнение данных в таблицах Т1 и Т2 не нашел.
29 янв 08, 14:45    [5216377]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Наверное нужно уточнить вопрос.
Кагда меняется статистика без использования пакетов like 'DBMS%'.
Т.е. при DML & DDL операциях.
29 янв 08, 15:12    [5216566]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Aliona
Member

Откуда: Питер
Сообщений: 4023
надо бы ознакомиться с вопросом, что такое вообще статистика.
У вас, кажется, в этом вопросе полная путаница.
29 янв 08, 16:04    [5216903]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Aliona
надо бы ознакомиться с вопросом, что такое вообще статистика.
У вас, кажется, в этом вопросе полная путаница.

У Вас тоже
Автор умел ввиду это:
Oracle® Database Administrator's Guide
10g Release 2 (10.2)
15 Managing Tables
Automatically Collecting Statistics on Tables
The PL/SQL package DBMS_STATS lets you generate and manage statistics for cost-based optimization. You can use this package to gather, modify, view, export, import, and delete statistics. You can also use this package to identify or name statistics that have been gathered.

Formerly, you enabled DBMS_STATS to automatically gather statistics for a table by specifying the MONITORING keyword in the CREATE (or ALTER) TABLE statement. Starting with Oracle Database 10g, the MONITORING and NOMONITORING keywords have been deprecated and statistics are collected automatically. If you do specify these keywords, they are ignored.

Monitoring tracks the approximate number of INSERT, UPDATE, and DELETE operations for the table since the last time statistics were gathered. Information about how many rows are affected is maintained in the SGA, until periodically (about every three hours) SMON incorporates the data into the data dictionary. This data dictionary information is made visible through the DBA_TAB_MODIFICATIONS,ALL_TAB_MODIFICATIONS, or USER_TAB_MODIFICATIONS views. The database uses these views to identify tables with stale statistics.

To disable monitoring of a table, set the STATISTICS_LEVEL initialization parameter to BASIC. Its default is TYPICAL, which enables automatic statistics collection. Automatic statistics collection and the DBMS_STATS package enable the optimizer to generate accurate execution plans.

29 янв 08, 18:29    [5217835]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Попытаюсь более детально описать ситуацию.
Есть некая последовательность DML & DDL операций над набором таблиц и их индексов, в которую не входит использование пакетов like 'SYS.DBMS%'. Эта последовательность выполняется периодически. В последовательности операций участвует несколько таблиц которые периодически подвергаются операции truncate. Некоторые индексы в последовательности операций подвергаются переводу в состояние UNUSABLE с последующим REBUILD. Некоторые таблицы подвергаются операции exchange partition. Таблицы достаточно большие и выполнять сбор статистики на все таблицы-участники при каждом выполнении последовательности операций весьма трудоемко. Учитывая, что данные, хоть и обновляются, но в контексте статистики бд их можно считать одинаковыми, предполагается использовать собранную однажды статистику на несколько циклов последовательностей операции - т.е. попытаться сэкономить время за счет более редких операций сбора статистики.
Отсюда вопрос:
Знает ли кто-нибудь(ссылка на документацию,... все что угодно) полный перечень DDL операций которые изменяют статистику на таблицу\индекс.
Про exchange partition & rebuild index я знаю сам.
Про truncate я попробовал, вроде статистика не меняется, но окончательной уверенности нет.
Про супер возможность 10g на предмет автоматического сбора статистики можно не писать, поскольку используются средства пакета DBMS_STATS.

Вообще-то вопрос достаточно интересный, поскольку везде кричат что статистику нужно собирать и даже придумали супер job который её собирает и даже включили его по умолчанию, а вот полного перечня операций, который влияет на саму статистику найти мне пока не удается.
30 янв 08, 10:34    [5219454]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Aliona
У вас, кажется, в этом вопросе полная путаница.

Если Вы считаете что у Вас полная ясность, ответьте мне плс. Чтобы у меня тоже ясность появилась. Поделитесь пожалуйста своими знаниями в этом вопросе.
30 янв 08, 17:45    [5223345]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
mike_sql_ru
... поскольку везде кричат что статистику нужно собирать ...

А настоящие пацаны (челябинские DBA) настолько суровы, что вообще придмывают эту статистику для критичных таблиц, а от исходных данных им нужно только приблизительное количество данных
30 янв 08, 18:41    [5223666]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
TiG
Member

Откуда:
Сообщений: 780
mike_sql_ru
Вообще-то вопрос достаточно интересный, поскольку везде кричат что статистику нужно собирать и даже придумали супер job который её собирает и даже включили его по умолчанию, а вот полного перечня операций, который влияет на саму статистику найти мне пока не удается.

нда :) вы точно понимаете что означает эта самая "статистика" ? судя по вопросу - нет. это некоторая служебная информация описывающая сами данные (за исключением системной статистики), а значит любые изменения ваших данных (т.е. любая операция их изменяющая) могут повлиять на эту самую статистику
mike_sql_ru
Попытаюсь более детально описать ситуацию.
Есть некая последовательность DML & DDL операций над набором таблиц и их индексов, в которую не входит использование пакетов like 'SYS.DBMS%'. Эта последовательность выполняется периодически. В последовательности операций участвует несколько таблиц которые периодически подвергаются операции truncate. Некоторые индексы в последовательности операций подвергаются переводу в состояние UNUSABLE с последующим REBUILD. Некоторые таблицы подвергаются операции exchange partition. Таблицы достаточно большие и выполнять сбор статистики на все таблицы-участники при каждом выполнении последовательности операций весьма трудоемко. Учитывая, что данные, хоть и обновляются, но в контексте статистики бд их можно считать одинаковыми, предполагается использовать собранную однажды статистику на несколько циклов последовательностей операции - т.е. попытаться сэкономить время за счет более редких операций сбора статистики.

а вы уверены что старая статистика будет адекватна новым данным ? вообще то надежнее при массовых загрузках/изменениях перед дальнейшим использованием пересобрать статистику по этим таблицам. а в некоторых случаях это просто необходимо (к примеру заливаете пару миллиончиков строк в пустую секцию большой таблицы, а ваш single-partition select считает что секция то пустая)
30 янв 08, 19:01    [5223764]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
TiG

нда :) вы точно понимаете что означает эта самая "статистика" ? судя по вопросу - нет.

Номер два....
Господи ты боже мой. Я что, не туда попал?
Давайте не будем обсуждать что я понимаю под понятием статистики и насколько это правильно.
Меня интересует:
ПЕРЕЧЕНЬ DDL ОПЕРАЦИЙ, КОТОРЫЙ МЕНЯЕТ СТАТИСТИКУ. СТА-ТИС-ТИ-КУ.
Можно задать вопрос таким образом:
ПОСЛЕ КАКИХ DDL ОПРЕРАЦИЙ ОПТИМИЗАТОР СЧИТАЕТ СТАТИСТИКУ УТРАТИВШЕЙ СИЛУ
(может он галку каку-то ставит, что мол объект изменился и статистика не действительна, хотя я сомневаюсь, что это вообще существует, точнее, не помню упоминаний о таком)
Только это, больше ничего. Меня не интересуют примеры и вольные рассуждения на предмет того, что такое статистика и что будет если...
31 янв 08, 09:47    [5224807]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Dimka9
Member

Откуда: Владивосток
Сообщений: 1851
mike_sql_ru

ПОСЛЕ КАКИХ DDL ОПРЕРАЦИЙ ОПТИМИЗАТОР СЧИТАЕТ СТАТИСТИКУ УТРАТИВШЕЙ СИЛУ

imho
Ни после каких.
Если она есть, он ее использует. А насколько она соответствует действительности... это уже твои проблемы.
31 янв 08, 09:55    [5224866]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
RA\/EN
А настоящие пацаны (челябинские DBA) настолько суровы, что вообще придмывают эту статистику для критичных таблиц, а от исходных данных им нужно только приблизительное количество данных

Челяба рулит!!!
Может быть суровые челябенские DBA смогут перечислить DDL операции изменяющие статистику. Если квалификация позволяет подменять статистику(т.е. высчитывать её самостоятельно), то предполагаю определенную ясность в данном вопросе. На вас одна надежда, на г.Aliona & г.TiG надежды просто нет.
31 янв 08, 09:55    [5224870]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Dimka9
mike_sql_ru

ПОСЛЕ КАКИХ DDL ОПРЕРАЦИЙ ОПТИМИЗАТОР СЧИТАЕТ СТАТИСТИКУ УТРАТИВШЕЙ СИЛУ

imho
Ни после каких.
Если она есть, он ее использует. А насколько она соответствует действительности... это уже твои проблемы.


Предлагаю пересмотреть свою точку зрения после прочтения metalink doc_id=101561.1
Там разговор про exchange partition, которая вызывается командой alter table - DDL операция.
Признаться, сам недавно её прочитал и подзадумался. Собственно, по этому и пришу сюда.
31 янв 08, 10:08    [5224973]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
TX
Member

Откуда:
Сообщений: 628
mike_sql_ru
RA\/EN
А настоящие пацаны (челябинские DBA) настолько суровы, что вообще придмывают эту статистику для критичных таблиц, а от исходных данных им нужно только приблизительное количество данных

Челяба рулит!!!
Может быть суровые челябенские DBA смогут перечислить DDL операции изменяющие статистику. Если квалификация позволяет подменять статистику(т.е. высчитывать её самостоятельно), то предполагаю определенную ясность в данном вопросе. На вас одна надежда, на г.Aliona & г.TiG надежды просто нет.



Молодой человек мы все тут уже трепещим от восторга но понять зачем оно вам так вразумительно и не смогли )


автор
Может быть суровые челябенские DBA смогут перечислить DDL операции


эээ, если вы имеете ввиду alter table +/- колонка то после того статитстику можно выкинуть думаю (что скажет Elic ?)

что вам мешает воткнуть dynamic_sampling hint если уж так хочеться чего то красивого ?
31 янв 08, 10:12    [5225012]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Elic
Member

Откуда:
Сообщений: 29978
TX
эээ, если вы имеете ввиду alter table +/- колонка то после того статитстику можно выкинуть думаю (что скажет Elic ?)
Сомневаюсь, что он это имел в виду.
А ты мог бы сам проверить, что новый столбец добавляется без статистики, а старый удаляется вместе со своей статистикой. Чисто логически подумай, могут ли эти действия хоть как-то повлиять на прочую статистику таблицы :)
31 янв 08, 10:33    [5225219]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
TX

Молодой человек мы все тут уже трепещим от восторга но понять зачем оно вам так вразумительно и не смогли

1. Я старая девка.
2. Не надо трепетать от восторга от желания понять, если вы можете ответить на заданный вопрос - прошу Вас.

Вот это
TX

что вам мешает воткнуть dynamic_sampling hint если уж так хочеться чего то красивого ?


относится, полагаю, к этому:
mike_sql_ru

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


Про +/- колонка - понятно, что статистики по вновь созданной колонке нет, однако заявление
TX
то после того статитстику можно выкинуть думаю

предполагаю надуманным.
31 янв 08, 10:44    [5225336]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Dimka9
Member

Откуда: Владивосток
Сообщений: 1851
mike_sql_ru

Предлагаю пересмотреть свою точку зрения после прочтения metalink doc_id=101561.1

Не проникся. Ну где-то ее не стало, а где-то она добавилась. Так это не оптимизатор. Это механизм exchange так работает. А оптимизатор видит user_tables, user_tab_partitions... - и в них галок (statistics_bad=y) никто не проставляет.

Начинаю понимать куда ты клонишь. У вас что куча юзеров колбасит постоянно кучу всевозможных бесконтрольных DDL ? Так тут о статистике в последнюю очередь стоит думать.

Если я DBA, то перед каждым DDL думаю о последствиях и статистике в том числе. Ну а если чисто теоретически... флаг в руки. Лично мне не интересен полный список DDL который "двигает" статистические данные.
31 янв 08, 10:47    [5225373]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Dimka9
Лично мне не интересен полный список DDL который "двигает" статистические данные.

Именно в том и дело, что мне он интересен.
31 янв 08, 10:58    [5225496]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Dimka9
mike_sql_ru

Предлагаю пересмотреть свою точку зрения после прочтения metalink doc_id=101561.1

Не проникся. Ну где-то ее не стало, а где-то она добавилась. Так это не оптимизатор. Это механизм exchange так работает. А оптимизатор видит user_tables, user_tab_partitions... - и в них галок (statistics_bad=y) никто не проставляет.

Согласен, спасибо. Имел в виду несколько другое. В контексте вопроса считал "изменение статистики"="statistics_bad=y "
А какое нужно совершить действие чтобы поле statistics_bad приняло значение <> "y" ?
Это в принципе возможно?
31 янв 08, 11:06    [5225574]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
mike_sql_ru

rebuild index compute statistics

в 10g по умолчанию достаточно просто rebuild.
31 янв 08, 11:08    [5225594]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Блин, ошибся
А какое нужно совершить действие чтобы поле statistics_bad приняло значение = y ?
Это в принципе возможно?
31 янв 08, 11:08    [5225596]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
To Timm
Timm
mike_sql_ru

rebuild index compute statistics

в 10g по умолчанию достаточно просто rebuild.

Именно, именно то, что интересует.
Спасибо огромное, не знал.
Пиши исчо :))

PS А то я уж начал думать о себе нехорошее...
31 янв 08, 11:14    [5225655]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
Этанол Эталонович
Member

Откуда: Водкозажопск
Сообщений: 253
RA\/EN
А настоящие пацаны (челябинские DBA)
Руки прочь от земляков :)


mike_sql_ru
При каких операциях в 10g изменяется статистика на объекты схем пользователей?
Открываешь PDF-файл доки SQL Reference и ищещь по слову statistics - какие проблемы?
31 янв 08, 11:15    [5225663]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
TX
Member

Откуда:
Сообщений: 628
Elic
TX
эээ, если вы имеете ввиду alter table +/- колонка то после того статитстику можно выкинуть думаю (что скажет Elic ?)
Сомневаюсь, что он это имел в виду.
А ты мог бы сам проверить, что новый столбец добавляется без статистики, а старый удаляется вместе со своей статистикой. Чисто логически подумай, могут ли эти действия хоть как-то повлиять на прочую статистику таблицы :)



ну я имел ввиду что если в условии будет заюзана новая колонка то ой )

при удалении колонки да, я погорячился
31 янв 08, 11:41    [5225909]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
newr
Member

Откуда: Веллингтон, НЗ
Сообщений: 208
Ну мы тоже придумываем статистику. Ну и что.
Просто если тупой оптимизатор принимает совершенно идиотские решения, приложение вырубать не хочется (изменение пакетов повалит его нах), да и хинтовать *типа* неспортивно. Да, есть аутлайны. Что с ними происходит от изменения литералов все тоже знаем... ;-)

mike_sql_ru
RA\/EN
А настоящие пацаны (челябинские DBA) настолько суровы, что вообще придмывают эту статистику для критичных таблиц, а от исходных данных им нужно только приблизительное количество данных

Челяба рулит!!!
Может быть суровые челябенские DBA смогут перечислить DDL операции изменяющие статистику. Если квалификация позволяет подменять статистику(т.е. высчитывать её самостоятельно), то предполагаю определенную ясность в данном вопросе. На вас одна надежда, на г.Aliona & г.TiG надежды просто нет.
31 янв 08, 13:16    [5226717]     Ответить | Цитировать Сообщить модератору
 Re: когда меняется статистика на таблицы и индексы  [new]
mike_sql_ru
Member

Откуда:
Сообщений: 41
Up и небольшое резюме.
Итак, перечень DDL операций которые вляют на статистику таблицы\индекса сводится к
1. alter table exchange partition - обмен сегментов вместе со статистикой(глобальная не изменяется)
2. alter table split partition - статистика удаляется на партиции, участвующие в операции(глобальная не изменяется)
3. alter index rebuild compute statistics - сбор во время создания индекса
4. alter index rebuild(_optimizer_compute_index_stats=true) - то же что 3, но автоматом

Может кто добавит?
31 янв 08, 14:22    [5227302]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить