私はMySQLの大きなテーブルを扱うためのオプションを探しています。私のデータベースには、1億3000万以上の行(70GB以上)が非常に高速であるテーブルはほとんどありません。報告と分析のために、私はいくつかの集約関数を実行しなければならず、クエリはインデックスにもかかわらず非常に遅く実行されます。私はデータを集約してテーブルを作ろうとしましたが、それは最適ではありません。だから私はこの問題を解決するために使用できるツールのオプションを探しています。あなたがまだの場合は、あなたのテーブルをINGのpartition
を調べて非常に大きなMySQLのテーブルとレポート
答えて
スタート:
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
http://www.slideshare.net/datacharmer/mysql-partitions-tutorial
どのようにあなたのデータを '統合' ですか?使用している方法が最適でない可能性があります。 1つの良いアプローチ(これが実際に何をしているのかを教えてください)は、集計されたデータを含むテーブルを作成することです。そして、このようにそれを設定:
まず
- は(クーロンのか、何でもあなたが便利か、すでに設定されている場合があります)ジョブを作成します...データがメインテーブルに投棄されているかはさておき置くことデータがメインテーブルにロードされる方法(指定された間隔で実行されます(
MAIN
と呼びましょう)を実行します。 MAINテーブルが毎時ロードされたら、それを同期させます。半時間ごとに?関係ない。とにかく速度を確認することができます。また、ピーク時の近くでレポートが実行されている場合は、近くでスケジュールを設定してください。 統合データのテーブルを適切にインデックスします。それを
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年分のデータを運用データベースに保存しなければならないという経験がありました。それはドラッグのような感じでしたが、それはクライアントの要求だったので、私は必要なディスクスペースを私に与えてくれるだけでした。私の経験はMicrosoft SQL Server 2005であり、ストアドプロシージャとSSISは楽しいものでした。
これは既にわかっていない場合や、オプションを検討したいと思う他の人のためのものです。私はあなたがすでに上記のどれかを知らなかったと言っているわけではありません。私はあなたが試みた統合プロセスを持っていることを除いて、私があなたのポストからより多くの情報を持っていなかったことを考慮して、前に何ができるかを述べています。
あなたの提案をありがとう。私はすでにかなりの数を試しましたが、その順序ではないかもしれません。だから私は良い計画から始めなければならない。 – user1078191
ええ、私はそれを言及すべきでした..適切に計画し、予期し、過小評価することはありません(見積もりは、ディスク容量の面で、より良いものです)あなたの要件.. – Nonym
- 1. 非常に大きなテーブルをMYSQLの別のテーブルにコピーするには?
- 2. MySQLのサブクエリ巨大なテーブルでは非常に遅い
- 3. TFS tbl_TestResultテーブルが非常に大きい
- 4. 非常に大きなタイムスタンプ
- 5. jQueryモバイルフレームワークと非常に大きなデータリスト
- 6. アングルダイジェストループと非常に大きなモデル
- 7. 非常に大きなJarファイルとFAT32
- 8. BigQueryへの非常に大きなsqliteテーブルのインポート
- 9. 非常に大きなテーブルを持つLiferay 6の永続セッション
- 10. 非常に大きなテーブルのストレージサイズを最適化する
- 11. 大きなテーブルのクエリが非常に遅い
- 12. 非常に大きなダンプをMySQLデータベースにインポートする
- 13. 非常に大きな整数をMySQLに格納する
- 14. 非常に大きなMySqlデータベースを管理する方法
- 15. 非常に大きなテーブルを構成する方法
- 16. Pythonの非常に大きなブールリスト
- 17. のJava - 非常に大きな数(600851475143)
- 18. vb.netで非常に、非常に大きな数字
- 19. 非常に大きなレンダリングUIscrollview UIImage + Video
- 20. optomise非常に大きなテーブルクエリ
- 21. C#RSClientPrint非常に大きなスプール
- 22. ダイナミックプログラミング非常に大きなデータ値
- 23. 非常に大きなスクロールGtkDrawingArea
- 24. 非常に大きなPythonスクリプト
- 25. 非常に大きなビットマップを描く
- 26. laravel app.js非常に大きなファイルサイズ
- 27. 巨大なPostgreSQLのテーブル - 選択、非常に遅い
- 28. SQL Serverのインデックス - 非常に大きな値域に対してwhere句を持つ非常に大きなテーブル - where句のインデックスが必要ですか?
- 29. 非常に基本的なPHPとMySQL
- 30. 大きなテーブル(EF)での挿入速度が非常に遅い
どのような方法/アプローチデータの統合に使用していますか? – Nonym
いくつかの事前集計クエリを実行してサマリーテーブルを作成しました – user1078191
ハードウェア、ストレージエンジン、クエリ自体、インデックス - すべてがクエリの速度に影響します。 MySQLが何をするかを見るために 'EXPLAIN SELECT'を実行することができます。 70ギガは大量のデータですが、常に最適化することができます(異なるストレージエンジン、正規化、パーティション化) - 分析に必要な情報を投稿していないため、問題を特定し解決策を提案することは難しいNonymの回答などの通常の解決策を除きます。 –