Текущее время: Ср, июл 23 2025, 01:10

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ! Прежде чем задавать вопрос, ознакомьтесь со ссылками ниже:

Вопросы по отличиям версий SAP, Add-On, EHP - сюда
Вопросы по SAP Front End (SAPlogon, SAPgui, guiXT и т.д.) - сюда
Вопросы по LSMW - сюда
Вопросы по архивации в SAP - сюда
Вопросы по SAP GRC - сюда
Вопросы по SAP Business Workplace (почте SAP) и SAP Office - сюда
Вопросы по miniSAP (SAP mini basis) - сюда
Вопросы по SAP HANA - сюда
Вопросы по лицензированию продуктов SAP - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Про сбор статистики в RDBMS Oracle 9i+
СообщениеДобавлено: Ср, июл 26 2006, 10:39 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
Хочется обратить внимание коллег, что по крайней мере все мои инсталяции SAP собирают статистику некорректно.(буду рад услышать, что в новых версиях все исправили и все работает, если кто знает - поделитесь знанием).

На данный момент на сайте саппорта САП появились уже патчи для 10g, это значит что есть и инсталяции на 10g. А в 10g вообще не поддерживается Rule Based Optimizer, а есть только Cost Based Optimizer, которому нужна статистика как хлеб.

Так вот. Все эти analyze table и analyze index, которые активно использует SAP не собирают статистику для оптимизатора:

Цитата:
Oracle Corporation strongly recommends that you use the DBMS_STATS package rather than ANALYZE to collect optimizer statistics. That package lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways. Further, the cost-based optimizer, which depends upon statistics, will eventually use only statistics that have been collected by DBMS_STATS. See Oracle9i Supplied PL/SQL Packages and Types Reference for more information on this package.

However, you must use the ANALYZE statement (rather than DBMS_STATS) for statistics collection not related to the cost-based optimizer, such as:

* To use the VALIDATE or LIST CHAINED ROWS clauses
* To collect information on freelist blocks



Итак, задача - использовать DBMS_STATS для сбора статистики.
Тут есть проблема. Статистика собирается очень долго.

Что надо сделать, чтобы дать серверу умереть? :-)

1. Так или иначе необходимо сделать полный сбор статистики схемы в первый раз функцией GATHER_SCHEMA_STATS.
2. Включить мониторинг таблиц схемы функцией ALTER_SCHEMA_TABLE_MONITORING пакета DBMS_STATS. При этом Oracle будет учитывать количество изменений(update/insert/delete) для таблиц схемы
3. В дальнейшем собирать статистику с опцией GATHER STALE. Это позволит пересобирать статистику только для таблиц, в которых количество изменений больше чем 10% от кол-ва строк

На данный момент у меня время сбора статистики на базах размером около 260Гб занимает от 2 до 10 минут.

Только заклинаю, применять это плавно и осторожно. Возможно сначала собирая статистику только по проблемным таблицам, а не сразу схемы. Я лично не использовал в сборе статистики гистограммы, ибо SAP не делает ни одного запроса без связанных переменных.

Если что-то начнет работать криво - можно удалить статистику функциями DELETE_XXX_STATS того же пакета.

Буду рад, если эта информация кому-нибудь поможет. Хотя вероятно большинство из местных админов так или иначе с этим сталкивались, и это всё уже знает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 10:46 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:04
Сообщения: 328
Откуда: MO/Korolev
Ñòðàííî - âñåãäà äóìàë, ÷òî ñòàòèñòèêà ñîáèðàåòñÿ íîðìàëüíî... Ïî-êðàéíåé ìåðå áûëî çàìå÷åíî, ÷òî ñèñòåìà ñ äàâíî íå ñîáèðàåìîé ñòàòèñòèêîé çàìåòíî óñêîðÿëàñü ïðè ñáîðå îíîé ïîñðåäñòâîì ñðåäñòâ SAP (brtools).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 10:51 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
Barbarian написал(а):
Странно - всегда думал, что статистика собирается нормально... По-крайней мере было замечено, что система с давно не собираемой статистикой заметно ускорялась при сборе оной посредством средств SAP (brtools).


Да, такой эффект есть. В Oracle немного хитрят, когда пишут, что ANALYZE не собирает статистику для CBO. Просто она не полная, а в дальнейшем возможно и вообще не будет использоваться CBO.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 14:48 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, фев 21 2005, 12:41
Сообщения: 361
Интересное сообщение!
Но все-таки ANALYZE статистику собирает, и собирает ее корректно.
Вот что пишет по этому поводу SAP (нота 588668) -
DBMS_STATS is a more recent method for creating statistics that is expected to replace ANALYZE in the long term. You can observe the following differences when using DBMS_STATS instead of ANALYZE

Advantages of DBMS_STATS:
-It is possible to use histograms for global statistics of partitioned objects
-Table-internal parallel processing is possible (Note 408532)
-Correct statistics even for columns with identical character strings in the first 32 characters (Note 365480)
-You can transport statistics to other systems
-You can back up and reactivate statistics
Disadvantages of DBMS_STATS:
-DBMS_STATS only determines statistical data that is relevant to CBO. It does not include useful columns that are useful for monitoring purposes, such as AVG_SPACE (See Note 821687), EMPTY_BLOCKS (again, see Note 821687), AVG_SPACE_FREELIST_BLOCKS or NUM_FREELIST_BLOCKS. As a result, you cannot make assertions about space utilization and fragmentation on the basis of DBMS_STATS statistics, for example, or you can only partially do so.
-No statistics for cluster tables
-Oracle 8i: Histograms cannot be created when you use parallel processing.

Аналогично Oracle ничего не пишет про то, что ANALYZE собирает статистику неправильно. Так что DBMS_STATS метод, несомненно, более прогрессивный, но и в ANALYZE ничего некорретного нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 14:48 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, фев 21 2005, 12:41
Сообщения: 361
Интересное сообщение!
Но все-таки ANALYZE статистику собирает, и собирает ее корректно.
Вот что пишет по этому поводу SAP (нота 588668) -
DBMS_STATS is a more recent method for creating statistics that is expected to replace ANALYZE in the long term. You can observe the following differences when using DBMS_STATS instead of ANALYZE

Advantages of DBMS_STATS:
-It is possible to use histograms for global statistics of partitioned objects
-Table-internal parallel processing is possible (Note 408532)
-Correct statistics even for columns with identical character strings in the first 32 characters (Note 365480)
-You can transport statistics to other systems
-You can back up and reactivate statistics
Disadvantages of DBMS_STATS:
-DBMS_STATS only determines statistical data that is relevant to CBO. It does not include useful columns that are useful for monitoring purposes, such as AVG_SPACE (See Note 821687), EMPTY_BLOCKS (again, see Note 821687), AVG_SPACE_FREELIST_BLOCKS or NUM_FREELIST_BLOCKS. As a result, you cannot make assertions about space utilization and fragmentation on the basis of DBMS_STATS statistics, for example, or you can only partially do so.
-No statistics for cluster tables
-Oracle 8i: Histograms cannot be created when you use parallel processing.

Аналогично Oracle ничего не пишет про то, что ANALYZE собирает статистику неправильно. Так что DBMS_STATS метод, несомненно, более прогрессивный, но и в ANALYZE ничего некорретного нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 16:00 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
BillyBird написал(а):
Аналогично Oracle ничего не пишет про то, что ANALYZE собирает статистику неправильно. Так что DBMS_STATS метод, несомненно, более прогрессивный, но и в ANALYZE ничего некорретного нет.


Ну в 10 уже пишет.
Плюс к тому, я не видел ни одной кластеризированной таблицы в SAP :-)

Цитата:
Do not use the COMPUTE and ESTIMATE clauses of ANALYZE to collect optimizer statistics. These clauses are supported for backward compatibility. Instead, use the DBMS_STATS package, which lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways. The cost-based optimizer, which depends upon statistics, will eventually use only statistics that have been collected by DBMS_STATS. See PL/SQL Packages and Types Reference for more information on the DBMS_STATS package.



Кстати, на засыпку. Покажите-ка свой параметр из init.ora
optimizer_index_cost_adj


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 17:08 
Гость
:shock: Пробовал собирать статистику напрямую. Бесполезно, САП удаляет такую статистику по ряду объектов. Т.е. САП признает только свою... хранит информацию о ней и пересобирает тока при определенных условиях.

Так же, при прямом(это когда непосредственно в аракле) анализе индексов выяснилось, что приблизительно 10% индексов имеют рыхлость от 20 до 100% :( !!! Но это сугубо на моей системе...

Примерно, в R3 30 000 индексов и из них 3500 были очень сильно рыхлые.

А про высокие индексы я вообще молчу! Их масса!

Правда анализ шел день! База > 100Gb Потом перестройка + analyze... estimate statistics; Еще день...

Но когда база большая, то на рыхлых индексах пользователям работать не уютно.

Так что, если кто хочет - может сам проверить.

Не совсем согласен с автором топика. Дело в том, что в 8i DBMS_STATS не совсем хорош, а в 10-ке, да там уже тока рулит костбазед и пакет отрабатывает корректно. Поэтому то в 8i многие писали сбор статистики в оракле руками и в основном использовали analyze(аракл сам писал, что analyze более корректен). В 9-ке руля поддерживаются для совместимости, а в 10-ке уже нет.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 26 2006, 17:16 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
Victor написал(а):
:shock: Пробовал собирать статистику напрямую. Бесполезно, САП удаляет такую статистику по ряду объектов. Т.е. САП признает только свою... хранит информацию о ней и пересобирает тока при определенных условиях.


Напрямую это как?
Притом, вам не пофиг, что там SAP признает или нет? Выполнять запрос будет ведь Oracle. Статистику, собранную DBMS_STATS SAP слава богу не трогает :-)

Victor написал(а):
Не совсем согласен с автором топика. Дело в том, что в 8i DBMS_STATS не совсем хорош, а в 10-ке, да там уже тока рулит костбазед и пакет отрабатывает корректно. Поэтому то в 8i многие писали сбор статистики в оракле руками и в основном использовали analyze(аракл сам писал, что analyze более корректен). В 9-ке руля поддерживаются для совместимости, а в 10-ке уже нет.


Товарищам с 8i могу только посочувствовать и пожелать скорейшего мигрирования. :D

Для восьмерки да, я бы ничего делать не стал :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 27 2006, 09:08 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, фев 21 2005, 12:41
Сообщения: 361
Цитата:
Пробовал собирать статистику напрямую. Бесполезно, САП удаляет такую статистику по ряду объектов. Т.е. САП признает только свою... хранит информацию о ней и пересобирает тока при определенных условиях.

По поводу использования DBMS_STATS есть ноты (например, 408532). Судя по всему все САП собирает и прекрасно использует. Но не проверял )
По поводу цитаты, которую приводит уважаемый hell. В ней написано, что ANALYZE - устаревший метод и в конце концов от него откажутся. Но ничего не написано про то, что он работает некорректно и собирает не ту статистику. Это я и имел в виду.
Парамер optimizer_index_cost_adj - 10.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 27 2006, 09:40 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
BillyBird написал(а):
Цитата:
Пробовал собирать статистику напрямую. Бесполезно, САП удаляет такую статистику по ряду объектов. Т.е. САП признает только свою... хранит информацию о ней и пересобирает тока при определенных условиях.

По поводу использования DBMS_STATS есть ноты (например, 408532). Судя по всему все САП собирает и прекрасно использует. Но не проверял )
По поводу цитаты, которую приводит уважаемый hell. В ней написано, что ANALYZE - устаревший метод и в конце концов от него откажутся. Но ничего не написано про то, что он работает некорректно и собирает не ту статистику. Это я и имел в виду.
Парамер optimizer_index_cost_adj - 10.



Во всяком случае, даже при использовании ANALYZE, SAP собирает ее по одному ему известному алгоритму :-) Не по всей схеме - это явно.

Плюс. Я не зря спросил про параметр. Нормальное его значение при собранной системной статистике - 100. Системную статистику можно собрать только DBMS_STATS.

BRCONNECT "как-то там" умеет DBMS_STATS. Но мне кажется, что намного удобнее делать это без искуственного интеллекта сапа.

Плюс к тому, разница во времени при сборе DBMS_STATS может доходить до 4-5 раз, в зависимости от опций, с которыми ее собирать.

Собственно, чего хотел сказать - не надо доверять САПу никаких действий с базой, кроме может бэкапа(если он вас устраивает). Ибо все гораздо эффективней и гибче реализовать без всяких прослоек.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июл 27 2006, 09:40 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, янв 16 2006, 12:59
Сообщения: 40
Самая полная нота по этому всему - 588668


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB