partition
を調べることから始めます まだ行っていない場合は、テーブルを作成します:
http://dev.mysql.com/doc/refman/5.1 /en/partitioning.html
http://www.slideshare.net/datacharmer/mysql-partitions-tutorial
データをどのように「統合」していますか?使用している方法が最適ではない可能性があります。 1つの良いアプローチ(これが実際に行っていることであるかどうかを知らせてください)は、集約されたデータを含むテーブルを作成することです。次に、次のように設定します:
まず、データがメインテーブルにどのようにダンプされるかを脇に置きます...
-
データがメインテーブルにロードされる方法(
MAIN
と呼びましょう)に関連して、指定された間隔で実行されるジョブ(cronまたは便利なものまたは既に構成されているもの)を作成します 、前進)。 MAINテーブルが1時間ごとに読み込まれる場合は、同期します。 30分ごと?関係ない。とにかく速度を確認するか、レポートが実行されるオフピーク時間に近い場合は、その近くにスケジュールを設定できます -
統合データのテーブルに適切にインデックスを付けます。それを
AGG
と呼びましょう 前進します。 -
MAINからAGGにデータをロードするストアドプロシージャを作成します。これは基本的に
AGG LOAD FOR INTERVAL-?
。もちろん、データがMAINに挿入される方法とタイミングを知っているのはあなただけなので、集約の意図が何であるかを知っているのもあなたです。集約の意図が完了していない場合でも、集約ストアドプロシージャを実行し続けることもできます(たとえば、1日中です。したがって、それが設定されるまでは累積実行です) -
STAGING
を使用する テーブル。 私にとって、彼らは最高です 。 -
データを再チェックするストアドプロシージャを作成して、このプロシージャを実行することにより、レコードの更新または追加の挿入をAGGテーブルに反映できるようにします。更新する範囲のパラメーターを含めます。毎日の場合は、
DAILY AGG LOAD
があります。 およびDAILY AGG RELOAD
手順。AGG CHECK INTERVAL
を含める およびAGG CHECK DAILY
あなたが夜よく眠るのを助ける手順。ああ、言うまでもなく、AGG DATA HOLE CHECK
またはMISSING AGG DATA CHECK
集約テーブルまたはメインテーブルまたはステージングテーブル(できれば)から取得できる必要最小限のデータ量のチェックを実装するビジネスルールを適用します -
もちろん、
AGG
は絶対に変更しないでください テーブル。常にリロードするだけです。 -
これはどのように役立ちますか?その場合は、レポートに
AGG
をクエリさせるだけでよいのではないでしょうか。 テーブル、これはより小さく、より高速です(集計がすでに行われているため)?パフォーマンスの問題は間隔の読み込みに関係している可能性がありますが、テーブル、そのインデックス、およびそのメンテナンスを適切に構造化すれば、それだけの価値があるはずです。 -
パーティショニングはどこから来るのですか?アーカイブ。一定の時間が経過すると(チーム/ボス/トップマンに何が受け入れられるかについて話し合います)、
MAIN
から古いデータをアーカイブできます。 。 1年分のデータを本番データベースに保存する必要があることを経験しました。それはちょっとドラッグのように感じましたが、それはクライアントの要求だったので、会社は私に必要なディスクスペースを与えるしかありませんでした(手をこすります)そして男の子は私がきちんと動くものを得るまでそれで遊んでいました。私の経験はMicrosoftSQLServer 2005であり、ストアドプロシージャとSSISによって楽しくなりました。
あなたがまだそれを知らないなら、そしてオプションを検討したいと思うかもしれない他の人のために、これはすべてです。私はあなたが上記のどれもまだ知らなかったと言っているのではありません。あなたが試した統合プロセスがあることを除いて、あなたの投稿から作業するためのより多くの情報がなかったことを考慮して、私は以前に何ができたかを述べています。