Я планировал перейти с MySQL на PostgreSQL, потому что хотел использовать TimescaleDB.
Все выглядело хорошо, пока я не проверил размер хранилища, используемого PostgreSQL (v11.2), по сравнению с MySQL (v5.6). Для точно такого же количества строк (1 440 000) и содержимого:
- MySQL: 156 МБ
- PostgreSQL: 246 МБ
- PostgreSQL + TimescaleDB (разделенные / порционные данные): 324 МБ
Числа MySQL и PostgreSQL аналогичны (например, включая индексы и другие ограничения), у PostgreSQL + TimescaleDB есть накладные расходы на добавление временной метки в таблицу. Соответствующая таблица выглядит так:
create table cell(
cell_id serial not null
,ts timestamp not null
,parent_id int references parent( parent_id )
,instance_id smallint
,v float
,a float
,t float
,s1 float
,s2 float
,s3 float
,s4 float
,s5 float
,primary key( cell_id )
);
create index ix_cell_pid on cell( parent_id );
create index ix_cell_inst on cell( instance_id );
Почему PostgreSQL занимает гораздо больше памяти, чем MySQL?
И есть ли способ значительно снизить его до уровня MySQL?