トップ回答者
sysの動的管理ビューのSELECT、動的管理関数実行の影響

質問
-
SQL Server 2005を使用してWEBサービスを運営しております。
本番環境のDBで、動的管理ビューと動的管理関数を使ったSELECT文を実行して様々な情報を取得したいのですが、
その影響について心配しております。
■ 実行したいSQLの例
select * from sys.[動的管理ビュー名 or 動的管理関数名]
このとき、以下のようなことが起きるのかが知りたいです。
・ユーザテーブルやインデックスにSロックをかける場合があるのか
・長時間実行することで、対象の動的管理ビューの更新に影響があるのか
・その他、動的管理ビューや動的管理関数使ったSELECTを実行するときの影響、懸念点、気をつけるべきことなどあるか
回答に足りない情報などありましたら補足させていただきます。
ご回答いただけますと幸いです。
宜しくお願いいたします。
回答
-
動的管理ビューなどは内部的にも使用されているので、一般的な範囲内で問題が出るようであればパフォーマンス問題となるかと思います。
通常は気にせず使用して問題ない類のものです。
動的管理ビューであれなんであれ処理をさせるのであればそれ相当の負荷が掛かりますが、動的管理ビューを 1 回 SELECT しただけで影響が出るようであればサーバーのスペック不足かと思います。>・ユーザテーブルやインデックスにSロックをかける場合があるのか
「かけないこと」を保障するような記述を見たことがありませんので、つまり「かけないこと」を保障していないと思われますので、かける場合があるという前提で使用するべきでしょう。
これは SP などで挙動が変化することもありえますので、仮に現状でロックをかけることが無かったとしてもそれが将来にわたってそのままであることが保障されるわけではありません。>・長時間実行することで、対象の動的管理ビューの更新に影響があるのか
ビューは通常実体を持たないのでビューの定義の更新の話になるかと思いますが、更新ファイルの適用時にのみ更新されるので、通常は気にする必要は無いと思います。>・その他、動的管理ビューや動的管理関数使ったSELECTを実行するときの影響、懸念点、気をつけるべきことなどあるか
気をつけなくても良いように概ね実装されているはずなので、何か問題があるようであればその問題ごとにフォーラムで質問されるなり検証されるなりサポートを受けるなりされることになるかと思います。MCITP(Database Developer/Database Administrator)
- 回答としてマーク maaaaaaaa8 2015年2月25日 4:41
すべての返信
-
動的管理ビューなどは内部的にも使用されているので、一般的な範囲内で問題が出るようであればパフォーマンス問題となるかと思います。
通常は気にせず使用して問題ない類のものです。
動的管理ビューであれなんであれ処理をさせるのであればそれ相当の負荷が掛かりますが、動的管理ビューを 1 回 SELECT しただけで影響が出るようであればサーバーのスペック不足かと思います。>・ユーザテーブルやインデックスにSロックをかける場合があるのか
「かけないこと」を保障するような記述を見たことがありませんので、つまり「かけないこと」を保障していないと思われますので、かける場合があるという前提で使用するべきでしょう。
これは SP などで挙動が変化することもありえますので、仮に現状でロックをかけることが無かったとしてもそれが将来にわたってそのままであることが保障されるわけではありません。>・長時間実行することで、対象の動的管理ビューの更新に影響があるのか
ビューは通常実体を持たないのでビューの定義の更新の話になるかと思いますが、更新ファイルの適用時にのみ更新されるので、通常は気にする必要は無いと思います。>・その他、動的管理ビューや動的管理関数使ったSELECTを実行するときの影響、懸念点、気をつけるべきことなどあるか
気をつけなくても良いように概ね実装されているはずなので、何か問題があるようであればその問題ごとにフォーラムで質問されるなり検証されるなりサポートを受けるなりされることになるかと思います。MCITP(Database Developer/Database Administrator)
- 回答としてマーク maaaaaaaa8 2015年2月25日 4:41