データベースの統計情報の取り扱いについての情報です。
「達人に学ぶDB設計徹底指南書」という本を読んで勉強しています。
その本で統計情報についての記載があります。
「統計情報はテーブルやインデックスなど「データ」についてのデータ、すなわち「メタデータ」です。DBMSはこのメタデータを頼りにSQLのアクセスパスを決定します。その具体的なプロセスには、ユーザーは基本的に関わらないため、SQLがどのようなアクセスぱすで実行されるか、という問題には、ユーザーは統計情報を通してのみ関与することになります。」
統計情報収集の範囲について、
「統計情報を収集する範囲は、これまでの統計情報についての説明から自ずと導かれます。つまり、「大きな更新のあったテーブル(及びインデックス)」が対象です。
統計情報収集というのは、割と負荷の高い処理でもあります。したがって、データが更新されていないテーブルまで再収集の対象に含めるのは、収集にかかる時間を無駄に長くするだけなので、本当に必要なテーブルに限定する必要があります。
統計情報収集は、通常のテーブルだけを考える場合、その対象に悩むことはあまりありません。どのテーブルがいつ更新されるか、ということは、テーブルを設計したエンジニアであれば知っていて当然ですし、CRUD表のような形で整理もすることができるからです。」
統計情報収集の範囲というのは、更新されたテーブルだけが対象となる、ということだと思うのですが、その範囲というのはDBMSが勝手に判断してくれる、ということではないのでしょうか?
つまり、Aというテーブルがあって、それが更新されたとします。
そうすると、DBMSが勝手にAというテーブルに更新があったことを判断して、統計情報収集の範囲をAにしてくれる、と思っているのですが、そうではないのでしょうか?
いずれにせよ、「統計情報収集は、通常のテーブルだけを考える場合、その対象に悩むことはあまりありません。どのテーブルがいつ更新されるか、ということは、テーブルを設計したエンジニアであれば知っていて当然ですし、CRUD表のような形で整理もすることができるからです。」
の文章が何を統計情報収集ということに関して、何を伝えないのかいまいち理解できません。
いつ更新されるかという情報やCRUD表が統計情報収集処理にどのように関係するのでしょうか?
何か不足している情報があるかもしれません。
その場合は教えてください。
すぐに補足いたします。
回答よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/14 13:44
2016/10/17 12:18