2012-11-11 3 views
0

Я пытаюсь сохранить, по сути, данные журнала в mySQL - потенциально большие объемы данных в несжатой форме (25 ГБ + месяц).mySQL хранит данные в сжатом формате

Каждая строка состоит только из двух столбцов, столбца datetime в качестве первичного ключа и столбца data, содержащего от 8k до 16k несжатых данных.

Я попытался использовать innoDB ROW_FORMAT=compressed, но, похоже, это не влияет на размер базы данных. Используя мои данные образца, его 0.53GB без использования сжатого форматирования строк, но его все еще 0.53GB с использованием сжатого формата строки.

Я проверяю размер хранимых данных с помощью следующего запроса (его в тестовой базе данных, так что мои тестовые таблицы всегда будет «самый большой»):

SELECT CONCAT(table_schema, '.', table_name), 
     CONCAT(ROUND(table_rows/1000000, 2), 'M')         rows, 
     CONCAT(ROUND(data_length/(1024 * 1024 * 1024), 2), 'G')     DATA, 
     CONCAT(ROUND(index_length/(1024 * 1024 * 1024), 2), 'G')     idx, 
     CONCAT(ROUND((data_length + index_length)/(1024 * 1024 * 1024), 2), 'G') total_size, 
     ROUND(index_length/data_length, 2)           idxfrac 
FROM information_schema.TABLES 
ORDER BY data_length + index_length DESC 
LIMIT 10; 
+0

Вы пробовали измерения потребления, глядя на диске, потребленный в файловой системе MYSQLD сервера? Имейте в виду, что дисковое пространство на сегодняшний день является самым дешевым активом на сервере. –

ответ

1

Двигатель ARCHIVE хранения может сделать что ты хочешь. Это специальный движок, который хранит строки в сжатом плоском формате. Это лучше всего использовать для однократного чтения, поскольку оно не индексируется. Но это очень быстро и очень экономично.

http://dev.mysql.com/doc/refman/5.5/en/archive-storage-engine.html

+0

механизм хранения архива не позволяет индексировать - даже не первичный ключ. Эти данные должны быть доступны достаточно регулярно и не будут хорошим кандидатом для архивной таблицы. Эта таблица не была бы стабильным размером до примерно 15M строк - и любые регулярные отборы против нее были бы жестокими – Will

+0

Правильно, ARCHIVE бесполезен, если вам нужно случайным образом получить доступ к данным. –

Смежные вопросы