肥大化したシステムテーブルのパフォーマンスを改善できますか?


12

背景:
多数のVIEWと非常に多数のSYNONYMを持つ多数のデータベースがあります。たとえば、1つのデータベースには1万個以上のVIEWと2百万個以上のSYNONYMがあります。

一般的な問題:(および一般的なシステムテーブル)
を含むクエリはsys.objects遅くなる傾向があります。関係sys.synonymsするクエリは氷河期です。パフォーマンスを改善するために何ができるか疑問に思っています。

特定の例
このコマンドは、サードパーティツールによって実行されます。アプリとSSMSの両方で遅い:

exec sp_tables_rowset;2 NULL,NULL

私の質問
この実行を高速化するにはどうすればよいですか?

試したこと:この出力が得られた
場合SET STATISTICS IO ON

(2201538行が影響を受けます)
テーブル 'sysobjrdb'。スキャンカウント1、論理読み取り28、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み0。
テーブル 'sysschobjs'。スキャンカウント1、論理読み取り53926、物理読み取り0、先読み読み取り0、lob論理読み取り0、lob物理読み取り0、lob先読み読み取り0。

基になるシステムテーブルの統計を更新できました。これは、SQL 2008 R2以降の環境で機能しました。

UPDATE STATISTICS sys.sysobjrdb WITH FULLSCAN
UPDATE STATISTICS sys.sysschobjs WITH FULLSCAN

また、インデックスメンテナンスを実行することもできました。これは、SQL 2012以降の環境で機能します。たとえば、実行中sp_help 'sys.sysschobjs'はテーブルのインデックスを識別し、そこからこれらのコマンドを作成して実行します。

ALTER INDEX clst ON sys.sysschobjs REORGANIZE
ALTER INDEX nc1 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc2 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc3 ON sys.sysschobjs REORGANIZE

統計の更新とインデックスの再編成は役立ちますが、大したことではありません。


痛い。混乱したタイプのマルチテナントを実行し、全員のデータを同じテーブルに保持し、ビューでフィルタリングし、シノニムを使用してベースオブジェクトにちなんで大規模に名前を付けていると思いますか?いずれかの方法で、私はあなたのために感じる
Philᵀᴹ

2
マルチテナント?実は違う。そうではありません。かなりめちゃくちゃですよね?FWIW、すべてのアプリケーションユーザーに対して、すべてのテーブルに5つのシノニムが作成されることを理解しています。私は幸運。
デイブメイソン

これらのオブジェクトの一部に対するアクセス許可を削除すると、パフォーマンスが向上しますか(潜在的に使用するオブジェクトが少なくなりますか?)、それがユーザーレベルのオプションであるかどうかはわかりません。
コンスタンティン

これに関する実行計画を見るのは面白いでしょう。ここに埋め込む方法がない限り、sql sentry plan explorerからanswer.sqlperformance.comに投稿してリンクすることもできます。私はそれを見て面白いと思います
-SheldonH

回答:


1

まだ行っていない場合は、プライマリデータファイルを残りのデータとは別のスピンドルセットに移動することでパフォーマンスを向上させることができます(「ファイルとファイルグループのアーキテクチャSQL Server:システムテーブルのファイルグループのみ」を参照してください)。


これは適切なアドバイスだと思いますが、IOセットアップがディスクが接続された標準の物理サーバー、たとえばSANを備えた仮想インスタンスではない場合、またはSSDドライブがプライマリデータファイルを分離する顕著な影響を最小限にすると、多くの影響で無効になります別の場所に
シェルドンH

1
ハードウェアを制御している場合(つまり、サードパーティによってホストされていない場合)、SANに異なるスピンドルセットを含めることができます(2つ以上の個別のRAID-10ボリュームなど)。SSDを使用(またはホスト)している場合、スピンドルは存在せず、主にドライブとマザーボードの間のボトルネック(SATA、RAID、またはNICカード、ケーブル、ルーター/スイッチなど)によってIOが制限されます、SAN、SSDの速度)、その場合はファイルを分離しても何も得られません。
ジギークルエルティフリーZeitgeister
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.