2012-01-08 3 views
0

1日に来る詳細レコード(統計データとパフォーマンスデータ)は、1日に1億〜2,000万もあり、それを読み込み、24時間ごとと1日ごとの要約レコードに要約する必要があります。MySQLで詳細レコードから要約レコードを作成する最も良い方法は?

このプロセスでは、いくつかのフィールドの平均値が計算され、他の値の最大値と最小値が取得されます。重要なCPUはありません。レコードは、各詳細レコードがわずか挿入遅延、中に来ている間、要約レコードに詳細レコードを要約)

A:

はそれがより良いですか?私はいくつかの異なるシステムがデータをインポートしているので、サマリーテーブルに多くのロック(アップデートのための選択など)があると仮定します。

B)時間が終了するまで待ってから、前の時間のデータ全体を選択して要約レコードを作成しますか?ユーザーが統計を見るのが遅れることがありますが、詳細レコードはその時間に利用可能になります。

おそらく別の方法がありますか?

答えて

1

サマリーテーブル用にviewを作成してください。あなたのすべてのインサートはいつものように動作します。要約として必要に応じてビューを作成するだけです。それはメインテーブルで自動的に更新されます。

また、24時間ごとと1日ごとの要約を作成することもできます。ビューは、呼び出されると結果セットを生成するストアド・クエリーです。ビューは仮想テーブルとして機能します。ビューの詳細については

は参照してください。http://dev.mysql.com/doc/refman/5.0/en/create-view.html

は、私はあなたがmysql views.

+0

私はそれがサーバーを殺すようなクエリを作成することに懸念しています。そうでなければ、ビューを作成するのではなくランタイムレポートに対して同じクエリを作成するだけです。現在、データベースには50億行があります。おそらく私は何かを見逃しています(ビューの利点?) – MichaelICE

+0

MYSQLはマテリアライズドビューをサポートしていますか? – MichaelICE

+0

はいできます。ここを見てくださいhttp://fromdual.com/mysql-materialized-views –

0

に関するさらなる支援が必要な場合には、単一の更新を実行するために必要な負荷に依存したいが、私はおそらく行くと思い知ってみましょう別のサマリーを実行します。私はたぶん、1つのアップデートが累積オン・インサートのアイデアよりも短い時間で済むと言って小さな賭けをしました。