我正在尝试在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;
答案 0 :(得分:1)
ARCHIVE
存储引擎可以执行您想要的操作。它是一种特殊的引擎,以压缩的平面文件格式存储行。写入一次读取不常用,因为它没有编入索引。但它非常快速且节省空间。
http://dev.mysql.com/doc/refman/5.5/en/archive-storage-engine.html