SQL SERVER のロックエスカレーション
SQLSERVERで、大量データを更新する場合に、
行ロックのはずなのにテーブルロックになる場合がある。
BOOK ONLINEによると、
ロックのエスカレーションとは、粒度の小さい多数のロックを変換して、
粒度が大きい少数のロックにする処理です。
この処理により、同時実行の競合が発生する確率は高くなりますが、システムのオーバーヘッドは減少します。
ロックのエスカレーションは、次のいずれかの時点で開始されます。
* 1 つの Transact-SQL ステートメントが単独のテーブルまたはインデックスに対して、少なくとも 5,000 個のロックを獲得したとき。
* データベース エンジンのインスタンスのロック数がメモリまたは構成のしきい値を超えたとき。
ということみたいです。
5000件以上の更新があるトランザクションは5000件単位でトランザクションを分けろってことか・・・
SQLSERVER2005で実験してみます。
-
-
- ロックエスカレーション
-
USE hoge
GO
-
- テーブルの削除
truncate TABLE TESTLOCK
-
- テーブルの作成
CREATE TABLE TESTLOCK
(ID int primary key,
data1 varchar(10),
data2 varchar(10))
-
- データを追加
DECLARE @i integer
SET @i=0
WHILE(@i < 100000)
BEGIN
INSERT INTO TESTLOCK Values(@i,'NODATA','NODATA')
SET @i = @i + 1
END
-
- 件数を取得
select count(*) from TESTLOCK
-
- トランザクションの開始
BEGIN TRAN
UPDATE TESTLOCK SET data1 = N'dataA'
WHERE ID BETWEEN '0' AND '6222';
-
- ①
SELECT COUNT(*) FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE';
ROLLBACK
-
- ②
BEGIN TRAN
UPDATE TESTLOCK SET data1 = N'dataA'
WHERE ID BETWEEN '0' AND '6220';
SELECT COUNT(*) FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE';
ROLLBACK
①の件数は6246件
②の件数は1件
更新件数が6220件では10回繰り返してもロックエスカレーションは発生しなかった。
更新件数が6221〜6223件では何回かに一回ロックエスカレーションが発生した。
更新件数が6224件では必ずロックエスカレーションが発生した。
環境やテーブルによって変化するようですが、大体このくらいなのかなと思います。
-
- ロック詳細確認用SQL
SELECT
resource_type as オブジェクトの種類,
resource_associated_entity_id as エンティティ,
request_mode as ロックの種類,
request_type as 要求の種類,
request_status as 状態
FROM sys.dm_tran_locks
WHERE [resource_type]<>'DATABASE';
-
- オブジェクトの確認
SELECT OBJECT_NAME('53575229')
-
- オブジェクトの確認
SELECT OBJECT_NAME(Object_id) FROM sys.partitions WHERE hobt_id='72057594038452224'
これを発生させない為には、
別のロックを先に行うといいそうです。
-
- 一時間更新ロック
BEGIN TRAN
SELECT * FROM TESTLOCK WITH (UPDLOCK, HOLDLOCK) WHERE 1=0
WAITFOR DELAY '0:10:00'--10分
COMMIT TRAN
その後以下SQLを実行すれば行ロックになります。
BEGIN TRAN
UPDATE TESTLOCK SET data1 = N'dataA'
WHERE ID BETWEEN '0' AND '16224';
SELECT COUNT(*) FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE';
ROLLBACK
ロック件数が16290件になり行ロックになっています。
定額給付金
なんかもうどうなっちゃってるの?何もいえません。
政府・与党が追加経済対策の目玉と位置付けている定額給付金について、法律による所得制限は行わないことで合意した。高額所得者には自発的な受け取り辞退を促す方式とする。この種の措置で、受け取る受け取らないを本人に任せることは前代未聞である。
まだ定額減税のほうがましのような気がしますが、
政治家ってやってることが的外れだってことがどうして解らないんでしょうかね??
挙句の果てには給付の所得制限を市町村に任せるとか・・・・
1800万所得がある人は、月収150万か、それでもほしいのかな?
そういう人の気持ちはわかりませんが、もし私だったらもらうw
景気を考えるなら
政策目的が不明確で、効果も疑わしく、財政にも負担をかけるような定額給付金は白紙に戻すべきだ。生活対策というのならば、低所得層などに対象を絞った減税や、大胆な非正規雇用対策を講ずるのが責任ある政治の務めではないのか。
財政を立て直す方法はいまならまだあると思う、
公務員と政治家へらせばいいだけなんだけどね。
わけわかんない特殊法人全部民営化、これでどう?
庶民感覚とか言ってるけど、全然わかってないよ。
■
待機の種類 | 説明 |
ASYNC_DISKPOOL_LOCK | ファイルの作成や初期化などのタスクを実行している並列スレッドを同期しようとすると発生します。 |
ASYNC_IO_COMPLETION | タスクが I/O の終了を待機しているときに発生します。 |
ASYNC_NETWORK_IO | ネットワークの書き込みでタスクがブロックされているときに発生します。クライアントがサーバーからのデータを処理しているかどうかを確認してください。 |
BACKUP | バックアップ処理の一部としてタスクがブロックされているときに発生します。 |
BACKUP_CLIENTLOCK | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
BACKUP_OPERATOR | タスクがテープのマウントを待機しているときに発生します。テープの状態を表示するには、sys.dm_io_backup_tapes にクエリを実行します。マウント操作が保留中以外のときに、この待機が発生した場合は、テープ ドライブにハードウェア上の問題があると考えられます。 |
BACKUPBUFFER | バックアップ タスクが、データまたはデータを格納するバッファを待機しているときに発生します。この待機は、タスクがテープのマウントを待機しているとき以外はほとんど発生しません。 |
BACKUPIO | バックアップ タスクが、データまたはデータを格納するバッファを待機しているときに発生します。この待機は、タスクがテープのマウントを待機しているとき以外はほとんど発生しません。 |
BACKUPTHREAD | タスクがバックアップ タスクの終了を待機しているときに発生します。待機時間の長さは、数分から数時間に及ぶ場合があります。待機中のタスクが I/O 処理中である場合は、この待機が発生しても問題はありません。 |
BAD_PAGE_PROCESS | 問題があると考えられるバックグラウンドのページ ロガーが、5 秒間隔より頻繁な実行を回避しようとする場合に発生します。問題があると考えられるページが多くある場合、ロガーは頻繁に実行されます。 |
BROKER_CONNECTION_RECEIVE_TASK | 接続エンドポイントでメッセージを受信するためアクセスを待機しているときに発生します。エンドポイントへの受信アクセスはシリアル化されます。 |
BROKER_ENDPOINT_STATE_MUTEX | Service Broker 接続エンドポイントの状態へのアクセスが競合しているときに発生します。変更の状態へのアクセスはシリアル化されます。 |
BROKER_EVENTHANDLER | タスクが Service Broker のプライマリ イベント ハンドラを待機しているときに発生します。この待機は、非常に短い時間の待機です。 |
BROKER_INIT | 各アクティブ データベースで Service Broker を初期化するときに発生します。この待機は、発生頻度の低い待機です。 |
BROKER_MASTERSTART | タスクが Service Broker のプライマリ イベント ハンドラの起動を待機しているときに発生します。この待機は、非常に短い時間の待機です。 |
BROKER_RECEIVE_WAITFOR | RECEIVE WAITFOR が待機しているときに発生します。これは、メッセージの受信準備ができていない場合によく起こります。 |
BROKER_REGISTERALLENDPOINTS | Service Broker の接続エンドポイントの初期化中に発生します。この待機は、非常に短い時間の待機です。 |
BROKER_SHUTDOWN | Service Broker のシャットダウンが予定されている場合に発生します。この待機は、非常に短い時間の待機です。 |
BROKER_TRANSMITTER | Service Broker 送信機能が作業を待機しているときに発生します。 |
BUILTIN_HASHKEY_MUTEX | この待機はインスタンスの起動後、内部データ構造の初期化中に発生することがあります。データ構造が初期化されてから再発生することはありません。 |
CHECKPOINT_QUEUE | チェックポイント タスクが、次のチェックポイント要求を待機しているときに発生します。 |
CHKPT | サーバー起動時に発生し、チェックポイント スレッドに開始できることを伝えます。 |
CLR_AUTO_EVENT | タスクが共通言語ランタイム (CLR) を実行中で、特定の自動イベントが開始されるのを待機しているときに発生します。待機は長時間になることが一般的で、問題はありません。 |
CLR_CRST | タスクが CLR を実行中で、重大なセクションが別のタスクによって現在使用されている場合、そのセクションを待機しているときに発生します。 |
CLR_JOIN | タスクが CLR を実行中で、別のタスクの終了を待機しているときに発生します。また、この待機状態は、タスク間の結合があるときに発生します。 |
CLR_MANUAL_EVENT | タスクが CLR を実行中で、特定の手動イベントが開始されるのを待機しているときに発生します。 |
CLR_MONITOR | タスクが CLR を実行中で、ロックの取得をモニタで待機しているときに発生します。 |
CLR_RWLOCK_READER | タスクが CLR を実行中で、リーダー ロックを待機しているときに発生します。 |
CLR_RWLOCK_WRITER | タスクが CLR を実行中で、ライタ ロックを待機しているときに発生します。 |
CLR_SEMAPHORE | タスクが CLR を実行中で、セマフォを待機しているときに発生します。 |
CLR_TASK_START | CLR タスクが完全に開始されるのを待機しているときに発生します。 |
CMEMTHREAD | タスクがスレッド セーフ メモリ オブジェクトで待機しているときに発生します。複数のタスクが同じメモリ オブジェクトからメモリを割り当てようとして競合が発生している場合、待機時間は長くなる可能性があります。 |
CURSOR | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
CURSOR_ASYNC | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
CXPACKET | クエリ プロセッサ交換反復子を同期しようとするときに発生します。この待機で競合が発生すると問題になる場合は、並列処理の次数を下げることを検討してください。 |
DBMIRROR_DBM_EVENT | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
DBMIRROR_DBM_MUTEX | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
DBMIRROR_EVENTS_QUEUE | データベース ミラーリングがイベントの処理を待機しているときに発生します。 |
DBMIRROR_SEND | タスクが、ネットワーク層の通信バックログが消去されメッセージ送信できるようになるのを待機しているときに発生します。通信層が過負荷になり、データベース ミラーリング データのスループットに影響が生じ始めていることを表します。 |
DBMIRROR_WORKER_QUEUE | データベース ミラーリング ワーカー タスクが、次の作業の実行を待機していることを表します。 |
DBMIRRORING_CMD | タスクが、ログ レコードのディスクへのフラッシュを待機しているときに発生します。この待機状態は、長時間続くことが予想されます。 |
DBTABLE | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
DEADLOCK_ENUM_MUTEX | SQL Server で同時に複数のデッドロック検索が実行されていないかどうかを、デッドロック モニタと sys.dm_os_waiting_tasks が確認しようとするときに発生します。 |
DEADLOCK_TASK_SEARCH | このリソースでの待機時間が長い場合は、サーバーが sys.dm_os_waiting_tasks 上で複数のクエリを実行したことにより、デッドロックモニタでデッドロック検索を実行できなくなっていることを表します。この待機の種類は、デッドロックモニタにのみ使用されます。sys.dm_os_waiting_tasks の上部のクエリは、DEADLOCK_ENUM_MUTEX を使用します。 |
DEBUG | Transact-SQL と CLR が内部同期のためデバッグしているときに発生します。 |
DISABLE_VERSIONING | 一番最初のアクティブなトランザクションのタイムスタンプが、状態が変化し始めたときのタイムスタンプより後かどうかを確認するために、SQL Server がバージョン トランザクションマネージャをポーリングしたときに発生します。最初のトランザクションのタイムスタンプが状態変化のタイムスタンプより後の場合、ALTER DATABASE ステートメントの実行前に開始されたスナップショット トランザクションはすべて終了しています。この待機状態は、SQL Server が ALTER DATABASE ステートメントを使用してバージョン管理を無効にするときに使用されます。 |
DISKIO_SUSPEND | 外部バックアップがアクティブで、タスクがファイルへのアクセスを待機しているときに発生します。これは、ユーザープロセスの待機が発生するたびに報告されます。1 つのユーザー プロセスの待機が 5 回を超えた場合は、外部バックアップの完了に時間がかかりすぎている可能性があります。 |
DLL_LOADING_MUTEX | XML パーサー DLL が読み込まれるのを待機しているときに 1 回発生します。 |
DROPTEMP | 一時オブジェクトの削除を試行して失敗した場合に、次の削除を試行するまでの間に発生します。この待機時間は、削除の試行が失敗するたびに指数関数的に増えます。 |
DTC | タスクが、状態遷移の管理に使用されるイベントで待機しているときに発生します。この待機状態によって、Microsoft 分散トランザクションコーディネータ (MS DTC) サービスが使用できなくなったという通知を SQL Server で受信した後で、MS DTC トランザクションの復旧が発生するタイミングが制御されます。 |
また、この待機状態によって、SQL Server が MS DTC トランザクションのコミットを開始するときに待機中になっているタスクを把握することができます。さらに、SQL Server が MS DTC のコミットの終了を待機しているときに待機中になっているタスクも把握することができます。 | |
DTC_ABORT_REQUEST | MS DTC ワーカー セッションが、MS DTC トランザクションの所有権取得を待機しているときに発生します。MS DTC がトランザクションの所有権を取得した後、セッションはそのトランザクションをロールバックできます。一般に、セッションが待機するのは、そのトランザクションが別のセッションで使用されている場合です。 |
DTC_RESOLVE | 複数のデータベースにまたがるトランザクションで、復旧タスクが、トランザクションの結果をクエリするため master データベースを待機しているときに発生します。 |
DTC_STATE | 内部の MS DTC グローバル状態オブジェクトに対する変更を保護するイベントで、タスクが待機しているときに発生します。この待機状態は非常に短い時間保持されます。 |
DTC_TMDOWN_REQUEST | MS DTC ワーカー セッションで、MS DTC サービスが使用できないという通知を SQL Server が受信したときに発生します。ワーカーはまず MS DTC 復旧プロセスの開始を待機し、次に、ワーカーが操作している分散トランザクションの結果取得を待機します。この待機は、MS DTC サービスとの接続が再度確立されるまで継続される場合があります。 |
DTC_WAITFOR_OUTCOME | MS DTC がアクティブになり、準備されたトランザクションの解決が可能になるのを、復旧タスクが待機しているときに発生します。 |
DUMP_LOG_COORDINATOR | メイン タスクが、サブタスクによるデータ生成を待機しているときに発生します。通常、この待機状態は発生しません。待機が長時間になる場合は、予期しないブロックが発生している可能性があり、サブタスクを調査する必要があります。 |
EC | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
EE_PMOLOCK | ステートメントの実行時、特定の種類のメモリ割り当てを同期するときに発生します。 |
EE_SPECPROC_MAP_INIT | 内部プロシージャ ハッシュ テーブルの作成における同期中に発生します。この待機は、SQL Server インスタンスの開始後、ハッシュ テーブルに最初にアクセスするときにのみ発生します。 |
ENABLE_VERSIONING | データベースがスナップショット分離が許可されている状態に移行できることを宣言するために、SQL Server が、このデータベースにおけるすべての更新トランザクションの終了を待機しているときに発生します。この待機状態は、SQL Server が ALTER DATABASE ステートメントを使用してスナップショット分離を有効にするときに使用されます。 |
ERROR_REPORTING_MANAGER | 複数のエラー ログの初期化における同期中に発生します。 |
EXCHANGE | 並列クエリの実行時、クエリ プロセッサ交換反復子での同期中に発生します。 |
EXECSYNC | 並列クエリの実行時、交換反復子に関係のない領域での、クエリ プロセッサによる同期中に発生します。このような領域の例としては、ビットマップ、ラージバイナリ オブジェクト (LOB)、スプール反復子などがあります。LOB では、この待機状態が頻繁に使用されることがあります。 |
FAILPOINT | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
FCB_REPLICA_READ | スナップショット (または DBCC によって作成された一時スナップショット) のスパース ファイルの読み取りを同期するときに発生します。 |
FCB_REPLICA_WRITE | スナップショット (または DBCC によって作成された一時スナップショット) のスパース ファイルに対するページのプッシュまたはプルを同期するときに発生します。 |
FT_RESTART_CRAWL | 一時的なエラーから復旧するために、正常と認識されている最後の時点からフルテキスト クロールを再開する必要があるときに発生します。この待機が発生した場合、設定を現在処理中のワーカー タスクは、完了するか現在のステップを終了することを許可されます。 |
FT_RESUME_CRAWL | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
FULLTEXT GATHERER | フルテキスト操作の同期中に発生します。 |
HTTP_ENDPOINT_COLLCREATE | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
HTTP_ENUMERATION | 起動時に発生し、HTTP を開始するため HTTP エンドポイントを列挙します。 |
HTTP_START | 接続が HTTP の初期化完了を待機しているときに発生します。 |
IMP_IMPORT_MUTEX | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
IMPPROV_IOWAIT | SQL Server が、一括読み込み I/O の終了を待機しているときに発生します。 |
INDEX_USAGE_STATS_MUTEX | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
IO_AUDIT_MUTEX | トレース イベント バッファの同期中に発生します。 |
IO_COMPLETION | I/O 操作の完了を待機しているときに発生します。この待機の種類は通常、データ ページ以外の I/O を表します。データ ページ I/O の完了の待機は、PAGEIOLATCH_* の待機として表示されます。 |
KSOURCE_WAKEUP | サービス コントロール タスクによって、サービス コントロール マネージャからの要求を待機しているときに使用されます。待機は長時間になることが予想されますが、問題はありません。 |
KTM_ENLISTMENT | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
KTM_RECOVERY_MANAGER | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
KTM_RECOVERY_RESOLUTION | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
LATCH_DT | DT (破棄) ラッチを待機しているときに発生します。これには、バッファ ラッチまたはトランザクション マーク ラッチは含まれません。LATCH_* 待機の一覧は、sys.dm_os_latch_stats で確認できます。sys.dm_os_latch_stats では、LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX、および LATCH_DT の待機はグループ化されます。 |
LATCH_EX | EX (排他) ラッチを待機しているときに発生します。これには、バッファ ラッチまたはトランザクション マーク ラッチは含まれません。LATCH_* 待機の一覧は、sys.dm_os_latch_stats で確認できます。sys.dm_os_latch_stats では、LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX、および LATCH_DT の待機はグループ化されます。 |
LATCH_KP | KP (保持) ラッチを待機しているときに発生します。これには、バッファ ラッチまたはトランザクション マーク ラッチは含まれません。LATCH_* 待機の一覧は、sys.dm_os_latch_stats で確認できます。sys.dm_os_latch_stats では、LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX、および LATCH_DT の待機はグループ化されます。 |
LATCH_NL | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
LATCH_SH | SH (共有) ラッチを待機しているときに発生します。これには、バッファ ラッチまたはトランザクション マーク ラッチは含まれません。LATCH_* 待機の一覧は、sys.dm_os_latch_stats で確認できます。sys.dm_os_latch_stats では、LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX、および LATCH_DT の待機はグループ化されます。 |
LATCH_UP | UP (更新) ラッチを待機しているときに発生します。これには、バッファ ラッチまたはトランザクション マーク ラッチは含まれません。LATCH_* 待機の一覧は、sys.dm_os_latch_stats で確認できます。sys.dm_os_latch_stats では、LATCH_NL、LATCH_SH、LATCH_UP、LATCH_EX、および LATCH_DT の待機はグループ化されます。 |
LAZYWRITER_SLEEP | レイジー ライタ タスクが一時中断されるときに発生します。待機中のバックグラウンド タスクで費やされた時間を測定することができます。ユーザーの機能停止を検索しているときには、この待機状態は考慮しないでください。 |
LCK_M_BU | タスクが一括更新 (BU) ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_IS | タスクがインテント共有 (IS) ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_IU | タスクがインテント更新 (IU) ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_IX | タスクがインテント排他 (IX) ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RIn_NL | タスクが、現在のキー値に対する NULL ロックの取得、および現在のキーから以前のキーまでを対象とした挿入範囲ロックの取得を待機しているときに発生します。キーの NULL ロックは、すぐに解放されるロックです。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RIn_S | タスクが、現在のキー値に対する共有ロックの取得、および現在のキーから以前のキーまでを対象とした挿入範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RIn_U | タスクが、現在のキー値に対する更新ロックの取得、および現在のキーから以前のキーまでを対象とした挿入範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RIn_X | タスクが、現在のキー値に対する排他ロックの取得、および現在のキーから以前のキーまでを対象とした挿入範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RS_S | タスクが、現在のキー値に対する共有ロックの取得、および現在のキーから以前のキーまでを対象とした共有範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RS_U | タスクが、現在のキー値に対する更新ロックの取得、および現在のキーから以前のキーまでを対象とした更新範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RX_S | タスクが、現在のキー値に対する共有ロックの取得、および現在のキーから以前のキーまでを対象とした排他範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RX_U | タスクが、現在のキー値に対する更新ロックの取得、および現在のキーから以前のキーまでを対象とした排他範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_RX_X | タスクが、現在のキー値に対する排他ロックの取得、および現在のキーから以前のキーまでを対象とした排他範囲ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_S | タスクが共有ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_SCH_M | タスクがスキーマ変更ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_SCH_S | タスクがスキーマ共有ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_SIU | タスクがインテント更新付き共有ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_SIX | タスクがインテント排他付き共有ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_U | タスクが更新ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_UIX | タスクがインテント排他付き更新ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LCK_M_X | タスクが排他ロックの取得を待機しているときに発生します。ロックの互換性のマトリックスについては、「sys.dm_tran_locks (Transact-SQL)」を参照してください。 |
LOGBUFFER | タスクが、ログ レコードを格納するログ バッファの領域を待機しているときに発生します。常に高い値が示される場合は、ログ デバイスで解放される領域よりも、サーバーにより生成されるログ サイズが大きいことを表しています。 |
LOGMGR | データベースを閉じる間、タスクが、ログのシャットダウン前に未処理のログ I/O が終了するのを待機しているときに発生します。 |
LOGMGR_FLUSH | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
LOGMGR_QUEUE | ログ ライタ タスクが作業要求を待機しているときに発生します。 |
LOGMGR_RESERVE_APPEND | 新しいログ レコードを書き込むために、タスクが、ログの切り捨てによるログ領域の解放の確認を待機しているときに発生します。この待機を短縮すると、影響を受けるデータベースのログ ファイル サイズが増えることに注意してください。 |
LOWFAIL_MEMMGR_QUEUE | メモリが使用可能になるのを待機しているときに発生します。 |
MIRROR_SEND_MESSAGE | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
MISCELLANEOUS | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
MSQL_DQ | タスクが分散クエリ操作の終了を待機しているときに発生します。これは、複数のアクティブな結果セット (MARS) アプリケーションにデッドロックの可能性があるかどうかを検出するために使用されます。分散クエリ呼び出しが終了すると、待機は終了します。 |
MSQL_SYNC_PIPE | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
MSQL_XACT_MGR_MUTEX | タスクが、セッション レベル トランザクション操作を実行するために、セッション トランザクション マネージャの所有権の取得を待機しているときに発生します。 |
MSQL_XACT_MUTEX | トランザクション使用の同期中に発生します。要求でトランザクションを使用するには、まずミューテックスを取得する必要があります。 |
MSQL_XP | タスクが、拡張ストアド プロシージャの終了を待機しているときに発生します。SQL Server では、この待機状態を使用して、MARS アプリケーションにデッドロックの可能性があるかどうかを検出します。拡張ストアド プロシージャの呼び出しが終了すると、待機は終了します。 |
MSSEARCH | フルテキスト検索の呼び出し中に発生します。フルテキスト操作が完了すると、待機は終了します。この待機はフルテキスト操作の競合ではなく、操作時間を表します。 |
NET_WAITFOR_PACKET | ネットワークの読み取り中に、接続がネットワーク パケットを待機しているときに発生します。 |
OLEDB | SQL Server が SQL Server Native Client OLE DB プロバイダを呼び出すときに発生します。この種類の待機は、同期では使用されません。代わりに、OLE DB プロバイダ呼び出しの持続時間を示します。 |
ONDEMAND_TASK_QUEUE | バックグラウンド タスクが、優先度の高いシステム タスクの要求を待機しているときに発生します。待機時間が長い場合は処理優先度が高い要求がないことを示します。問題があるわけではありません。 |
PAGEIOLATCH_DT | タスクが、I/O 要求内のバッファ ラッチで待機しているときに発生します。ラッチ要求は破棄モードです。待機時間が長い場合、ディスク サブシステムに問題がある可能性があります。 |
PAGEIOLATCH_EX | タスクが、I/O 要求内のバッファ ラッチで待機しているときに発生します。ラッチ要求は排他モードです。待機時間が長い場合、ディスク サブシステムに問題がある可能性があります。 |
PAGEIOLATCH_KP | タスクが、I/O 要求内のバッファ ラッチで待機しているときに発生します。ラッチ要求は保持モードです。待機時間が長い場合、ディスク サブシステムに問題がある可能性があります。 |
PAGEIOLATCH_NL | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
PAGEIOLATCH_SH | タスクが、I/O 要求内のバッファ ラッチで待機しているときに発生します。ラッチ要求は共有モードです。待機時間が長い場合、ディスク サブシステムに問題がある可能性があります。 |
PAGEIOLATCH_UP | タスクが、I/O 要求内のバッファ ラッチで待機しているときに発生します。ラッチ要求は更新モードです。待機時間が長い場合、ディスク サブシステムに問題がある可能性があります。 |
PAGELATCH_DT | タスクが、I/O 要求内にないバッファ ラッチで待機しているときに発生します。ラッチ要求は破棄モードです。 |
PAGELATCH_EX | タスクが、I/O 要求内にないバッファ ラッチで待機しているときに発生します。ラッチ要求は排他モードです。 |
PAGELATCH_KP | タスクが、I/O 要求内にないバッファ ラッチで待機しているときに発生します。ラッチ要求は保持モードです。 |
PAGELATCH_NL | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
PAGELATCH_SH | タスクが、I/O 要求内にないバッファ ラッチで待機しているときに発生します。ラッチ要求は共有モードです。 |
PAGELATCH_UP | タスクが、I/O 要求内にないバッファ ラッチで待機しているときに発生します。ラッチ要求は更新モードです。 |
PARALLEL_BACKUP_QUEUE | RESTORE HEADERONLY、RESTORE FILELISTONLY、または RESTORE LABELONLY によって生成された出力をシリアル化しているときに発生します。 |
PRINT_ROLLBACK_PROGRESS | ALTER DATABASE 終了句を使って遷移されたデータベースで、ユーザー プロセスが終了するのを待機する場合に使用されます。詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。 |
QNMANAGER_ACQUIRE | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
QPJOB_KILL | 非同期自動統計更新が実行開始されたときに、強制終了呼び出しにより操作がキャンセルされたことを示します。終了スレッドは一時中断され、強制終了コマンドの受信開始を待機します。1 秒未満であれば問題はありません。 |
QPJOB_WAITFOR_ABORT | 非同期自動統計更新の実行中に、強制終了の呼び出しにより操作がキャンセルされたことを示します。更新は現在完了していますが、終了スレッドメッセージ調整が完了するまでは一時中断されます。これは通常の状態ですが、発生することはほとんどありません。発生しても非常に短い時間です。1 秒未満であれば問題はありません。 |
QRY_MEM_GRANT_INFO_MUTEX | クエリ実行メモリ管理が、静的な許可情報リストへのアクセスを制御しようとするときに発生します。この待機状態では、現在許可されており待機中のメモリ要求に関する情報が一覧表示されます。またこの状態は、単純なアクセス制御状態です。この状態では、長時間に及ぶ待機は避けてください。このミューテックスが解放されない場合、新しいメモリを使用するすべてのクエリは応答を停止します。 |
QUERY_EXECUTION_INDEX_SORT_EVENT_OPEN | オフラインでのインデックス作成が並列実行される場合、並べ替えを行っている複数のワーカー スレッドが並べ替えファイルへのアクセスを同期するときに発生する場合があります。 |
QUERY_NOTIFICATION_MGR_MUTEX | クエリ通知マネージャ内のガベージ コレクション キューの同期中に発生します。 |
QUERY_NOTIFICATION_SUBSCRIPTION_MUTEX | クエリ通知内のトランザクションの状態の同期中に発生します。 |
QUERY_NOTIFICATION_TABLE_MGR_MUTEX | クエリ通知マネージャ内での内部同期中に発生します。 |
QUERY_NOTIFICATION_UNITTEST_MUTEX | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
QUERY_OPTIMIZER_PRINT_MUTEX | クエリ オプティマイザ診断の出力作成の同期中に発生します。この待機は、Microsoft 製品サポートの指示により、診断設定を有効にしている場合にのみ発生します。 |
QUERY_TRACEOUT | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
RECOVER_CHANGEDB | ウォーム スタンバイ データベース内で、データベースの状態の同期中に発生します。 |
RG_RECONFIG | ALTER RESOURCE GOVERNOR RECONFIGURE または ALTER RESOURCE GOVERNOR DISABLE が呼び出されたときに発生します。 |
REPL_CACHE_ACCESS | レプリケーション アーティクル キャッシュでの同期中に発生します。この待機中、レプリケーション ログ リーダーは停止し、パブリッシュされたテーブルに対するデータ定義言語 (DDL) ステートメントはブロックされます。 |
REPL_SCHEMA_ACCESS | レプリケーション スキーマのバージョン情報の同期中に発生します。この状態は、レプリケートされたオブジェクトで DDL ステートメントが実行されるとき、および、ログ リーダーが DDL の発生に基づいてバージョン管理されたスキーマを作成または使用するときに発生します。 |
REPLICA_WRITES | タスクが、データベース スナップショットまたは DBCC レプリカへのページ書き込みの完了を待機しているときに発生します。 |
REQUEST_DISPENSER_PAUSE | タスクが、未処理の I/O がすべて完了しスナップショット バックアップ用にファイルの I/O が固定されるのを待機しているときに発生します。 |
REQUEST_FOR_DEADLOCK_SEARCH | デッドロック モニタが、次のデッドロック検索の開始を待機しているときに発生します。この待機は、デッドロックが検出されてから次に検出されるまでの間に発生することが予想されます。このリソースにおける合計待機時間が長くても問題はありません。 |
RESMGR_THROTTLED | 新しい要求が着信し、GROUP_MAX_REQUESTS 設定に基づいて絞り込まれたときに発生します。 |
RESOURCE_QUEUE | さまざまな内部リソース キューの同期中に発生します。 |
RESOURCE_SEMAPHORE | 他の同時実行クエリがあるため、クエリ メモリの要求がすぐに許可されない場合に発生します。待機および待機時間が高い値を示している場合は、同時実行クエリの数が多すぎるか、またはメモリ要求の数が多すぎる可能性があります。 |
RESOURCE_SEMAPHORE_MUTEX | クエリが、スレッドを予約するための要求を待機しているときに発生します。この待機は、クエリのコンパイルとメモリの要求許可を同期しているときにも発生します。 |
RESOURCE_SEMAPHORE_QUERY_COMPILE | コンパイルされる同時実行クエリの数が、スロットルの制限値に達したときに発生します。待機および待機時間が高い値を示している場合は、コンパイル、再コンパイル、またはキャッシュできないプランの数が多すぎる可能性があります。 |
RESOURCE_SEMAPHORE_SMALL_QUERY | 他の同時実行クエリがあるため、サイズの小さいクエリからのメモリ要求がすぐに許可されない場合に発生します。待機時間は数秒以内である必要があります。要求したメモリが数秒以内に許可されないと、サーバーによって要求がメイン クエリのメモリプールに転送されます。待機が高い値を示している場合は、待機クエリによって主要なメモリプールがブロックされているときに、サイズの小さい同時実行クエリの数が多すぎる可能性があります。 |
SEC_DROP_TEMP_KEY | 一時セキュリティ キーを削除しようとして失敗した後、再試行するまでの間に発生します。 |
SERVER_IDLE_CHECK | SQL Server インスタンスのアイドル状態を同期している間に、リソース モニタが SQL Server インスタンスをアイドルとして宣言しようとするとき、または起動しようとするときに発生します。 |
SHUTDOWN | シャットダウン ステートメントが、アクティブな接続の終了を待機しているときに発生します。 |
SLEEP_BPOOL_FLUSH | ディスク サブシステムが飽和状態にならないよう、チェックポイントで新しい I/O の実行をスロットル中に発生します。 |
SLEEP_DBSTARTUP | すべてのデータベースが復旧するのを待機している間、データベースの起動中に発生します。 |
SLEEP_DCOMSTARTUP | DCOM の初期化が完了するのを待機している間、SQL Server インスタンスの起動中に、多くても 1 回だけ発生します。 |
SLEEP_MSDBSTARTUP | SQL トレースが msdb データベースの起動完了を待機しているときに発生します。 |
SLEEP_SYSTEMTASK | tempdb の起動完了を待機している間、バックグラウンド タスクの開始中に発生します。 |
SLEEP_TASK | 汎用イベントの発生を待機している間、タスクがスリープ状態のときに発生します。 |
SLEEP_TEMPDBSTARTUP | タスクが、tempdb の開始完了を待機しているときに発生します。 |
SNI_CRITICAL_SECTION | SQL Server ネットワーク コンポーネント内での内部同期中に発生します。 |
SNI_HTTP_ACCEPT | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
SNI_HTTP_WAITFOR_0_DISCON | SQL Server のシャットダウン中、未完了の HTTP 接続が終了するのを待機している間に発生します。 |
SOAP_READ | HTTP ネットワークの読み取り完了を待機しているときに発生します。 |
SOAP_WRITE | HTTP ネットワークの書き込み完了を待機しているときに発生します。 |
SOS_CALLBACK_REMOVAL | コールバックを削除するために、コールバックの一覧で同期を実行しているときに発生します。サーバーの初期化が完了した後、通常この待機カウンタが変更されることはありません。 |
SOS_LOCALALLOCATORLIST | SQL Server メモリ マネージャ内での内部同期中に発生します。 |
SOS_MEMORY_USAGE_ADJUSTMENT | プール間でメモリ使用量が調整されている場合に発生します。 |
SOS_OBJECT_STORE_DESTROY_MUTEX | メモリ プールからオブジェクトを破棄するときに、メモリ プール内での内部同期中に発生します。 |
SOS_PROCESS_AFFINITY_MUTEX | 関係設定を処理するためのアクセスの同期中に発生します。 |
SOS_RESERVEDMEMBLOCKLIST | SQL Server メモリ マネージャ内での内部同期中に発生します。 |
SOS_SCHEDULER_YIELD | タスクが、他のタスクの実行にスケジューラを自主的に解放したときに発生します。この待機中、タスクはクォンタムの更新を待機しています。 |
SOS_STACKSTORE_INIT_MUTEX | 内部ストアの初期化の同期中に発生します。 |
SOS_SYNC_TASK_ENQUEUE_EVENT | タスクが同期して開始したときに発生します。SQL Server のほとんどのタスクは非同期で開始し、タスクの要求が作業キューに挿入されるとすぐ制御が最初に戻ります。 |
SOS_VIRTUALMEMORY_LOW | メモリ割り当てが、リソース マネージャによる仮想メモリの解放を待機しているときに発生します。 |
SOSHOST_EVENT | CLR などのホストされるコンポーネントが、SQL Server イベント同期オブジェクト上で待機しているときに発生します。 |
SOSHOST_INTERNAL | CLR などのホストされるコンポーネントで使用される、メモリ マネージャのコールバックの同期中に発生します。 |
SOSHOST_MUTEX | CLR などのホストされるコンポーネントが、SQL Server ミューテックス同期オブジェクト上で待機しているときに発生します。 |
SOSHOST_RWLOCK | CLR などのホストされるコンポーネントが、SQL Server リーダー/ライタ同期オブジェクト上で待機しているときに発生します。 |
SOSHOST_SEMAPHORE | CLR などのホストされるコンポーネントが、SQL Server セマフォ同期オブジェクト上で待機しているときに発生します。 |
SOSHOST_SLEEP | 汎用イベントの発生を待機している間、ホストされるタスクがスリープ状態のときに発生します。ホストされるタスクは、CLR などのホストされるコンポーネントで使用されます。 |
SOSHOST_TRACELOCK | ストリームをトレースするためのアクセスの同期中に発生します。 |
SOSHOST_WAITFORDONE | CLR などのホストされるコンポーネントが、タスクの完了を待機しているときに発生します。 |
SQLCLR_APPDOMAIN | CLR が、アプリケーション ドメインの起動完了を待機しているときに発生します。 |
SQLCLR_ASSEMBLY | アプリケーション ドメインに読み込まれたアセンブリ一覧へのアクセスを待機しているときに発生します。 |
SQLCLR_DEADLOCK_DETECTION | CLR がデッドロック検出の完了を待機しているときに発生します。 |
SQLCLR_QUANTUM_PUNISHMENT | クォンタムの実行時間を超えたことが原因で、CLR タスクがスロットルされたときに発生します。このスロットルは、こうしたリソース消費の多いタスクによる他のタスクへの影響を軽減するために行われます。 |
SQLSORT_NORMMUTEX | 内部同期中、内部の並べ替え構造が初期化される間に発生します。 |
SQLSORT_SORTMUTEX | 内部同期中、内部の並べ替え構造が初期化される間に発生します。 |
SQLTRACE_BUFFER_FLUSH | タスクが、バックグラウンド タスクによってトレース バッファが 4 秒ごとにディスクにフラッシュされるのを待機しているときに発生します。 |
SQLTRACE_LOCK | ファイルのトレース中、トレース バッファの同期中に発生します。 |
SQLTRACE_SHUTDOWN | トレースのシャットダウンが、未処理のトレース イベントが完了するのを待機しているときに発生します。 |
SQLTRACE_WAIT_ENTRIES | SQL トレース イベント キューが、パケットの到着を待機しているときに発生します。 |
SRVPROC_SHUTDOWN | シャットダウン プロセスが、正常にシャットダウンするために内部リソースの解放を待機しているときに発生します。 |
TEMPOBJ | 一時オブジェクトの削除が同期されるときに発生します。この待機が発生するのはまれで、タスクが temp テーブルに対して削除操作を行うための排他アクセスを要求した場合にのみ発生します。 |
THREADPOOL | タスクがワーカーの実行を待機しているときに発生します。ワーカー数の最大設定値が低すぎるか、バッチ実行時間が長すぎるため、他のバッチ用にワーカー数が削減されている可能性があります。 |
TRACEWRITE | SQL トレースの行セット トレース プロバイダが、空きバッファまたは処理するイベントを含むバッファのいずれかを待機しているときに発生します。 |
TRAN_MARKLATCH_DT | トランザクション マーク ラッチで破棄モードのラッチを待機しているときに発生します。トランザクション マーク ラッチは、マークされたトランザクションでのコミットの同期に使用されます。 |
TRAN_MARKLATCH_EX | マークされたトランザクションで排他モードのラッチを待機しているときに発生します。トランザクション マーク ラッチは、マークされたトランザクションでのコミットの同期に使用されます。 |
TRAN_MARKLATCH_KP | マークされたトランザクションで保持モードのラッチを待機しているときに発生します。トランザクション マーク ラッチは、マークされたトランザクションでのコミットの同期に使用されます。 |
TRAN_MARKLATCH_NL | 単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
TRAN_MARKLATCH_SH | マークされたトランザクションで共有モードのラッチを待機しているときに発生します。トランザクション マーク ラッチは、マークされたトランザクションでのコミットの同期に使用されます。 |
TRAN_MARKLATCH_UP | マークされたトランザクションで更新モードのラッチを待機しているときに発生します。トランザクション マーク ラッチは、マークされたトランザクションでのコミットの同期に使用されます。 |
TRANSACTION_MUTEX | 複数のバッチによるトランザクションへのアクセスの同期中に発生します。 |
UTIL_PAGE_ALLOC | トランザクション ログのスキャンが、メモリに負荷がかかっている間に、使用できるメモリを待機しているときに発生します。 |
VIEW_DEFINITION_MUTEX | キャッシュされたビュー定義へのアクセスの同期中に発生します。 |
WAIT_FOR_RESULTS | クエリ通知が行われるのを待機しているときに発生します。 |
WAITFOR | WAITFOR Transact-SQL ステートメントの結果として発生します。この待機時間は、ステートメントに渡すパラメータによって決まります。この待機はユーザーによって開始されるものです。 |
WAITSTAT_MUTEX | sys.dm_os_wait_stats の設定に使用する統計コレクションへのアクセスの同期中に発生します。 |
WORKTBL_DROP | 作業テーブルの削除が失敗してから、再試行されるまで一時停止しているときに発生します。 |
WRITELOG | ログ フラッシュの完了を待機しているときに発生します。ログ フラッシュの原因となる主な操作としては、チェックポイントとトランザクションのコミットがあります。 |
XACT_OWN_TRANSACTION | トランザクションの所有権取得を待機しているときに発生します。 |
XACT_RECLAIM_SESSION | セッションの現在の所有者がその所有権を解放するのを待機しているときに発生します。 |
XACTLOCKINFO | トランザクションのロック一覧へのアクセスの同期中に発生します。このロック一覧には、トランザクション自体だけでなく、ページ分割時にデッドロック検出やロック移行などの操作からもアクセスが行われます。 |
XACTWORKSPACE_MUTEX | トランザクションからの参加解除や、トランザクションの参加メンバ間におけるデータベース ロック数の同期中に発生します。 |