当社のアプリケーションでは、サーバーから統計データ(負荷、ディスク使用量など)を収集します。膨大な量のデータがあり、常にすべてのデータを必要とするわけではないため、生データを取得して最小値を計算する「圧縮」ルーチンがあります。多数のデータポイントの最大値と平均値。これらの新しい値を同じテーブルに保存し、数週間後に古い値を削除します。
今、私はこの圧縮ルーチンを書き直す任務を負っています。新しいルーチンは、1年間のすべての非圧縮データを1つのテーブルに保持し、「圧縮」データを別のテーブルに保持する必要があります。私の主な関心事は、データベースに継続的に書き込まれるデータを処理する方法と、「トランザクションテーブル」を使用するかどうかです(より良いものを思い付くことができないので、私自身の用語です。コミットについては話していません。 / rollbackトランザクション機能)。
現在のところ、データコレクターはすべての情報をという名前のテーブルに挿入しovak_result
、圧縮されたデータはで終わりovak_resultcompressed
ます。しかし、「一時ストレージ」と呼ばれるテーブルを作成して「一時ストレージ」としてovak_resultuncompressed
使用することには、特定の利点または欠点がありますか?圧縮ルーチンに適した最小限に抑えられますが、すべてのデータをあるテーブルから別のテーブルに継続的にシャッフルする必要があり、で常に読み取り、書き込み、削除が行われます。ovak_result
ovak_result
ovak_result
この種のものを処理するためのMySQLのメカニズムはありますか?
(注意:ここでは非常に大きなデータセットについて説明しています(非圧縮テーブルで約1億行、圧縮テーブルで約1〜10 M行)。また、ソフトウェアとハードウェアの両方の構成で、ほぼやりたいことができます。したがって、MySQLの構成やハードウェアのセットアップに関するヒントやアイデアがある場合は、それらを実行してください。)