| 2004年3月25日
『どっとねっとと雑多な日々 24』
今回は SQL Server 2005 ( Yukon から 2005 という正式名がアナウンスされました。)に搭載されるパフォーマンスデータを見れるシステムテーブル(ビュー)とその活用例を紹介します。
SQL Server マガジンの座談会でも話をしましたが、SQL Server 2005 にはパフォーマンス情報が見れるシステムテーブル(ビュー)が追加されました。このテーブル(ビュー)にはパフォーマンスモニタに登録されている情報が見れます。
そのテーブル名は sysperfinfo という master 上にあるビューです。
テーブルの構成は
object_name nchar(128)
counter_name nchar(128)
instance_name nchar(128)
cntr_value int
cntr_type int
です。
このうち object_name と counter_name に登録されるデータの一覧は私のBLOGに書きましたので参照してください。
http://blogs.sqlpassj.org/mitsugi/archive/2004/03/24/1389.aspx
この情報を定期的にテーブルに格納して、それを表示(SQL Server Reporting Sercices など)させれば、レポート作業がかなり楽になると思います。
定期的にテーブルにパフォーマンスデータを格納させるためのサンプルスクリプトを書きましたので、参考にしてください。
※このサンプルでは spInsertPerformanceData ストアドプロシージャを定期 的に実行するように Job
登録すればよいかと思います。
ただし、sysperfinfo はかなりコストがかかるので、短い間隔で実行させないようにしましょう。
CREATE DATABASE PerformanceDB
GO
USE PerformanceDB
GO
CREATE TABLE PerformanceTable
(
[PID] INT IDENTITY(1,1) PRIMARY KEY,
[object_name] nchar(128),
[counter_name] nchar(128),
[instance_name] nchar(128),
[cntr_value] int,
[cntr_type] int,
[PerformanceDate] DATETIME,
[RowNumber] TIMESTAMP
)
GO
CREATE PROCEDURE spInsertPerformanceData
AS
SET NOCOUNT ON
DECLARE @dDATETIME DATETIME
SET @dDATETIME = GETDATE()
BEGIN TRANSACTION
BEGIN
INSERT INTO PerformanceTable
(
[object_name],
[counter_name],
[instance_name],
[cntr_value],
[cntr_type],
[PerformanceDate]
)
SELECT
t.[object_name],
t.[counter_name],
t.[instance_name],
t.[cntr_value],
t.[cntr_type],
@dDATETIME PerformanceDate
FROM
master..sysperfinfo t
IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
RETURN
GO
|