質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

2回答

1655閲覧

データベースの統計情報について

退会済みユーザー

退会済みユーザー

総合スコア0

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2016/10/13 13:49

データベースの統計情報の取り扱いについての情報です。
「達人に学ぶDB設計徹底指南書」という本を読んで勉強しています。
その本で統計情報についての記載があります。
「統計情報はテーブルやインデックスなど「データ」についてのデータ、すなわち「メタデータ」です。DBMSはこのメタデータを頼りにSQLのアクセスパスを決定します。その具体的なプロセスには、ユーザーは基本的に関わらないため、SQLがどのようなアクセスぱすで実行されるか、という問題には、ユーザーは統計情報を通してのみ関与することになります。」

統計情報収集の範囲について、

「統計情報を収集する範囲は、これまでの統計情報についての説明から自ずと導かれます。つまり、「大きな更新のあったテーブル(及びインデックス)」が対象です。
統計情報収集というのは、割と負荷の高い処理でもあります。したがって、データが更新されていないテーブルまで再収集の対象に含めるのは、収集にかかる時間を無駄に長くするだけなので、本当に必要なテーブルに限定する必要があります。
統計情報収集は、通常のテーブルだけを考える場合、その対象に悩むことはあまりありません。どのテーブルがいつ更新されるか、ということは、テーブルを設計したエンジニアであれば知っていて当然ですし、CRUD表のような形で整理もすることができるからです。」

統計情報収集の範囲というのは、更新されたテーブルだけが対象となる、ということだと思うのですが、その範囲というのはDBMSが勝手に判断してくれる、ということではないのでしょうか?
つまり、Aというテーブルがあって、それが更新されたとします。
そうすると、DBMSが勝手にAというテーブルに更新があったことを判断して、統計情報収集の範囲をAにしてくれる、と思っているのですが、そうではないのでしょうか?
いずれにせよ、「統計情報収集は、通常のテーブルだけを考える場合、その対象に悩むことはあまりありません。どのテーブルがいつ更新されるか、ということは、テーブルを設計したエンジニアであれば知っていて当然ですし、CRUD表のような形で整理もすることができるからです。」
の文章が何を統計情報収集ということに関して、何を伝えないのかいまいち理解できません。
いつ更新されるかという情報やCRUD表が統計情報収集処理にどのように関係するのでしょうか?
何か不足している情報があるかもしれません。
その場合は教えてください。
すぐに補足いたします。
回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

大筋でmatsuさんのおっしゃる通りですが、
少しだけ補足しときます。

統計情報収集の範囲というのは、更新されたテーブルだけが対象となる、ということだと思うのですが、その範囲というのはDBMSが勝手に判断してくれる、ということではないのでしょうか?

統計情報の収集は基本的にDBA(データベース管理者)のタスクで、
自動収集にしろ手動で収集するにしろ対象テーブルの判断・収集タイミングはDBA側で設定ないし、収集コマンドの実行を行います。
(自動収集について、例えばOracleとかだとスケジューリング設定ができ少しは楽ができます。)

また統計情報の再取得が効果的なのは、特に大量のデータ登録・更新・削除が行われた場合で、
1レコード登録があったから統計情報を再収集するというのは、
効果も見込めないのであまり現実的ではありません。

更に言うと、
あえて統計情報を再収集したくないケース(現在の検索パスから変えたくない場合など)も存在するため、
この辺りをDBMSで勝手に判断してというのは難しかったり、ありがた迷惑になることが考えられます。

そのため統計情報収集対象の選定は、
事情に精通したDBAに担当させるのが一番理想的かと思います。

CRUD表云々の件は、
収集対象を選定する上で客観的な根拠たる資料の一例として示されているだけですね。

投稿2016/10/13 16:31

編集2016/10/13 16:35
Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/14 13:44

なるほど、回答ありがとうございます。 それでは基本的には、「大きく変更されたテーブル」に対して統計情報を収集するように設定すればよいように感じたのですが、いかがでしょうか?(もちろん現在の検索パスから変えたくない場合などもあるとは思いますが、今は考えないとして)
Panzer_vor

2016/10/17 12:18

> billさん 返事が遅くなり申し訳ありません。 基本的には更新量の多いテーブルを対象とするというので問題はないと思います。 (当方もDB管理系は浅いので断定はできませんが^^;) 更新の多めのテーブルをリストアップして、 ある程度定例的なジョブ(バッチ作るケースもあるかも)とするのはありかと思います。 ただ自動化するにしても、 実行前に統計情報を取り直して問題ないかのチェックは、事故を防ぐ意味でも念のため入れた方が良いかもしれませんが。
guest

0

統計情報収集の範囲というのは、更新されたテーブルだけが対象となる、ということだと思うのですが、その範囲というのはDBMSが勝手に判断してくれる、ということではないのでしょうか?
つまり、Aというテーブルがあって、それが更新されたとします。
そうすると、DBMSが勝手にAというテーブルに更新があったことを判断して、統計情報収集の範囲をAにしてくれる、と思っているのですが、そうではないのでしょうか?

統計情報収集の範囲は、良く更新されるテーブルを対象とすべきという話だと理解しました。
そして、アクセスがあっただけで情報収集の基準としちゃまずいからどのテーブルが重要か分かる人間の判断を入れましょうという内容だと思います。
CRUD表云々は、どのテーブルが重要か分かる人間が知らない人間にどのテーブルが重要か伝える手段として提示されているだけで本筋とはあまり関係ないと思います。

投稿2016/10/13 14:28

matsu

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/14 13:46

回答ありがとうございます。 「人間の判断」というのは、DBMSに対してどのように統計情報を取得するかについての情報を与えるかについての判断ということでしょうか?
matsu

2016/10/14 14:08

基本その通りですがDBMSとは限りません。統計情報はログ解析で統計情報を解析する場合もあります。人にデータを渡すことで統計情報を得る場合もあるでしょう。あくまでDBMSはその解析手段の1つにすぎません。 どの情報が、正確な統計情報を得るために必要かを判断する必要があるということです。 尚、DBMSは統計情報を基にアクセスパスを決定しているのではなく、アクセスパスがどのようになっているのか人が理解する上で重要となるのが統計情報という意味だと思います。
退会済みユーザー

退会済みユーザー

2016/10/15 07:14

お返事ありがとうございます。 >統計情報はログ解析で統計情報を解析する場合もあります。人にデータを渡すことで統計情報を得る場合もあるでしょう。あくまでDBMSはその解析手段の1つにすぎません。 どの情報が、正確な統計情報を得るために必要かを判断する必要があるということです。 あまり文意を掴めませんでした。 実際の現場でどのようなことをしているかというのは私は分からないのですが、まず正確な(現在DBMSが使用している統計情報)統計情報を得るための、手段がログ解析や人にデータを渡すことになるのでしょうか? >DBMSは統計情報を基にアクセスパスを決定しているのではなく、アクセスパスがどのようになっているのか人が理解する上で重要となるのが統計情報という意味だと思います。 「達人に学ぶDB設計徹底指南書」の181ページによると、オプティマイザがカタログマネージャから統計情報を受け取り、この統計情報の中から最短と思われる経路を選択し、SQLを手続きに変換する、とあるのですが、これはDBMSが統計情報を基にアクセスパスを決定しているというわけではないのでしょうか? おそらく文意をきちんと取れていないと思います。 補足をいただけると、嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問