|
|
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
Bobby Z.А ты вы...=> А то вы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 01:48 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
xtendernb: это не параллельный дмл!так откуда ему взяться. vldbA DML statement can be parallelized only if you have explicitly enabled parallel DML in the session or in the SQL statement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 02:41 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
Bobby Z.AlexFF__|пропущено... Ты хочешь, чтобы я за тебя проверил? Мне не надо, я знаю как это работает ) А вот ты с помощью тестов мог бы увидеть, как форсирование parallel dml позволяет системе самой определить DOP на твоей "непараллеливаемой" таблице с ALTER TABLE TAB NOPARALLEL; Если конечно система решит параллелить, чего, впрочем, не трудно добиться.Ну молодец, что знаешь. Хотя тогда должен бы знать, что тут и проверять нечего и тесты никакие не нужны, и форсирование parallel dml ну никакой совершенно роли не играет в этом случае. Или я не понял что "это" ты знаешь как работает? Ок, потрачу пару минут, а то малограмотные персонажи уже задолбали вводить всех в заблуждение. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 09:55 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Ок, потрачу пару минут, а то малограмотные персонажи уже задолбали вводить всех в заблуждение. на скоко "потоков" распараллелил из плана можно узнать? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 11:55 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
StaxAlexFF__|Ок, потрачу пару минут, а то малограмотные персонажи уже задолбали вводить всех в заблуждение. на скоко "потоков" распараллелил из плана можно узнать? ..... stax Система сама решает, на моей БД Код: plsql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 12:03 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Staxпропущено... на скоко "потоков" распараллелил из плана можно узнать? ..... stax Система сама решает, на моей БД Код: plsql 1. 2. 3. 4. 5. 6. 7. спасибо, понял где смотреть ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 12:19 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|Bobby Z.пропущено... Ну молодец, что знаешь. Хотя тогда должен бы знать, что тут и проверять нечего и тесты никакие не нужны, и форсирование parallel dml ну никакой совершенно роли не играет в этом случае. Или я не понял что "это" ты знаешь как работает? Ок, потрачу пару минут, а то малограмотные персонажи уже задолбали вводить всех в заблуждение. Код: plsql 1. Ой, как я люблю вот таких напыщенных самонадеянных всезнаек, круче которых только варёные яйца. :) Ну исполать те, многограмотный ты наш Капитан Очевидность, показал нам, неучам, что делает force parallel, что б мы делали вообще без тебя, Кэп... Теперь погугли event 10384, level 16384 - может откроешь для себя, что план выполнения запроса не всегда соответствует тому, как он на самом деле выполняется (другими словами, карта местности не есть сама местность). Хотя, учитывая вот это: AlexFF__|staxна скоко "потоков" распараллелил из плана можно узнать? Система сама решает, на моей БД ... 16непохоже, чтоб ты на самом деле знал, как "это" работает, иначе знал бы, хотя бы в простых случаях, как "система сама решает". Ничего не зная о вот этой твоей БД, рискну предположить, что она не кластеризована, parallel_degree_policy=manual, resource manager не активен, остальные parallel* параметры по умолчанию. Тогда она, скорее всего, бегает на 8-ми ядрах (cpu_count=8). Угадал? И, кстати, запланированный DOP можно из плана узнать, из V$SQL_PLAN.OTHER_XML. V$SQL.PX_SERVERS_EXECUTIONS немного не про то (точнее, вообще не про то). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 00:40 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
Bobby Z.И, кстати, запланированный DOP можно из плана узнать, из V$SQL_PLAN.OTHER_XML. V$SQL.PX_SERVERS_EXECUTIONS немного не про то (точнее, вообще не про то). И опять приходится поправлять малограмотных персонажей. Именно потому, что даже параллельный план может выполняться в один поток (например выбран весь parallel_max_servers), реальное число потоков пишется в V$SQL.PX_SERVERS_EXECUTIONS. P.S. Ты не стесняйся, пиши еще, если что непонятно =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 10:01 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|реальное число потоков пишется в V$SQL.PX_SERVERS_EXECUTIONS. Лезу в v$px_session, вижу degree=32, req_degree=32. Смотрю v$sql.px_server_executions - 31. Прокомментируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:48 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousAlexFF__|реальное число потоков пишется в V$SQL.PX_SERVERS_EXECUTIONS. Лезу в v$px_session, вижу degree=32, req_degree=32. Смотрю v$sql.px_server_executions - 31. А с этим как быть? Лезу в v$px_session, вижу degree=16, req_degree=16. Смотрю v$sql.px_server_executions = 7004 Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:52 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousА с этим как быть?А что неясно?RTFMTotal number of executions performed by parallel execution servers (0 when the statement has never been executed in parallel)Алекса слегка занесло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:57 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
[quot Elic]andrey_anonymousА с этим как быть?А что неясно?RTFM Да все как бы ясно. Не сдержался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:24 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
ElicАлекса слегка занесло.Слегка? А мне сослепу показалось, что он вообще поворота не заметил... :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 03:43 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|P.S. Ты не стесняйся, пиши еще, если что непонятно =)Да ладно, чо уж, ты и так достаточно наобъяснял, чтоб я к тебе больше не прислушивался ещё лет несколько пока ты опыта набираешься, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 03:49 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
да всем уже тут хватит чепуху писать... Staxна скоко "потоков" распараллелил из плана можно узнать?лучше всего смотреть в отчет RTSM(real time sql monitor'a), т.е. px_servers_requested,px_servers_allocated,px_maxdop в v$sql_monitor (параллельные выполнения всегда туда попадают без учета "_sqlmon_threshold") там и причина даунгрейда будет, а при отладке/дебаге - в v$pq_sesstat или если совсем глубоко то врубать px_trace 1. про v$sql_plan.other_xml - это тупо для плана этого чайлда, а реальное выделение слейвов происходит в рантайме, соответственно один и тот же чайлд мог в разное время выполняться с разными доп (не будем усложнять про v$sql_plan_statistics_all.last_xxx + statistics_level, так как это все равно не работает с реально параллельными планами, т.к. туда попадают статистики координатора) 2. про v$sql.px_servers_executions - andrey_anonymous уже тоже подсказал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 04:23 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
xtenderлучше всего смотреть в отчет RTSM(real time sql monitor'a) Это все хорошо, вот только монитор не всегда включен по умолчанию, да и отчеты доступны не долго. А вот что однократный запрос может писать неверные значения в v$sql.px_servers_executions, это интересно. Если ты или andrey_anonymous приведете кейс - буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 09:34 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, уровень параллельности потом можно узнать из dba_hist_active_sess_history = px_flags/2097152 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 09:56 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
pihelAlexFF__|, уровень параллельности потом можно узнать из dba_hist_active_sess_history = px_flags/2097152 Ты точно читал мой вопрос? AlexFF__|А вот что однократный запрос может писать неверные значения в v$sql.px_servers_executions, это интересно. Если ты или andrey_anonymous приведете кейс - буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 10:03 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__| однократный запросну начались прыжки в стороны... AlexFF__|неверные значения в v$sql.px_servers_executionsзначит ты так и не понял, про что тебе намекали.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 11:28 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
xtenderAlexFF__| однократный запросну начались прыжки в стороны... AlexFF__|Ок, потрачу пару минут, а то малограмотные персонажи уже задолбали вводить всех в заблуждение. ... Код: sql 1. 2. 3. 4. 5. xtenderзначит ты так и не понял, про что тебе намекали.... Я начинаю подозревать тебя в пустословии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 11:33 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, ох, тяжкий ты человек... еще раз: v$sql агрегирует для чайлда... у тебя кстати в примере их было 3, хотя и два из них были с одинаковыми планами. И если ты еще не сталкивался, то иногда оракл для одного параллельного выполнения создает несколько чайлдов... AlexFF__|Ок, потрачу пару минут, ак чему это было я вообще не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 11:51 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
я бы еще понял, если бы ты сразу четко добавил "для однократного выполнения" когда советовал, но сейчас это реально выглядит как прыжки в сторону... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 11:54 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
AlexFF__|pihelAlexFF__|, уровень параллельности потом можно узнать из dba_hist_active_sess_history = px_flags/2097152он то тебе чем не угодил? уж из шаред пула твой одиночный запуск раньше вымоет чем из ash... только чуть правильнее с trunc: https://www.freelists.org/post/oracle-l/detect-parallel-queries-that-have-been-serialized,3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 12:03 |
|
||
|
Каким образом выполяется count(*) и как его можно потимизировать
|
|||
|---|---|---|---|
|
#18+
xtenderк чему это было я вообще не понимаю... Все, что я сделал в топике, это поправил: Bobby Z. Код: plsql 1. приведёт к тому, что запросы без хинтов будут выполняться последовательно. Потом привел тест со специально разными sql_id: Код: sql 1. 2. 3. 4. 5. И на вопрос, как я в этих тестах узнавал реальные параллели, ответил про px_servers_executions. И в ответ от вас я узнал: что значения в v$sql агрегируются существует sql monitor ash попадает в историю Ну ок, полезная информация, только зачем она здесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 12:16 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39558693&tid=1884815]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 499ms |

| 0 / 0 |
