Оптимизация хранения данных

ronzhak
Дата: 09.01.2015 09:51:42
Приветствую коллеги!
Нужен совет вот по какому вопросу. Есть таблица, в ней 12 Гб данных вида: id, src_id, table_name, source_id. Создан индекс по полям: src_id, table_name, source_id. Задача повысить скорость выборки данных. Будет ли ощутимый прирост, если для каждой table_name создать свою таблицу и хранить/выбирать данные в ней/из нее? Т.е. вместо
from import where table_name = 'test1' and src_id = 1523 and source_id = 15
, будет
from import_test1 where src_id = 1523 and source_id = 15
.
Oleg Bartunov
Дата: 09.01.2015 15:53:42
ronzhak,

Если размер таблиц будет существенно меньше оригинальной, то конечно будет. Вы можете очень быстро это проверить, например,

select id, src_id, source_id into test1 from import where table_name='test1';

Надеюсь, что у вас есть индексы по src_id и source_id
Ivan Durak
Дата: 09.01.2015 21:13:24
в нормальной субд я бы посоветовал партицирование
NikolayV81
Дата: 09.01.2015 22:21:29
Ivan Durak
в нормальной субд я бы посоветовал партицирование


в принципе в PG в документации описан способ, конечно он весьма не такой простой, но для конкретной таблицы можно до автоматизма довести.
Maxim Boguk
Дата: 10.01.2015 04:54:45
ronzhak
Приветствую коллеги!
Нужен совет вот по какому вопросу. Есть таблица, в ней 12 Гб данных вида: id, src_id, table_name, source_id. Создан индекс по полям: src_id, table_name, source_id. Задача повысить скорость выборки данных. Будет ли ощутимый прирост, если для каждой table_name создать свою таблицу и хранить/выбирать данные в ней/из нее? Т.е. вместо
from import where table_name = 'test1' and src_id = 1523 and source_id = 15
, будет
from import_test1 where src_id = 1523 and source_id = 15
.


вообще вряд ли вы от такого партиционирования получите заметный выйгрыш.
хотя конечно все зависит от того какие именно запросы вы будете вызывать.
приведите примеры запросов и их explain analyze для начала.
этта
Дата: 10.01.2015 14:12:57
Ivan Durak
в нормальной субд я бы посоветовал партицирование
от ары-кало-еда за версту несёт, ара, калом

ещё вам прийдётся посоветовать штат админисраторов ара кала, и потратить мноха денех
ну и много кала по мелочи
ronzhak
Дата: 11.01.2015 21:39:55
Maxim Boguk,
Основной запрос будет иметь вид:
select id from import where table_name = 'test1' and src_id = 1523 and source_id = 15
.
Индекс на поля {table_name, src_id, source_id} есть. Explain query:
Operation  Index Scan using import_src_src_table_source_idx on import_src i                                                         
Operation Info Index Cond: ((src_id = 3545) AND ((table_name)::text = 'JOURNAL_DATA'::text) AND (source_id = 242))
Start-up Cost 0.00
Total Cost 24.15
Number of Rows 1
Row Width 4