|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Подскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 19:25 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Вопрос задан сильно не конкретно SELECT он и в африке SELECT. В Oracle и bulk collect into и pipelined функции совершенно другое и с SELECT'ом связанны крайне опосредованно. При чем размер таблиц и потребление памяти, тоже не ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 19:48 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Tupoy1cnikПодскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции. Гигантского потребления памяти где?? В приложении? В базе? Какие именно select? PS: может вам просто курсоры надо использовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 20:58 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Если несколько сузить задачу - то нужно перекачивать таблицу большого размера с одного сервера на другой. В силу некоторых причин отдельностоящее etl-средство не подойдет. При этом суперселект пока кажется вариантом не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 21:14 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Вторая задача - перелить в рамках того же сервера таблицу в другую схему с денормализацией. Т.е. классическая задача для dwh ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 21:18 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
kira ivanov, я правильно понимаю, что CTE для вычисления значений ID для offsetов и есть киллерфича, которую предлагают авторы ролика? Выглядит дико, если учесть, что все равно миллионы элементов перебрать в индекс онли скан... Но хоть какое-то решение И так можно приблизительно разбить по ID таблицу и использовать вместо offset. Но видео полезное. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2018, 22:07 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 08:23 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Tupoy1cnikВторая задача - перелить в рамках того же сервера таблицу в другую схему с денормализацией. Т.е. классическая задача для dwh Ну тут вообще приложение не причем insert into table2 select (что там вам надо с любыми joins и тд) т.е. сделать все внутри базы... и никакого лишнего расхода по памяти не будет -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 08:24 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Tupoy1cnikkira ivanov, я правильно понимаю, что CTE для вычисления значений ID для offsetов и есть киллерфича, которую предлагают авторы ролика? Выглядит дико, если учесть, что все равно миллионы элементов перебрать в индекс онли скан... Но хоть какое-то решение И так можно приблизительно разбить по ID таблицу и использовать вместо offset. Но видео полезное. Спасибо. Перебирать всю таблицу через limit/offset - технология столь же популярная сколь и неработающая на больших обьемах (она замедляется как N^2 от размера таблицы и ускорения offset через IOS ^2 зависимость не убирают). По диапазонам ID лучше - но все равно плохо... как надо - я вам уже отписал. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 08:26 |
|
SELECT из больших таблиц
|
|||
---|---|---|---|
#18+
Tupoy1cnikПодскажите, пож., каким методом лучше воспользоваться для быстрых SELECTов из больших таблиц без гигантского потребления памяти? Как, например, в том же оракле можно использовать bulk selectы и piplined функции. Во-первых, bulk selectы и piplined функции никак не помогают выполнению быстрых SELECT-ов из больших таблиц. Во-вторых, метод прост, но тебе он не понравится -- индексы ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 18:00 |
|
|
start [/forum/topic.php?fid=53&msg=39631285&tid=1995826]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 279ms |
total: | 408ms |
0 / 0 |