0

我正在尝试将本质上是日志数据的内容存储在 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;
4

1 回答 1

1

ARCHIVE存储引擎可以做你想做的事。这是一个特殊的引擎,以压缩的平面文件格式存储行。它最适合一次写入但不经常使用,因为它没有被索引。但它非常快速且非常节省空间。

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

于 2012-11-11T21:03:12.983 回答