powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SELECT из больших таблиц
11 сообщений из 11, страница 1 из 1
SELECT из больших таблиц
    #39631092
Tupoy1cnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции.
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631111
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос задан сильно не конкретно

SELECT он и в африке SELECT.

В Oracle и bulk collect into и pipelined функции совершенно другое и с SELECT'ом связанны крайне опосредованно. При чем размер таблиц и потребление памяти, тоже не ясно.
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631140
kira ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnik,

посмотрите, подумайте, может поможет

YouTube Video
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631149
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnikПодскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции.

Гигантского потребления памяти где?? В приложении? В базе?
Какие именно select?

PS: может вам просто курсоры надо использовать?
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631152
Tupoy1cnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если несколько сузить задачу - то нужно перекачивать таблицу большого размера с одного сервера на другой. В силу некоторых причин отдельностоящее etl-средство не подойдет. При этом суперселект пока кажется вариантом не очень.
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631153
Tupoy1cnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вторая задача - перелить в рамках того же сервера таблицу в другую схему с денормализацией. Т.е. классическая задача для dwh
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631174
Tupoy1cnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kira ivanov, я правильно понимаю, что CTE для вычисления значений ID для offsetов и есть киллерфича, которую предлагают авторы ролика?
Выглядит дико, если учесть, что все равно миллионы элементов перебрать в индекс онли скан... Но хоть какое-то решение
И так можно приблизительно разбить по ID таблицу и использовать вместо offset. Но видео полезное. Спасибо.
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631283
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnikЕсли несколько сузить задачу - то нужно перекачивать таблицу большого размера с одного сервера на другой. В силу некоторых причин отдельностоящее etl-средство не подойдет. При этом суперселект пока кажется вариантом не очень.

Есть два варианта экономных по памяти:
1)простой и быстрый
psql -h server1 -d db1 -c 'copy (select * from table1) to stdout' | psql -h server2 -d db2 -c 'copy table2 from stdin'
с точностью до опечаток
table2 уже должен быть создан на новой базе
(можно через промежуточный файл но смысла в этом кроме как для отладки - мало).

2)сложный - использовать курсоры в приложении и fetch next N rows (N 1000-10000) чтобы вычитывать таблицу не всю скопом а по частям.


--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631284
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnikВторая задача - перелить в рамках того же сервера таблицу в другую схему с денормализацией. Т.е. классическая задача для dwh

Ну тут вообще приложение не причем
insert into table2 select (что там вам надо с любыми joins и тд)
т.е. сделать все внутри базы...
и никакого лишнего расхода по памяти не будет

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39631285
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnikkira ivanov, я правильно понимаю, что CTE для вычисления значений ID для offsetов и есть киллерфича, которую предлагают авторы ролика?
Выглядит дико, если учесть, что все равно миллионы элементов перебрать в индекс онли скан... Но хоть какое-то решение
И так можно приблизительно разбить по ID таблицу и использовать вместо offset. Но видео полезное. Спасибо.

Перебирать всю таблицу через limit/offset - технология столь же популярная сколь и неработающая на больших обьемах (она замедляется как N^2 от размера таблицы и ускорения offset через IOS ^2 зависимость не убирают).
По диапазонам ID лучше - но все равно плохо... как надо - я вам уже отписал.

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
SELECT из больших таблиц
    #39632745
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tupoy1cnikПодскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции.

Во-первых, bulk selectы и piplined функции никак не помогают выполнению быстрых SELECT-ов из больших таблиц.
Во-вторых, метод прост, но тебе он не понравится -- индексы ...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SELECT из больших таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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