|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Всем привет. Есть 2 запроса, которые соединяются между собой UNION ALL. Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Соответственно, как вы понимаете, занимает это ни один час. Вопрос - как можно оптимизаровать сортировку в данном кейсе? UPDATED: v$sql_workarea_active говорит, что сортировка однопроходная с объемом темпа в 7 Гб. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 19:02 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
А для чего нужно сортировать 100 млн записей, да еще и по 6 полям?! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:02 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Правильный Вася А для чего нужно сортировать 100 млн записей, да еще и по 6 полям?! Присоединяюсь к вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:28 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc как можно оптимизаровать сортировку в данном кейсе? Какими ресурсами готовы пожертвовать ради оптимизации? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:29 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
А я бы, идя навстречу "заказчику", спросил бы, а каждая из половин в отсортированном виде отдаётся быстро? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:39 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows. Признайся им ведь нужно всего-лишь top 10 строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:45 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mayton mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows. Признайся им ведь нужно всего-лишь top 10 строк? Ну сортировка не обязательно делается под "глазки". Я знаю вариант, в котором приходится сортировать ~100млн, правда, не из UNION ALL и, в конечном итоге, там удалось отделаться порциями помельче, порядка 20 млн. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 20:49 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Elic А я бы, идя навстречу "заказчику", спросил бы, а каждая из половин в отсортированном виде отдаётся быстро? Предложение суперпривлекательное. Я несколько лет на такое облизываюсь. Останавливает, главным образом, то, что после меня это поддерживать будет некому. А с учётом того, что в моём случае, не из "половин", а из "десятин" сила клиентского мержа вызывает сомнение. Хотя руки продолжают чесаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 22:53 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Всем привет. Есть 2 запроса, которые соединяются между собой UNION ALL. Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Соответственно, как вы понимаете, занимает это ни один час. Вопрос - как можно оптимизаровать сортировку в данном кейсе? UPDATED: v$sql_workarea_active говорит, что сортировка однопроходная с объемом темпа в 7 Гб. зы. Сортировка 100млн ни один час - в принципе, подозрительно долго. Видимо, там еще проблем хватает помимо сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 04:02 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov Сортировка 100млн ни один час - в принципе, подозрительно долго. Видимо, там еще проблем хватает помимо сортировки. Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 08:31 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Постараюсь ответить на все вопросы в одном сообщении. Версия 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 млн - это требование внешней системы для формирования ЦБ-шного отчёта. Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ. В отчёте транзакции по картам. Насчёт параллельного выполнения - почему нет. Возможность есть и первая мысль была накрутить параллелей. Насчёт какими ресурсами готов пожертвовать - а какие есть предложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:07 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Постараюсь ответить на все вопросы в одном сообщении. P.S. Если ты не разработчик и не можешь на них повлиять, то можешь не отвечать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:31 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Насчёт какими ресурсами готов пожертвовать - а какие есть предложения? Предложения есть разные. Поскольку в топике проявился Саян, то про варианты надвинуть шляпу оптимизатору у него получится лучше. Я ограничусь вариантами разработчика: - рассмотреть возможность создания мат. представления с целью заменить сортировку индексным доступом (разменять время при выборке на лишнюю нагрузку в процессе работы и дисковые просторы для хранения). - вариация на тему: разработать кастомный доменный индекс, который будет готовить искомый пресортированный датасет. - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. ... прочие способы под общим девизом "готовь сортированный набор по мере изменения данных, отдавай одним проходом" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:35 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Elic, Ох, Elic, ваш вопрос пропустил. Если я правильно вас понял - вы предлагаете отдавать по частям отсортированно. Но как это поможет в сортировке всего набора вместе? Выше я писал, что все складываются в плоский файл в отсортированном виде. mayton mlc, нет таких людей которые способны "глазками" просмотреть 100 млн. rows. Признайся им ведь нужно всего-лишь top 10 строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:43 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Если я правильно вас понял - вы предлагаете отдавать по частям отсортированно. Но как это поможет в сортировке всего набора вместе? andrey_anonymous - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:50 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Elic, ...Но как это поможет в сортировке всего набора вместе? ... вот andrey_anonymous понял, как - почитайте его последний пост внимательно. andrey_anonymousв стиле Sort-Merge Join С учетом того, что фаза sort уже будет выполненной и останется только выполнить merge, то скажем, при числе веток в пределах 5, я может и не задумывался даже сильно, просто взял бы и так и сделал... И без всякого сомнения, если сортировка в пределах ветки условно-бесплатна - например обеспечивается подходящим индексом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 09:53 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Хм.. Если сортировка так дорого стоит (не один час) то возможо имеет смысл подумать отказаться от сортировок вообще. И держать отдельную сортированную всегда структуру данных. И обновлять ее по мере поступления новых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 10:21 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mayton Хм.. Если сортировка так дорого стоит (не один час) то возможо имеет смысл подумать отказаться от сортировок вообще. И держать отдельную сортированную всегда структуру данных. И обновлять ее по мере поступления новых данных. это тоже занимательная идея. Но при особо рьяном и тщательном выполнении легко можно неопределенное количество порядков потерять. А так как идея похожа на идею архитектурного типа, то почти наверно речь идет не о постройке отдельно стоящего сарая, а о пристройке такой веранды, для которой нужно разобрать существующий дом. Хорошо, если не целиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 10:28 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Авто пишет >> Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ. Тоесть у нас полюбому есть фаза загрузки. И ничего с этим не поделать. Задача - конвейер, и рассматривать одну фазу сортировки - не интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 10:58 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mayton, по его описанию что происходит, я не берусь точно понять. я бы читал так, что наворочена многоступенчатая "интеграция". И, может быть, его задача, как раз в том и состоит, чтобы испечь сортированный плоский файл, который потом будет грузить другая внешняя система. То есть, в космическом масштабе, оно может и про то, сколько будет стоить поменять способ интеграции. Но локально вопрос о том, как умеренно дешево ускорить сортировку, без замены интеграционных рельсов, шпал и костылей. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 11:10 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby ...наворочена многоступенчатая "интеграция". И, может быть, его задача, как раз в том и состоит, чтобы испечь сортированный плоский файл, который потом будет грузить другая внешняя система. Но локально вопрос о том, как умеренно дешево ускорить сортировку, без замены интеграционных рельсов, шпал и костылей. все в точности так и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 12:03 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous mlc Насчёт какими ресурсами готов пожертвовать - а какие есть предложения? Предложения есть разные. Поскольку в топике проявился Саян, то про варианты надвинуть шляпу оптимизатору у него получится лучше. Я ограничусь вариантами разработчика: - рассмотреть возможность создания мат. представления с целью заменить сортировку индексным доступом (разменять время при выборке на лишнюю нагрузку в процессе работы и дисковые просторы для хранения). - вариация на тему: разработать кастомный доменный индекс, который будет готовить искомый пресортированный датасет. - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. ... прочие способы под общим девизом "готовь сортированный набор по мере изменения данных, отдавай одним проходом" Это уже что-то. Спасибо за наводку. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 12:04 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning. Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 12:10 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning. Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса) выглядит сложно. Если на коленке для слепить файл - взял горсть сортированных курсоров, в виде массива, например, и мержи их до полной готовности файла синхронно-последовательно, как честный union all всегда раньше и работал. Убийство pga происходит при этом под твоим контролем. Если окажется, что получить сортированную ветку - тоже слишком дорого, то может и описанного вида канальная функция сгодится, тогда, вероятно, таки со вставкой в таблицу имени интеграции с индексами, поддерживающими нужный файлу порядок. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 12:31 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
а если промежуточная таблица с партициями, штук на 100 партиций и локальными индексами, которые создавать после перезаливки? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 12:43 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc, а сколько исходный файл занимает? В мегабайтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 13:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mayton mlc, а сколько исходный файл занимает? В мегабайтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 14:45 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby andrey_anonymous Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning. Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса) выглядит сложно. Да не особо. Это часть декларации pipelined. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 16:15 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous booby пропущено... выглядит сложно. Да не особо. Это часть декларации pipelined. эта та часть декларации, которая относится к манипулированию входным курсором , переданным в параметре. Там и сортировку можно заказать по атрибуту, не только кластеризацию. В заявленном случае умение воспользоваться этим волшебством, содержательно может оказаться отдельным искусством. Само по себе, в принципе, это не отменяет возможность канальной функции, но помогают ей декларированные чудеса в конкретном случае, или нет - отсюда не видать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 16:41 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc mayton mlc, а сколько исходный файл занимает? В мегабайтах. Хороший размер. Укладывается в memory для типичной рабочей станции. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 17:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby В заявленном случае умение воспользоваться этим волшебством, содержательно может оказаться отдельным искусством. Вообще-то нет. Если читать доку внимательно и иметь базовое понимание параллельной обработки, то особых проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 18:24 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ. Значит ли это, что на входе количество записей совпадает с количеством на выходе? Если да, может, они уже и так отсортированы? Или хотя бы можно потребовать их предварительной сортировки ДО всего процесса? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 19:42 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Правильный Вася, Вы видимо не поняли о чем я. Этот плоский файл готовится на моей стороне. То есть мне надо отсортировать эти 100кк и затолкать в файл. А принимающая внешняя система обогощяет то, что я там наваял. Если говорить про количество, то они не только обогаюащют мои данные, но и доливают свои по аналогии отсортированные (мои уже не сортируют). Отвечая на ваш вопрос, значит ли это, что на входе количество записей совпадает с количеством на выходе - нет, не совпадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 10:37 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc, больше похоже, что это вы не поняли, что вам советует Правильный Вася. (вы же даже общей, приблизительной структуры своего запроса не показываете). В вашем случае, если проблема точно и именно в сортировке (например, параллельно с этим, нет проблем с триллионами вызовов функций из вашего сортируемого набора), то у вас два способа действий, распадающихся на три варианта - А) - передать проблему товарищу: А.1) - обратиться к администратору с просьбой об увеличении доступной процессу памяти для сортировки, чтобы ваша задача не падала на диск в процессе сортировки А.2) заявить потребителю, что файл вы поставляете без сортировки, сортировать его - забота получателя. Б) решать вопрос с необходимой для сортировки памятью доступными разработчику средствами, а именно делить задачу на куски, гарантированно помещающиеся в доступную область сортировки в памяти вашего процесса. Здесь у вас в руках наколенное слияние или, как предлагает Вася, формирование узкого ведущего курсора, сортировка которого гарантированно не падает на диск в ваших условиях. Для образования надежной фигуры достаточно трех пальцев. Но у вас две руки, так что можно манипулировать фигурами, составляемыми сразу на обеих руках. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 11:43 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:42 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Насчёт времени работы сортировки - опираюсь на данные из v$session_longops , v$sql_workarea_active и v$sql_plan_monitor. mlc Запрос с gather_plan_statistics не выполнялся. mlc Сам текст запроса выложить не могу mlc Возможность есть и первая мысль была накрутить параллелей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:51 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. 100 лямов - это 100 лямов. У меня был опыт с сортировкой таких наборов, правда, записи, видимо, пошире были, но ~час - время довольно характерное при интенсивном использовании temp. т.е. примерно 15-20 лямов на ручном управлении памятью сортировались считанные минуты, после 20лямов уже без вариантов падало в темп и время резко подскакивало до 20-30 минут на 40 лямов и порядка часа+ на 100 преимущественно за счет direct path read/write. Сортировка в идеальных условиях стоит NLogN от количества элементов, объем за счет ширины записи дает лишь линейный коэффициент. А тут еще ввод-вывод внезапно. ...возможно, ты просто привык работать с более серьезным оборудованием, где оперативка терабайтами меряется и которому эти объемы - что семечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. 100 лямов - это 100 лямов. У меня был опыт с сортировкой таких наборов, правда, записи, видимо, пошире были, но ~час - время довольно характерное при интенсивном использовании temp. т.е. примерно 15-20 лямов на ручном управлении памятью сортировались считанные минуты, после 20лямов уже без вариантов падало в темп и время резко подскакивало до 20-30 минут на 40 лямов и порядка часа+ на 100 преимущественно за счет direct path read/write. Сортировка в идеальных условиях стоит NLogN от количества элементов, объем за счет ширины записи дает лишь линейный коэффициент. А тут еще ввод-вывод внезапно. ...возможно, ты просто привык работать с более серьезным оборудованием, где оперативка терабайтами меряется и которому эти объемы - что семечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
При 100 млн rows, и при размере файла 8 Гб, средняя длина строки будет 8 Гб / 100 000 000 = 8,589,934,592 / 100 000 000 = 85 байт на строку. И при 20 полях средняя длина 1 поля будет 4 байта. Что там внутри? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:12 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. в принципе, пример такой хинтовки было бы интересно посмотреть, хотя версия целевой системы топикстартером и не была указана. (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:16 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:24 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
пока я даже не уверен, что основное время уходит на сортировку. В условиях такого недостатка информации, знать бы хотя бы сколько выполняется по отдельности, скажем CTAS этого запроса без сортировки и сортировка полученной таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:45 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby версия целевой системы топикстартером и не была указана. mlc Версия 12.1. смею надеяться, что в 2021-то уж все-таки наверное не 12.1.0.1 хотя и у меня есть пара таких клиентов :( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous booby (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm enabled не значит, что автоматически выбирается. Пока мне в 12.1 ни разу нигде не пришлось поставить no_pq_concurrent_union, чтобы предотвратить "новое поведение". 2Sayan Malakshinov и все-таки, было бы интересно, либо увидеть точную хинтовку, либо какие-то пояснения, почему просто pq_concurrent_union, сам по себе обеспечит желаемое в данном случае поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:16 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby enabled не значит, что автоматически выбирается. ммм? Саян предложил форсировать план, в котором на вход общей сортировки придут параллельно собранные пресортированные наборы. Это делается на базе указанной новофичи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:26 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous, я всего лишь хочу увидеть, как именно это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:33 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby, элементарно же Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:36 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby как именно это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:46 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
забыл такой показать: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:52 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
А может у него 1 SATA диск на всю базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:52 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov, ладно, спасибо - я успокоился. Хорошо, что я необразованный, и не вижу отличий в размере TempSpc на этапе Order By, ни в каком из вариантов. Поэтому понять этого волшебства всё равно точно не смогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 15:11 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Что из себя представляют эти самые 6 полей? Как вариант, если первое поле - это дата (без времени) или код подразделения или тип операции или ещё какая достаточно ёмкая категория, которая позволяет всю выборку условно разделить на несколько частей, например, по 5-10 млн, то можно сделать функцию, которая будет получать на вход эту категорию/конкретную дату/тип операции и возвращать в результате набор данных уже только по ней. При этом сортировка в функции будет нужна уже только по оставшимся 5 полям, а соединять результат из кусков можно в вызывающей функции/клиенте. Т.е. просто раздробить выборку на части и результат соединить уже в конце без сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 17:35 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Правильный Вася mlc Результирующая выборка из 20 полей должна быть отсортирована по 6 полям. Объем выборки около 100 миллионов. Что из себя представляют эти самые 6 полей? Как вариант, если первое поле - это дата (без времени) или код подразделения или тип операции или ещё какая достаточно ёмкая категория, которая позволяет всю выборку условно разделить на несколько частей, например, по 5-10 млн, то можно сделать функцию, которая будет получать на вход эту категорию/конкретную дату/тип операции и возвращать в результате набор данных уже только по ней. При этом сортировка в функции будет нужна уже только по оставшимся 5 полям, а соединять результат из кусков можно в вызывающей функции/клиенте. Т.е. просто раздробить выборку на части и результат соединить уже в конце без сортировки. Тяготеет к сортировки низко-кардинальных коллекций. Если-б не было неключевых полей тогда сортировка подсчетом фактически решает задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 17:49 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1880280]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 194ms |
0 / 0 |