2012-03-13 14 views
1

私は、あるソースから約20の任意の測定を毎秒受け取るプログラムを持っています。各測定には、タイプ、タイムスタンプ、最小値、平均値、最大値があります。次に、各測定タイプのX集約を作成する必要があります。数百万行のmysqlハードドライブの効率

プログラムは100秒間のソースを同時に設定することができます。その結果、すばやく保存してすばやく取得する必要がある多くのデータが生成されます。

これが実行されるシステムにはメモリ/ストレージ/ cpuの制限はありませんが、その機能の限界近くでhddに書き込む別のサービスがあります。この質問のために、これが "トップライン"のHDDであると仮定して、私はhddにアップグレードすることはできません。

私が今やっていることは、新しい測定タイプに遭遇したときに各測定のタイムスタンプ値に沿ってパーティショニングする測定タイプごとのテーブル(20xソース)を生成することです。私はこれを行って、HDD全体の測定データを断片化しないようにしています。これにより、最小限の量の「シーク」でデータを挿入または照会できるようになります。

これは意味がありますか?ジョインや複雑なクエリを行う必要はありません。タイムスタンプ範囲では、すべてストレートなバッチインサートまたは単一の測定タイプのクエリです。

MySqlはどのようにデータをHDDのテーブルに保存しますか? &クエリの挿入中にHDDのシークを最小限に抑えるようにDBを設計するにはどうすればよいですか?

答えて

0

一般的な質問は、googleなどの検索エンジンを使用して、ドキュメントを参照するか、またはナレッジベースの記事を参照することで確認できます。デフォルトのMyISAMエンジンを使用している場合、各テーブルはdb固有のディレクトリに3つのファイルとして格納されます。大きなものは行データのMYDファイルとすべてのインデックスのMYIファイルです。

あなたができる最も重要なことは、アクセスパラメータとキャッシュを最適化できるように、設定パラメータが正しいことを確認することです。 MySQLは現実的に期待するよりも優れた仕事をします。詳細については、http://dev.mysql.com/doc/refman/5.1/en/option-files.htmlを参照し、このセクションで説明するようにシステム上にあるmy-small.cnfおよびmy-large.cnfの設定を比較してください。

関連する問題