Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / no_cpu_costing - как отключить без скрытых параметров? / 16 сообщений из 16, страница 1 из 1
08.06.2018, 09:51
    #39658103
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Запрос с хинтом 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
08.06.2018, 10:05
    #39658112
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
System Statistics
Как правило, достаточно пересобрать NOWORKLOAD статистику, если нет требованиям к разным ресурсным планам и БД, которая на ночь превращается в тыкву сервер отчетов
...
Рейтинг: 0 / 0
08.06.2018, 10:21
    #39658127
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Вячеслав Любомудров 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
08.06.2018, 10:28
    #39658135
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Виноват, не сразу понял, про NOWORKLOAD, особый метод сбора...

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



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

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


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

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


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

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


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

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

KeklikСтесняюсь спросить, а запрос-то переразбирался ?
Есть тестовая система, шаред пул сбрасывал после сбора статистики.
Если речь об этом.
...
Рейтинг: 0 / 0
08.06.2018, 11:41
    #39658199
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Важное замечание, потому что:
Код: 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
08.06.2018, 11:54
    #39658210
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Код: 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
08.06.2018, 12:26
    #39658241
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
В голову ничего не приходит, вот вычитал, что можно установить в ручную параметры системной статистики.
с помощью dbms_stats.set_system_stats
Конечно надо бы попробовать сначала со Start-Stop на реальной нагрузке.
...
Рейтинг: 0 / 0
08.06.2018, 12:36
    #39658253
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Не надо
Оставь только NOWORKLOAD статистику и ее влияние будет минимальным
Если, конечно, ты не выкрутил руки оптимизатору другими параметрами, а то тут уже проскакивало optimizer_index_cost_adj

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

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

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

optimizer_index_cost_adj=100 я упоминал, потому что думал, что он будет влиять
также как "_optimizer_cost_model"='io' - но не вышло.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.04.2021, 10:44
    #40067111
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Столкнулся с проблемой в 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
29.04.2021, 16:20
    #40067322
Keklik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
no_cpu_costing - как отключить без скрытых параметров?
Нашли жука :)...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / no_cpu_costing - как отключить без скрытых параметров? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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