powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / no_cpu_costing - как отключить без скрытых параметров?
16 сообщений из 16, страница 1 из 1
no_cpu_costing - как отключить без скрытых параметров?
    #39658103
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос с хинтом NO_CPU_COSTING имеет гораздо более оптимальный план,
аналогичный эффект дает

Код: plsql
1.
 "_optimizer_cost_model"='io';


по умолчанию стоит 'cpu'


Где оптимизатор берет статистику по CPU?

Пробовал удалять системную статистику, но без результата:
Код: plsql
1.
execute DBMS_STATS.DELETE_SYSTEM_STATS;


Менял optimizer_index_cost_adj=100 - тоже не помогло.

Как добиться, чтобы запрос работал по плану,
который имеем с NO_CPU_COSTING, не меняя скрытых параметров?

Или с другой стороны, если CBO все-таки берет информацию из системной статистики,
может быть надо её более правильно собрать, или даже подкорректировать?
И тут другой вопрос - максимальная нагрузка на систему бывает в конце месяца,
можно ли сейчас какими-то запросами нагрузить базу и запустить сбор системной статистики,
или надо это делать именно в часы реальной нагрузки?
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658112
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
System Statistics
Как правило, достаточно пересобрать NOWORKLOAD статистику, если нет требованиям к разным ресурсным планам и БД, которая на ночь превращается в тыкву сервер отчетов
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658127
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров System Statistics
Как правило, достаточно пересобрать NOWORKLOAD статистику, если нет требованиям к разным ресурсным планам и БД, которая на ночь превращается в тыкву сервер отчетов
Достаточно ли за час собрать?
Может запустить хотя бы что-то тяжеленькое, вроде SELECT с parallel 16 ?
Не очень понятно, как он соберет статистику производительности железа, если оно не будет нагружено.

К теме, вот это "_optimizer_cost_based_transformation" = 'OFF'
также меняет тот запрос в лучшую сторону.

Еще вопрос, правильно ли удаляю системную статистику, просто в sys.aux_stats$ ничего не поменялось
после запуска :

Код: plsql
1.
execute DBMS_STATS.DELETE_SYSTEM_STATS;



И похоже статистика не собиралась нормально со Start и потом Stop, видимо просто запустили однократно:
Код: plsql
1.
execute DBMS_STATS.GATHER_SYSTEM_STATS;



основные параметры SREADTIM, MBRC, MREADTIM, ... не установлены:
sys.aux_stats$

SNAME PNAME PVAL1 PVAL2
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 02-01-2018 12:32
SYSSTATS_INFO DSTOP 02-01-2018 12:32
SYSSTATS_INFO FLAGS 1
SYSSTATS_MAIN CPUSPEEDNW 1484
SYSSTATS_MAIN IOSEEKTIM 10
SYSSTATS_MAIN IOTFRSPEED 4091
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658135
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виноват, не сразу понял, про NOWORKLOAD, особый метод сбора...

Код: plsql
1.
EXEC dbms_stats.gather_system_stats('NOWORKLOAD');



Проверю, спасибо!
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658146
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже запуск сбора с NOWORKLOAD, эквивалентен запуску без параметров:

Код: plsql
1.
2.
EXEC dbms_stats.gather_system_stats('NOWORKLOAD');
EXEC dbms_stats.gather_system_stats;


Не помогло ... подозреваю, что и с нагрузкой(Start-End) не поможет....
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658156
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и при этом всякие DB_FILE_MULTIBLOCK_READ_COUNT лучше оставить по-умолчанию (128 для 8k блока)
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658166
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ставим сейчас 128...

Почему
Код: plsql
1.
execute DBMS_STATS.DELETE_SYSTEM_STATS;


ничего не меняет в sys.aux_stats$ ?
Думал удалю системную статистику, и CBO будет использовать 'io' модель...
Как его принудить к "миру"(к 'io') без скрытых параметров ?
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658173
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikСтавим сейчас 128...

Почему
Код: plsql
1.
execute DBMS_STATS.DELETE_SYSTEM_STATS;


ничего не меняет в sys.aux_stats$ ?Доку ты уже посмотрел?
KeklikКак его принудить к "миру"(к 'io') без скрытых параметров ?Стесняюсь спросить, а запрос-то переразбирался ?
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658181
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровДоку ты уже посмотрел?

Пробежался только, чтобы команды основные запускать.
Не успеваю, посмотрю конечно детальнее.

KeklikСтесняюсь спросить, а запрос-то переразбирался ?
Есть тестовая система, шаред пул сбрасывал после сбора статистики.
Если речь об этом.
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658199
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Важное замечание, потому что:
Код: plsql
1.
2.
3.
Unlike table, index, or column statistics, Oracle does not invalidate already parsed SQL statements when system 
statistics get updated. 
All new SQL statements are parsed using new statistics.


(вот читаю доку, раз ничего не помогает :).
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658210
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
To delete system statistics, run dbms_stats.delete_system_stats(). 
Workload statistics will be deleted and reset to the default noworkload statistics.


Получается, что не удалишь системную статистику, этой процедурой.
Т.е. также как и с обычной статистикой, если ее нет, то используется дефолтная,
и если стоит " _optimizer_cost_model"=cpu , то будет она и
использоваться(дефолтная noworkload).
Поэтому хинт NO_CPU_COSTING и срабатывает.
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658241
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В голову ничего не приходит, вот вычитал, что можно установить в ручную параметры системной статистики.
с помощью dbms_stats.set_system_stats
Конечно надо бы попробовать сначала со Start-Stop на реальной нагрузке.
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658253
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо
Оставь только NOWORKLOAD статистику и ее влияние будет минимальным
Если, конечно, ты не выкрутил руки оптимизатору другими параметрами, а то тут уже проскакивало optimizer_index_cost_adj

Можешь собрать и выложить 10053 (вложением), может кто чего и подскажет
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #39658308
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровНе надо
Оставь только NOWORKLOAD статистику и ее влияние будет минимальным
Если, конечно, ты не выкрутил руки оптимизатору другими параметрами, а то тут уже проскакивало optimizer_index_cost_adj

Можешь собрать и выложить 10053 (вложением), может кто чего и подскажет
Запрос не могу выкладывать...

Вячеслав, я могу настроить запрос хинтами, несколько скрытых параметров его "выравнивают",
но вопрос был в другом.
И похоже он не имеет решения.
Т.е. система всегда будет юзать системную статистику, если стоит модель 'cpu'.
Попробую собрать статистику под нагрузкой.

optimizer_index_cost_adj=100 я упоминал, потому что думал, что он будет влиять
также как "_optimizer_cost_model"='io' - но не вышло.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
no_cpu_costing - как отключить без скрытых параметров?
    #40067111
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой в 19с.
Устанавливаю параметр _optimizer_cost_model"=io , через какое-то время
он меняется на CHOOSE либо CPU.
В init.ora он не установлен.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> alter system set "_optimizer_cost_model"=io;
System altered.

SQL> alter system flush shared_pool;
System altered.


SQL> show parameter _optimizer_cost_model

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_optimizer_cost_model                string      IO


--через час:

SQL> show parameter _optimizer_cost_model

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_optimizer_cost_model                string      CHOOSE




Почему _optimizer_cost_model сам себе режиссер?
...
Рейтинг: 0 / 0
no_cpu_costing - как отключить без скрытых параметров?
    #40067322
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашли жука :)...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / no_cpu_costing - как отключить без скрытых параметров?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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