SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

AlwaysOn Availability Groups のセカンダリレプリカの統計情報について

leave a comment

Denali の Availability Groups (AG) のセカンダリレプリカは読み取り専用のデータベースとして使用することが可能です。

読み取りで使用した際の統計情報がどのように管理されているかが気になりますよね。
今回はセカンダリレプリカの統計情報についてみていきたいと思います。

参考となる情報は以下になります。
SQL Server Denali AlwaysOn?Q&A
Read-Only Access to Secondary Replicas (AlwaysOn Availability Groups)

■セカンダリレプリカの統計情報


セカンダリレプリカのデータベースに設定されている統計情報ですが、プライマリの統計情報と同一のものが設定されます。
こちらがプライマリに設定されている統計情報になります。
image
image

それでは、セカンダリレプリカの統計情報を確認してみます。
image
image

同様の統計情報 (更新状況も含め) がセカンダリレプリカに設定されているのが確認できますね。

セカンダリレプリカは読み取り専用のデータベースですので、セカンダリレプリカ上で統計情報を直接更新することはできません。
image

統計情報を作成 / 更新したい場合は、プライマリで作成 / 更新をしその結果をセカンダリに伝搬させる必要が出てきます。

 

■セカンダリレプリカの統計情報の自動作成


セカンダリレプリカで統計情報を作成 / 更新することはできないのですが例外があります。
それが [統計情報の自動作成 / 自動更新] になります。

データベースのプロパティの設定で不足している統計情報を自動作成 / データの更新料が一定になった場合に統計情報を自動更新する機能があります。
image

セカンダリレプリカでは、統計情報の自動作成 / 自動作成によって作成された統計情報の自動更新は可能となっています。

それでは実際に動作を見ていきたいと思います。
現在、セカンダリレプリカには一つの統計情報のみが存在しています。
image

統計情報が作成されていない列を使用して検索を行い、統計情報の自動作成によって統計を作成させてみます。
image

セカンダリレプリカでは統計情報の手動作成 / 手動更新はできないのですが、不足している統計情報の自動作成は可能となっています。
セカンダリレプリカで作成された自動作成の統計情報に関しては [readonly_database_statistics] という名前が設定されます。

これは、tempdb を使用して作成された一時的な統計情報となります。
# tempdb 上に作成されているものになりますので、SQL Server が再起動すると削除されます。

統計情報を確認するためのテーブルとして [sys.stats] がありますのでこのテーブルから情報を確認してみます。
image

Denali では sys.stats の列が拡張され、[is_temporary} という列が追加されています。
この列を確認することでそれが、一時的に作成された統計情報なのかを調べることができます。

この tempdb 上に作成された一時的な統計情報に関しても手動で更新はできないのですが、
image

この統計情報に関しては自動更新による更新も行われるため、一時的に作成された統計情報に関しては定期的なメンテナンスが行われるようです。

セカンダリレプリカを読み取りとして使う場合、基本的な統計情報に関してはプライマリの状態が引き継がれますが、プライマリで不足している統計情報に関しては自動作成が有効であれば、セカンダリ上に独自に作成されることで検索を最適な状態に持っていくことができる仕組みが実装されているようですね。

Share

Written by Masayuki.Ozawa

8月 15th, 2011 at 8:24 am

Posted in SQL Server

Tagged with , ,

Leave a Reply