SE の雑記

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

第 1 回 Get The Fact セミナーの振り返り その 10

leave a comment

今回は [パフォーマンスデータコレクション] について振り返っていきたいと思います。

SQL Server 2008 以降ではパフォーマンスデータコレクションという機能が追加されています。
パフォーマンスデータコレクションでは、SQL Server の状態をログとして記録し、現状 / 以前の状態をレポートとして確認することができます。

image

■パフォーマンスデータコレクションで取得できる情報


デフォルトで用意されている [システム データ コレクション セット] では、以下の項目を取得することが可能です。

クエリ統計
image
総 CPU 時間ごとの上位のクエリ
総実行時間ごとの上位のクエリ
I/O の合計数ごとの上位のクエリ
物理読み取りの総数ごとの上位のクエリ
論理書き込むの総数ごとの上位のクエリ
クエリ
クエリ実行の統計
クエリ プリン – 実行ごとの 論理書き込み数の 平均
サーバーの利用状況
image
CPU 使用率
メモリ 使用量
ディスク I/O の使用量
ネットワーク使用量
SQL Server の待機
SQL Server の利用状況
システムの CPU 使用率
プロセッサごとの CPU 時間 (%)
システムのメモリ使用量
メモリ使用量
キャッシュとページの比率
SQL Server メモリの使用量
メモリ カウンター (page life expectancy)
種類別の SQL Server 内部メモリの消費量
コンポーネント別のメモリの平均使用量
システムのディスク使用量
ディスクの応答時間
ディスクキューの平均の長さ
SQL Server ディスク I/O の使用量
ディスクの転送速度
ディスク、データベース、およびファイル別の仮想ファイルの統計
接続とセッション
要求
プランキャッシュのヒット率
tempdb の特性
ディスク使用量
image
データベース名
データベース 開始サイズ (MB)
データベース 傾向
データベース 現在のサイズ (MB)
データベース 平均拡張率 (MB/日)
ログ 開始サイズ (MB)
ログ 傾向
ログ 現在のサイズ (MB)
ログ 平均拡張率 (MB/日)
データベースのディスク使用量
総使用領域
データ ファイルの使用領域 (MB)
トランザクション ログの使用領域 (MB)
データ ファイルの使用領域 (%)
トランザクション ログの使用領域 (%)
データ / ログ ファイルの自動拡張 / 自動圧縮イベント
データ ファイルで使用されているディスク領域

 

これらの情報をデフォルトで用意されているレポートから取得することが可能です。

■SQL Server 2005 でパフォーマンス情報を取得する


パフォーマンスデータコレクションは SQL Server 2008 以降で追加された機能であるため、SQL Server 2005 では使用することができません。
以前、SQL Server 2005 を使っていた時は自分で実装したことはありますがそれも少し面倒ですよね。
# どのように実装したかについては別の機会にまとめたいと思います。

SQL Server 2005 でパフォーマンス情報を取得するための方法として、[SQL Server 2005 Performance Dashboard Reports] と呼ばれるツールが提供されています。
SQL Server 2005 Performance Dashboard Reports

このツールは Management Studio のカスタムレポートとして提供がされています。

インストールは以下の手順で実施します。

  1. ダウンロードした MSI ファイルを実行するとセットアップが起動しますので [Next] をクリックします。
    image
  2. [I accept ~] を選択して、[Next] をクリックします。
    image
  3. [Next] をクリックします。
    image
  4. [Next] をクリックします。
    デフォルトの設定では、インストール先ディレクトリは [C:Program Files (x86)Microsoft SQL Server90ToolsPerformanceDashboard] に設定がされています。
    image
  5. [Install] をクリックします。
    image
  6. [Finish] をクリックします。
    image

インストールですが、この状態ではカスタムレポートに必要となるファイル一式が展開された状態でインストールは実際にはされていません。
インストール先として指定したディレクトリを確認すると以下のようなファイルが格納されています。
image

クエリエディタで [setup.sql] を実行することで、[msdb] に Performance Dashboard Reports で必要となるオブジェクトが作成されます。

今回は、SQL Server 2008 R2 で実行しているのですが、SQL Server 2008 以降で setup.sql を実行すると以下のエラーが発生します。

メッセージ 207、レベル 16、状態 1、プロシージャ usp_Main_GetCPUHistory、行 6
列名 ‘cpu_ticks_in_ms’ が無効です。
メッセージ 15151、レベル 16、状態 1、行 1
オブジェクト ‘usp_Main_GetCPUHistory’ を 検索 できません。存在しないか、権限がありません。

SQL Server 2005 の場合は特に修正しなくても実行できるのですが、SQL Server 2008 以降で実行する場合には、[sys.dm_os_sys_info] の [cpu_ticks_in_ms] を [ms_ticks] に変更する必要があります。

image

image
に変更します。

修正して実行をすると SQL Server 2008 以降でも Performance Dashboard Reports を実行することができます。

実際にレポートを表示するためには、[レポート] → [カスタム レポート] をクリックして、
image

展開したディレクトリから、[performance_dashboard_main.rdl] を開きます。
以下のダイアログが表示されたら、[実行] をクリックします。
image

実行すると以下のようなレポートを表示することが可能です。
image

パフォーマンスデータコレクションとの違いは、この情報は DMV 等の情報から現状を取得しているため、サーバーを再起動すると情報がクリアされてしまうというところかと。
# 情報を保存しておくという機能がありません。

英語のツールですが、SQL Server 2005 で使えるという点は良いですよね。

■Management Studio のレポート機能


パフォーマンスデータコレクションは Management Studio のレポート機能を使用してレポートを表示しています。
セミナーの中で [レポートは Reporting Services をインストールしていなくても実行できるのでしょうか] という質問がありました。

この点について少しまとめていきたいと思います。

Management Studio のレポート機能ですが、Reporting Services とは異なるモジュールとして実装がされています。
そのため、Reporting Services をインストールしなくても使用できるのですが、異なるモジュールで実装されているため、Reporting Services で機能が追加されても Management Studio のレポート機能には反映がされていなかったりします…。
# パフォーマンス データコレクションのレポート機能は [Microsoft.SqlServer.Management.DataCollectionUITasks.dll] 標準レポート機能は [Microsoft.SqlServer.Management.Reports.dll] のアセンブリで実装されています。

SQL Server 2008 ではレポートを WORD でエクスポートする機能が追加されています。
Microsoft Word へのエクスポート

SQL Server 2008 R2 の Management Studio のレポート機能では WORD へのエクスポートを実行することができません。
PDF のフォント埋め込みも実装されていないので、日本語が含まれるレポートで文字化けする箇所があります。
# 日本語で Tahoma フォントを指定していて文字化けしているというオチなのですが…。
同じようなレポート機能ですが、使用しているモジュールが違うので、Management Studio と Reporting Services では機能に差があります。

image

Management Studio で使用されているレポート機能の RDL (レポート定義ファイル) はアセンブリに内包されているので、少しカスタマイズしたいと思っても定義を直接変更できなかったりもします。

独立したモジュールとなっていますのでもし、レポートが表示できないような状態になった場合は、Management Studio に異常が発生していないかを確認するのが良いかと思います。
# レポートの解析 / 作成は Management Studio が行っていますので。(レポートに必要なクエリが実行できない場合は SQL Server 側に異常があるのかもしれませんが。)

Management Studio のレポートですが Reporting Services とは独立した実装になっているため、注意点があります。

Management Studio のレポートの定義ですが、
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
が使用されています。

これは、SQL Server 2005 の Reporting Services で使用されていたスキーマバージョンになります。
スキーマバージョンについては以下の技術情報に記載がされています。
レポートの作成と配置に関する計画

2010 RDL SQL Server 2008 R2 http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition
2008 RDL SQL Server 2008 http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition
2005 RDL SQL Server 2005 http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition
2000 RDL SQL Server 2000 http://schemas.microsoft.com/sqlserver/reporting/2003/10/reportdefinition

 

2010 RDL が SQL Server 2008 R2 の Reporting Services で使用されているスキーマバージョンなのですが、SQL Server 2008 R2 の Management Studio では、2005 RDL が使われています。
そのため、SQL Server 2005 ~ 2008 R2 で Management Studio のカスタムレポートを作成するためには、Report Builder 1.0 または、SQL Server 2005 の BI Development Studio で作成する必要があります。

余談ですが、Denali CTP 1 の Management Studio では、
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">
が使用されています。
2008 RDL が使用されているので、Report Builder 2.0 または、SQL Server 2008 の BI Development Studio でカスタムレポートを作成することができます。
# RTM では最新の RDL で実装してもらえると良いのですが…。

どこかで Reporting Services と Management Studio の機能が一緒になるといいのですけどね。

 

駆け足気味ではありましたが、10 回に分けて 第 1 回 Get The Fact セミナーの内容について振り返ってみました。
セミナーではいろいろな話題があり、自分で深く掘り下げたいと思う内容も多々ありかなり勉強になったと思っています。

7 月まで月一で開催されているセミナーですので興味のある方がいらっしゃいましたら以下のサイトから申し込みをしてみてはいかがでしょう。
SQL Server の真実 – Get The Fact セミナー

直近では、1 月 20 日に 2 回目のセミナーがあり、私も参加しようと思っています。
# 参加できたら振り返りはまとめようと思います。

Written by masayuki.ozawa

1月 2nd, 2011 at 2:37 pm

Leave a Reply

*