何よりもすることができdenormalize mysqlデータベース?
-
08-06-2019 - |
質問
私は大きなデータベースの規格化の順にデータが非常に遅いクエリーのための報告といいます。多くのするクエリを使用している報告書の参加やテーブルを検討何十、何百何千ものです。
多くのお問い合わせて最適化されているサーバの負荷軽減を考え、回すと高速になります。と思うのでそのコピーをデータdenormalized形式です。
そのアイデアにアプローチを考えていますか。べての始まりカップルの最悪のお問い合わせくからありますか?
解決
かつを指定するmysqlがいいかもしれませんが、多数の参加または数行のお話をしている必要があるだ多くの問題の正しい指標です。て分析し、クエリプランを見る場合は抜けている。
http://dev.mysql.com/doc/refman/5.0/en/explain.html
しているようだsatisifedご指標としてい浮かべるのはその他の通り、正規化が右の答えです。ただけの場合一部のクエリが問題を、マニュアルアプローチは適切ではある種のデータ保存ツールの方が良いかもしれない創造のプラットフォーム開発データ。
このサイトの見つけることに触れる:
http://www.meansandends.com/mysql-data-warehouse/?link_body%2Fbody=%7Bincl%3AAggregation%7D
こちらは簡単なる技術を使用でき続denormalizingクエリー、んだという数)を見たいな方法が良いと思いますに交換するOLTPのテーブルで作成した報告のため).いて本クエのお申し込み:
select a.name, b.address from tbla a
join tblb b on b.fk_a_id = a.id where a.id=1
きdenormalizedテーブルの移植とほぼ同じクエリ:
create table tbl_ab (a_id, a_name, b_address);
-- (types elided)
通知の力に合わせテーブルのエイリアスを使用す
insert tbl_ab select a.id, a.name, b.address from tbla a
join tblb b on b.fk_a_id = a.id
-- no where clause because you want everything
その後に固定のアプリが利用denormalizedテーブルスイッチのドットのために努.
select a_name as name, b_address as address
from tbl_ab where a_id = 1;
のための巨大な質問をこの巨大なモールがあるので時間が明確でのデータがどこから来たときに問合せしております。
こんに叫このリゾートがあります。私はベットが複数指数のようお手伝いいたします。時から正常化を忘れてはならないの余分のスペースにディスクの内容、施するには、以下の方法がありますのクエリを生成するための新します。この夜、或いは活性が低い。のデータをテーブルはもちろん、絶対に正確にできます。
[他の編集]を忘れない新しいテーブルを作成する必要物価連動!の良い部分ができる指標で心ゆくまな更新をロック競合ではないですし、ほとんどのバルクを挿入し、表のみの選択.
他のヒント
ごきげんよう、トメ子です、ビットの接線がまた見がある場合の指数を追加できるの?
持っていない多くのDBを背景に、私は、こうした作業データベースの多くは最近やって発見された多くの質問を改善することができるだけで追加スを作成します。
しDB2、ありと呼ばれるコマンドdb2explnとdb2advis、最初にするかどうかを示すテーブルスキャンvs指数のスキャンされ、または指標を付け加えることができます性能の向上を図ります。思MySQLはこれらに類する手工具...
になった場合こんなかに置いてくっていただき---だってもこのルートは、その思いなどをお届けできます。
もうひとつの可能性を"顕在化表するなどしていDB2には、できるテーブルは内蔵のパーツから複数のテーブル.このようにより正常化のカラムが提供するビューへのアクセスタ---がわからない場合は、厳しい性能への影響を挿入/更/削除(の場合には"実現"、そのことを選択して価値を物理的に格納されます。
ラのその他のコメントは、私が探してお索引を
一見今年の当社のMySQLデータベースの電力の複合スを作成します。例えば、場合には、報告の順番の番号上日付の範囲、複合インデックス番号、ご注文日よりカラムできます。私はMySQLを使用することはできますか一つのインデックスクエだった別の指標を注文番号や日時について決定してください。使用説明コマンドで観測を行っている。
を表示し、性能の良い指標を含む数多くの複合指数で実行のクエリの接合3つのテーブルデータベースでは、ほぼ瞬時に結果が必要である。より複雑な報告の多くはクエリ実行の下には10秒です。これらの3表して33百万円110百万円140百万行です。ことがありますのでご了承ってnormalisedこれらの若干高速化当社普通のクエリのデータベースです。
情報に関するテーブルの種類報告の質問が許可さらにご提案します。
For MySQLは好きこのんで 実世界デザイパフォーマンスと拡張性、MySQL版.この多く含まれ別個の相談に乗り出速イナリを使用しています。
きたいと考え選定の一時テーブルおよびその後に行われます。これを回避する必要が再びテーブル毎に単一クエリで行と仮定するときは、一時テーブルに数多くのクエリのコースを受講した。これは、基本的にはすdenormalizedデータだけを選択して通話がされることもありませんデータの一貫性を追求します。
さらに自分の答えは、もう一つのアプローチしている"とい状況は店舗キーの報告データを別の概要を参照。ある報告の質問をするばかりでは遅れをとってもdenormalisingとoptimisationsしたものであることが判明したテーブルを作成と保管走行計の概要に関する情報は月を通じてもたっては、月末報告に速くします。
このアプローチを簡単に実施しようというのでもいいで働いていたものだけで追加のデータベースを挿入す。
ってtoying複合指標を見ても不特典---そんな設定のいくつかの試験が可能な保存が私..少なくとも少し長くなります。