powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / HASH JOIN кушает 120Gb в TEMP segment и вылетает
16 сообщений из 16, страница 1 из 1
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268777
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
---------------------------------------------------------------------------------------------------
| Id  | Operation                | Name           | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |                |       |       |       |   334K(100)|          |
|   1 |  SORT GROUP BY           |                |  2796 |   319K|       |   334K  (1)| 00:02:55 |
|*  2 |   HASH JOIN ANTI         |                |  2796 |   319K|       |   334K  (1)| 00:02:55 |
|*  3 |    HASH JOIN             |                |  2863 |   276K|  7880K|   331K  (1)| 00:02:53 |
|   4 |     TABLE ACCESS FULL    | TABLE1         |   244K|  5012K|       |   379   (2)| 00:00:01 |
|*  5 |     HASH JOIN            |                |   296K|    22M|  6528K|   329K  (1)| 00:02:52 |
|*  6 |      HASH JOIN           |                | 85657 |  5520K|  2232K|   218K  (1)| 00:01:54 |
|*  7 |       HASH JOIN          |                | 35705 |  1813K|  6296K|   166K  (1)| 00:01:27 |
|*  8 |        HASH JOIN         |                |   140K|  4649K|  4656K|   122K  (1)| 00:01:04 |
|*  9 |         TABLE ACCESS FULL| TABLE3         |   140K|  3008K|       | 10867   (2)| 00:00:06 |
|  10 |         TABLE ACCESS FULL| TABLE4         |    25M|   289M|       | 82015   (1)| 00:00:43 |
|* 11 |        TABLE ACCESS FULL | TABLE5         |  1330K|    22M|       | 42294   (1)| 00:00:23 |
|* 12 |       TABLE ACCESS FULL  | TABLE5         |  7314K|    97M|       | 42218   (1)| 00:00:22 |
|  13 |      TABLE ACCESS FULL   | TABLE4         |    25M|   289M|       | 82015   (1)| 00:00:43 |
|* 14 |    INDEX FAST FULL SCAN  | CCLO_I1        |   609K|    10M|       |  2706   (2)| 00:00:02 |
---------------------------------------------------------------------------------------------------

скажите, я верно рассуждаю: в колонке TempSpc показано сколько ориентировочно займет запрос в TEMP, каких-то космических цифр нет. я верно понимаю, что исходя из цифр 120 гигов никак не должны было потребляться в TEMP ? скорее всего какой-то баг ?

P.S. база SE 11.2.0.3, статистика в колонке Rows может не абсолютно точная, но порядок цифр верен, например TABLE4 не 25 млн, а 39 млн.
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268832
pihel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
joiner_plus,

выполните запрос с хинтом /*+ gather_plan_statistics */ и посмотрите реальные значения Rows и Temp
select * from table(dbms_xplan.display_cursor(null,null,'allstats last cost'));
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268850
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
piheljoiner_plus,

выполните запрос с хинтом /*+ gather_plan_statistics */ и посмотрите реальные значения Rows и Temp
select * from table(dbms_xplan.display_cursor(null,null,'allstats last cost'));Не надо никаких хинтов.
Лучше смотреть реальный прогресс с помощью dbms_sqltune.report_sql_monitor.
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268851
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
joiner_plus,

наблюдай за выполнением через real-time sql monitor - все станет понятно
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select/*+ no_monitor */ 
  dbms_sqltune.report_sql_monitor(
     sql_id         => '&1', 
     --sql_exec_id  => '&2', 
     report_level   => 'ALL',
     type           => 'TEXT') sqlmon 
from dual;
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268861
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понаблюдать теперь уже врядли получиться, это был прод и TABLE1 заполняется из файлов клиента. теперь там совсем другой порядок цифр приходит (всего лишь сотни). да и боязно, если TEMP переполниться снова он и другие процессы может завалить
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268867
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
joiner_plus,

посмотри может еще он есть в v$sql_monitor, если есть, то возьми его sql_id и sql_exec_id и подставь в запрос выше, раскомментировав 3-ю строку
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268869
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
joiner_plus,

а что на счет плана, который я показал ? он снят DBA непосредственно во время исполнения. я к тому, что даже если все перечисленные таблицы сложить, прибавить хеши по соединяемым колонкам, все равно сотня гигов не наберется. разве это из этого нельзя сделать какой-то вывод ?
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268875
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А насколько точно известно,
1) что именно этот план использовался?
2) что этот SQL упал, потому что именно он весь темп забил, а не кто-то другой?
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268900
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111А насколько точно известно,
1) что именно этот план использовался?
2) что этот SQL упал, потому что именно он весь темп забил, а не кто-то другой?

точно. потому что сначала упал запрос из системы, а потом я запустил запрос уже от себя и попросил DBA посмотреть реальный план, и снять трейс (уже после запуска запроса правда).
трейс вышел крошечный и не интересный. несколько строк в стиле nam='db file sequential read' ela= 17588 и SQL*Net break/reset to client в конце.
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39268945
joiner_plus,

приведенный тобой план смахивает на обычный плюсовский вывод эксплайна.
где реалии ресурсов выполнения?
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39269095
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нереальный планjoiner_plus,

приведенный тобой план смахивает на обычный плюсовский вывод эксплайна.
где реалии ресурсов выполнения?
не знаю о чем вы, toad мне с сервера показывает такие же отформатированные планы.
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39269127
joiner_minus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ash включен? на 11.2.0.3 в ash есть колонка потребления темп
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39269503
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
joiner_minusash включен? на 11.2.0.3 в ash есть колонка потребления темп
наверно нет:
Код: plsql
1.
2.
3.
select * from dba_hist_active_sess_history

no rows selected.



ну а все же, все таблицы участвующие в плане занимают 12G, я верно мыслю что приведенный план не оставляет шансов такому запросу сожрать 120G в TEMP ? даже если все заджоинить и добавить пару гб на хеши и записать дважды в TEMP (ради сортировки например), все равно не выйдет забить 120G
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39269773
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111А насколько точно известно,
......
2) что этот SQL упал, потому что именно он весь темп забил, а не кто-то другой в то же время?

Ошибка воспроизводится?
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39269892
joiner_plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111Ошибка воспроизводится?
там сильно изменились данные и это прод, за эксперименты меня могут побить. сейчас у меня вопрос теоретический: мог ли такой план в теории нагенерить 120G TEMP, если во всех таблицах лишь 12G ?
...
Рейтинг: 0 / 0
HASH JOIN кушает 120Gb в TEMP segment и вылетает
    #39270062
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joiner_plusNobody1111Ошибка воспроизводится?
там сильно изменились данные и это прод, за эксперименты меня могут побить. сейчас у меня вопрос теоретический: мог ли такой план в теории нагенерить 120G TEMP, если во всех таблицах лишь 12G ?

Ну может если multipass, что с того ? :)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / HASH JOIN кушает 120Gb в TEMP segment и вылетает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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