mySQL以压缩格式存储数据

时间:2012-11-11 18:19:21

标签: mysql

我正在尝试在mySQL中存储本质上的日志数据 - 可能是未压缩格式的大量数据(25GB +月)。

每行只包含两列,一个日期时间列作为主键,一个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;

1 个答案:

答案 0 :(得分:1)

ARCHIVE存储引擎可以执行您想要的操作。它是一种特殊的引擎,以压缩的平面文件格式存储行。写入一次读取不常用,因为它没有编入索引。但它非常快速且节省空间。

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