小物SEのメモ帳

IT関係の試したことや調べたことの備忘録

【SQL Server】リレーション図の出力

データベース内の各テーブルのER図の出力方法の備忘録です。 「データベースダイアグラム」を選択して右クリックを押下、「新しいデータベース ダイアグラム(N)」を選択します。 リレーション図に表示したいテーブルを選択します。 下記のように出力されます…

【SQL Server】データコレクションの「サーバーの利用状況の履歴」・「クエリ統計の履歴」レポート出力の仕方

データコレクションのレポートのうちよく参照するであろう「サーバの利用状況の履歴」「クエリ統計の履歴」の出力についてです。「サーバの利用状況の履歴」「クエリ統計の履歴」で出力できるグラフの関係図は以下のとおりです。 「サーバの利用状況の履歴」…

【SQL Server】データコレクションのディスク使用量レポート出力の仕方

システムデータコレクション(MDW)のディスク使用量レポートの出力の仕方を説明します。 ディスク使用量レポートとしては以下のような関係で出力が可能です。 プロパティ情報は以下のようになっています。 ここでは、どのようなクエリで本レポート用の情報収…

【SQL Server】データコレクションのレポート出力の仕方

システムデータコレクション(MDW)を利用するとパフォーマンス情報を定期的に取得しレポートとして出力でき分析時に便利です。レポートの出力の仕方は「管理」-「データコレクション」を右クリック、「レポート(P)」-「管理データウェアハウス」で各種レポー…

【SQL server】ラッチ状況の確認

SQLserver ラッチ待ちの解説と確認SQLserverには3種類のラッチが存在します。1.LACTH_[xx] (非バッファーラッチ) 2.PAGELATCH_[xx] (バッファーラッチ) 3.PAGEIOLATCH_[xx] (バッファーラッチ) ※[xx]にはSH(参照),UP(更新),EX(排他)などが入ります。これらに…

【SQL server】デッドロックの調査方法

デッドロック発生に際し、分析時の確認の仕方について紹介します。エラーログやSQL Plofilerなどで調査可能ですが、個人的には拡張イベントがお勧めです。デフォルト設定であれば、拡張イベントの「system_health」でデッドロック情報は取得しているので、事…

【SQL server】ロックエスカレーションの閾値について

悪者扱いされることの多いロックエスカレーションの発生する閾値と設定の確認方法についてです。・ロック上限が動的な場合(locks オプションが既定値)のロックエスカレーションの閾値 (1)1 つの Transact-SQL ステートメントが 1 つのテーブルまたはイン…

【SQL server】ロックの種類とページ情報

デッドロックを調査するにあたりロックの種類について調べた内容を記しておきます。 ロックの粒度 上から順にロックの粒度は細かくなります。 Lock Type 説明 DB データベース単位のロック TAB テーブル単位のロック PAGE ページ単位のロック ROW 行単位のロ…

【SQL server】トランザクション分離レベルについて

SQL serverで設定できるトランザクション分離レベルについて整理しました。 ※デフォルトはREAD COMMITTEDになります。 トランザクション分離レベル ロックの種類 ダーティリード ノンリピータブルリード ファントムリード READ UNCOMMITTED 悲観的ロック ○ ○…

【SQL server】利用状況モニターの情報取得について

個人的にパフォーマンス障害時によく利用する「利用状況モニター」ですが、いまいち情報取得の方法や周期について理解が不足しておりましたので、ここで整理をしてみます。 (※プロファイラーの取得結果SQLをそのまま記載してありますので、内容問題がある場…

【SQL server】sp_who2について

SQL Serverの性能情報を取得するうえで、簡単にいろいろな情報を収集できるシステムストアドプロシージャであるsp_who2について、改めて内部を確認してみました。 ※sp_who2はundocumentedなシステムストアドプロシージャであるため、変更されている恐れがあ…

ファイルグループへのテーブルの新規追加の手順

ファイルグループへのテーブルを新規で追加する手順の理解があいまいだったため、簡単に確認してみました。 ファイルグループを分けた場合、違うディスクに配置することで、IO負荷の分散が期待できます。 ⓵DBに新規のファイルグループを追加します -- ======…

【SQL server】クエリ統計の履歴レポートについて

データコレクションの機能で、「クエリ統計の履歴」を実行し、レポート表示させる場合の元スクリプトとテーブルについて確認してみました。内容に誤りがある場合は、ご指摘いただけると幸いです。※変数の値はそれぞれの対象となるSQLによって異なります。レ…

【SQL server2012】特定の実行プランのみキャッシュクリアする方法

SQL server では、キャッシュクリアしたい実行プランのプランハンドルがわかれば、特定の実行プランのみをクリアすることができます。 何らかの原因で実行プランが変わり、急激なパフォーマンス低下が発生してしまった際等に、他の処理への影響を減らしつつ…

SQL server 2016の新機能クエリストアについて

◆クエリストアでできること SQL server の特定のクエリの実行プランは時間の経過とともに変化します。プロシージャキャッシュ(プランキャッシュ)には、最新の実行プランのみが格納され、メモリ負荷によるキャッシュアウトで実行プランがプランキャッシュか…

【SQL server】Max=min server memory設定時のバッファープール使用状況の把握について

Buffer Manager Max server memoryで設定できる値は内訳は以下となっているのでしょうか。。。 Max server memory = Memory Manager\Total Server Memory (KB) = Memory Manager\Stolen Server Memory (KB) + Memory Manager\Free Memory (KB) + Memory Mana…

【SQL server】パラメータスニッフィングによる実行プランのパフォーマンス低下

SQL server では、ストアドプロシージャ実行時に実行プランをハードパースする場合に、受け取ったパラメータに最適化する形で実行プランが作成されます。 パラメータスニッフィングにより不適切なパラメータで実行プランがハードパースされると効率の悪い実…