24.02.2025 12:15
Пришли ко мне сегодня пожаловаться, что статистика собирается в 288 потоков. Версия 19с.
Полез смотреть, все штатно, degree => DBMS_STATS.AUTO_DEGREE. Я, если честно, подозревал, что parallel_degree_limit распространяется и на AUTO_DEGREE. Но это оказалось не так. Запрос, собирающий статистику по таблицам, влезал с хинтом параллелизма 288, причем, по таблицам и индексам.
Расчет, понятное дело, вычисляется традиционным для этого способом
APPROPRIATE PARALLEL DEGREE = CPU_COUNT * PARALLEL_THREADS_PER_CPU
То есть, если вы еще не убрали HyperThreading и не выключили слишком оптимистичный PARALLEL_THREADS_PER_CPU = 2, который по умолчанию, то могут быть неприятные последствия.
В моем случае я просто поставил degree => 16, поскольку, как правило, все что считается в этой базе, должно считаться именно с таким параллелизмом, а многие таблички с установленным degree=1, но в иных случаях можно воспользоваться DBMS_STATS.SET_GLOBAL_PREFS('DEGREE', нужная_степень);
Часовой пояс GMT +3, время: 15:41.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.