powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / оптимизация сортировки
25 сообщений из 54, страница 1 из 3
оптимизация сортировки
    #40062547
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Есть 2 запроса, которые соединяются между собой UNION ALL. Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Соответственно, как вы понимаете, занимает это ни один час.
Вопрос - как можно оптимизаровать сортировку в данном кейсе?

UPDATED:
v$sql_workarea_active говорит, что сортировка однопроходная с объемом темпа в 7 Гб.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062566
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для чего нужно сортировать 100 млн записей, да еще и по 6 полям?!
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062575
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася
А для чего нужно сортировать 100 млн записей, да еще и по 6 полям?!
+1
Присоединяюсь к вопросу.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062576
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
как можно оптимизаровать сортировку в данном кейсе?

Какими ресурсами готовы пожертвовать ради оптимизации?
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062579
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы, идя навстречу "заказчику", спросил бы, а каждая из половин в отсортированном виде отдаётся быстро?
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062584
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows.

Признайся им ведь нужно всего-лишь top 10 строк?
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062586
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows.
Признайся им ведь нужно всего-лишь top 10 строк?

Ну сортировка не обязательно делается под "глазки".
Я знаю вариант, в котором приходится сортировать ~100млн, правда, не из UNION ALL и, в конечном итоге, там удалось отделаться порциями помельче, порядка 20 млн.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062602
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
А я бы, идя навстречу "заказчику", спросил бы, а каждая из половин в отсортированном виде отдаётся быстро?

Предложение суперпривлекательное.
Я несколько лет на такое облизываюсь.

Останавливает, главным образом, то, что после меня это поддерживать будет некому.
А с учётом того, что в моём случае, не из "половин", а из "десятин" сила клиентского мержа вызывает сомнение.
Хотя руки продолжают чесаться.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062632
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mlc
Всем привет.

Есть 2 запроса, которые соединяются между собой UNION ALL. Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Соответственно, как вы понимаете, занимает это ни один час.
Вопрос - как можно оптимизаровать сортировку в данном кейсе?

UPDATED:
v$sql_workarea_active говорит, что сортировка однопроходная с объемом темпа в 7 Гб.
с таким кол-вом информации вероятность получить адекватный ответ равна нулю. Помимо уже заданных уточняющих вопросов, я бы спросил еще версию оракла, текст запроса, план c format=advanced, и отчет rtsm, и разрешено ли параллельное выполнение на сервере?

зы. Сортировка 100млн ни один час - в принципе, подозрительно долго. Видимо, там еще проблем хватает помимо сортировки.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062648
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov
Сортировка 100млн ни один час - в принципе, подозрительно долго. Видимо, там еще проблем хватает помимо сортировки.

Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062655
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постараюсь ответить на все вопросы в одном сообщении.
Версия 12.1. Насколько мне известно все датафайлы продуктовой бд живут на SSD (хотя могу ошибаться).
Насчёт времени работы сортировки - опираюсь на данные из v$session_longops , v$sql_workarea_active и v$sql_plan_monitor.
Сам текст запроса выложить не могу, но там ничего мудреного: select ... from джойн_нескольких_таблиц union all select ... from джойн_нескольких_таблиц order by 1,2,3,4,5,6. Запрос с gather_plan_statistics не выполнялся.
Сортировка 100 млн - это требование внешней системы для формирования ЦБ-шного отчёта. Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ. В отчёте транзакции по картам.
Насчёт параллельного выполнения - почему нет. Возможность есть и первая мысль была накрутить параллелей.
Насчёт какими ресурсами готов пожертвовать - а какие есть предложения?
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062663
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
Постараюсь ответить на все вопросы в одном сообщении.
Пока не на все.

P.S. Если ты не разработчик и не можешь на них повлиять, то можешь не отвечать.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062665
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
Насчёт какими ресурсами готов пожертвовать - а какие есть предложения?

Предложения есть разные.
Поскольку в топике проявился Саян, то про варианты надвинуть шляпу оптимизатору у него получится лучше.

Я ограничусь вариантами разработчика:
- рассмотреть возможность создания мат. представления с целью заменить сортировку индексным доступом (разменять время при выборке на лишнюю нагрузку в процессе работы и дисковые просторы для хранения).
- вариация на тему: разработать кастомный доменный индекс, который будет готовить искомый пресортированный датасет.
- накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join.
... прочие способы под общим девизом "готовь сортированный набор по мере изменения данных, отдавай одним проходом"
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062670
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Ох, Elic, ваш вопрос пропустил.
Если я правильно вас понял - вы предлагаете отдавать по частям отсортированно. Но как это поможет в сортировке всего набора вместе? Выше я писал, что все складываются в плоский файл в отсортированном виде.

mayton
mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows.

Признайся им ведь нужно всего-лишь top 10 строк?
Нет, нужны все 100 миллионов.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062673
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
Если я правильно вас понял - вы предлагаете отдавать по частям отсортированно. Но как это поможет в сортировке всего набора вместе?
Принцип:
andrey_anonymous
- накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062674
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
Elic,
...Но как это поможет в сортировке всего набора вместе? ...

вот andrey_anonymous понял, как - почитайте его последний пост внимательно.
andrey_anonymousв стиле Sort-Merge Join
С учетом того, что фаза sort уже будет выполненной и останется только выполнить merge, то
скажем, при числе веток в пределах 5, я может и не задумывался даже сильно, просто взял бы и так и сделал...
И без всякого сомнения, если сортировка в пределах ветки условно-бесплатна - например обеспечивается подходящим индексом.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062683
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.. Если сортировка так дорого стоит (не один час) то возможо имеет смысл подумать отказаться от сортировок
вообще. И держать отдельную сортированную всегда структуру данных. И обновлять ее по мере поступления
новых данных.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062684
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Хм.. Если сортировка так дорого стоит (не один час) то возможо имеет смысл подумать отказаться от сортировок
вообще. И держать отдельную сортированную всегда структуру данных. И обновлять ее по мере поступления
новых данных.


это тоже занимательная идея.

Но при особо рьяном и тщательном выполнении легко можно неопределенное количество порядков потерять.
А так как идея похожа на идею архитектурного типа, то почти наверно речь идет не о постройке отдельно стоящего сарая,
а о пристройке такой веранды, для которой нужно разобрать существующий дом. Хорошо, если не целиком.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062696
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Авто пишет

>> Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ.

Тоесть у нас полюбому есть фаза загрузки. И ничего с этим не поделать. Задача - конвейер, и рассматривать одну
фазу сортировки - не интересно.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062702
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

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

То есть, в космическом масштабе, оно может и про то, сколько будет стоить поменять способ интеграции.
Но локально вопрос о том, как умеренно дешево ускорить сортировку, без замены интеграционных рельсов, шпал и костылей.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062723
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby

...наворочена многоступенчатая "интеграция".

И, может быть, его задача, как раз в том и состоит, чтобы испечь сортированный плоский файл,
который потом будет грузить другая внешняя система.

Но локально вопрос о том, как умеренно дешево ускорить сортировку, без замены интеграционных рельсов, шпал и костылей.

все в точности так и есть.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062725
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
mlc
Насчёт какими ресурсами готов пожертвовать - а какие есть предложения?

Предложения есть разные.
Поскольку в топике проявился Саян, то про варианты надвинуть шляпу оптимизатору у него получится лучше.

Я ограничусь вариантами разработчика:
- рассмотреть возможность создания мат. представления с целью заменить сортировку индексным доступом (разменять время при выборке на лишнюю нагрузку в процессе работы и дисковые просторы для хранения).
- вариация на тему: разработать кастомный доменный индекс, который будет готовить искомый пресортированный датасет.
- накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join.
... прочие способы под общим девизом "готовь сортированный набор по мере изменения данных, отдавай одним проходом"

Это уже что-то. Спасибо за наводку.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062727
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning.
Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса)
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062733
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning.
Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса)


выглядит сложно.
Если на коленке для слепить файл - взял горсть сортированных курсоров, в виде массива, например,
и мержи их до полной готовности файла синхронно-последовательно, как честный union all всегда раньше и работал.
Убийство pga происходит при этом под твоим контролем.

Если окажется, что получить сортированную ветку - тоже слишком дорого, то может и описанного вида канальная функция сгодится,
тогда, вероятно, таки со вставкой в таблицу имени интеграции с индексами, поддерживающими нужный файлу порядок.
...
Рейтинг: 0 / 0
оптимизация сортировки
    #40062738
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если промежуточная таблица с партициями, штук на 100 партиций
и локальными индексами, которые создавать после перезаливки?
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / оптимизация сортировки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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