0

基本的にログデータをmySQLに保存しようとしています-非圧縮形式のデータが大量になる可能性があります(25GB以上の月)。

各行は、主キーとしての datetime 列と、data8k ~ 16k の非圧縮データを含む列の 2 つの列のみで構成されます。

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 に答える