|
|
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Все, что я сделал в топике, это поправил: Bobby Z. Код: plsql 1. приведёт к тому, что запросы без хинтов будут выполняться последовательно. Не поправил, а подловил искусственным и не очень уместным примером с force parallel, который я парировал ещё более искусственным event 10384. Отвечал я на простой вопрос: есть какой-то флаг оптимизатору, чтоб он распараллеливал с заранее заданной степенью параллелизма? DEGREE объекта - как раз такой флаг, оптимизатор принимает его во внимание при рассчёте степени параллелизма в нормальных условиях по умолчанию (а других задано не было). Ваши собственные эксперименты, приведённые в топике, это неоднократно подтвердили, когда вы показывали "нормальный случай по умолчанию" и потом "ненормальный" со всякими alter session. Можно ли заставить оптимизатор игнорировать degree объектов? Конечно, кучей способов - у атрибута самый низкий приоритет при вычислении dop. Но такой вопрос никто не задавал и непонятно, зачем надо было на него отвечать, да ещё в такой невежливой манере. Чтобы в конечном итоге показать, что "я знаю как это работает" - преувеличение? Ну показал... И обратите внимание, что я написал про посчитанный dop, который можно узнать из плана. Реальный из плана узнать нельзя, ибо, повторюсь, карта местности не есть сама местность. Вы уже обсуждаете откуда узнать dop времени исполнения, то есть, опять отвечаете не на заданный вопрос, а на похожий другой. Тема сложная и интересная, но ТС вообще никаким боком не помогает, по-моему. Сомневаюсь, что ТС вообще этот срач читает. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 18:52 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
Много интересного узнал, спасибо! А вот такой еще есть вопрос. Время от времени некоторые процессы распараллеливаются на 32 сессии. Распараллеливание - это чтобы сделать лучше и быстрее при наличии избытка ресурсов. Но вот если для одной сессии создали 32, а ядер всего 32 и почти все они "пашут". Если появится еще одна пользовательская сессия, полезная, от сервера приложений или от клиента, кто-нибудь из тех, кто параллельно запустился "уступят" ей место. Есть какая-нибудь "выталкивающая" производительность в пользу сессий от клиента, а уже потом только утилизация ресурсов с целью улучшения ответа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 14:22 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
helgisboxМного интересного узнал, спасибо! А вот такой еще есть вопрос. Время от времени некоторые процессы распараллеливаются на 32 сессии. Распараллеливание - это чтобы сделать лучше и быстрее при наличии избытка ресурсов. Но вот если для одной сессии создали 32, а ядер всего 32 и почти все они "пашут". Если появится еще одна пользовательская сессия, полезная, от сервера приложений или от клиента, кто-нибудь из тех, кто параллельно запустился "уступят" ей место. Есть какая-нибудь "выталкивающая" производительность в пользу сессий от клиента, а уже потом только утилизация ресурсов с целью улучшения ответа? "Это фантастика" (С) )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 15:30 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
helgisboxМного интересного узнал, спасибо! Есть какая-нибудь "выталкивающая" производительность в пользу сессий от клиента, а уже потом только утилизация ресурсов с целью улучшения ответа?Есть Resource Manager с его consumer groups и планами распределения ресурсов, но в плане вычислительных ресурсов (CPU) он умеет только тормозить процессы, заставляя их ждать часть времени по специальному ожиданию "resmgr: cpu quantum", что не совсем разнозначно "выталкиванию". Надо очень чётко понимать, как именно ResMan "управляет" потреблением CPU и как его использование влияет на время отклика, особенно на нагруженных системах (со средней загрузкой CPU выше 30%). Да и на ненагруженных тоже. Плюс там довольно много неприятных багов было в разное время, так что от версии тоже зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 18:29 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
Какая печаль, получается, что вспомогательное средство оказалось то самой лопатой, нет - граблями, которая и по тебе... Версия 11.2.0.4. Если parallel_max_servers выставить с таким расчетом, чтобы оставалось гарантировано какое-то количество сессий для обычных прикладных запросов, до за пределы parallel_max_servers это "помощь" не уйдет? То есть, к примеру, при 32 ядрах, сделать parallel_max_servers = 25, чтобы гарантировано 8 ядер всегда были для обычных запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2017, 15:13 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
helgisboxКакая печаль, получается, что вспомогательное средство оказалось то самой лопатой, нет - граблями, которая и по тебе... Версия 11.2.0.4. Если parallel_max_servers выставить с таким расчетом, чтобы оставалось гарантировано какое-то количество сессий для обычных прикладных запросов, до за пределы parallel_max_servers это "помощь" не уйдет? То есть, к примеру, при 32 ядрах, сделать parallel_max_servers = 25, чтобы гарантировано 8 ядер всегда были для обычных запросов? 24 разумеется, опечатка ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2017, 15:14 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
helgisboxчтобы гарантированоВсе значительно иначе. Рассуждать о гарантированности в отрыве от реальной нагрузки и железа бессмысленно. В расчетах дефолтных параметров параллелизма оракл обычно ориентируется на удвоенное количество ядер. Но есть еще ориентир parallel_io_cap_enabled, который играет рояль в сочетании с calibrate_io. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2017, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39562011&tid=1884815]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 491ms |

| 0 / 0 |
