SSブログ

スピンロックとラッチの違い [SQL Server]

SQL Serverでオブジェクト構造を保護する為の仕組みにラッチとスピンロックというものがあります。


ラッチもスピンロックも短時間の間保持して他のスレッドからオブジェクトの多重更新などが
起きないように保護する仕組みです。
スレッド1がラッチを確保して例えばページ分割をしている最中にスレッド2が該当ページにアクセスすると
スレッド2はラッチ待ちをするためにYieldして後続のタスクを取り出します。
Yieldされて後回しになったタスクは後でまたスレッドに拾われてページアクセスします。
その頃にはラッチが解放されていることを期待できます。
OSで言えばセマフォやミューテックスのようなものです。

一方でスピンロックはYieldを行わないで待つ仕組みです。
ラッチのようにYieldするのではなく、そのままCPUを回しながらスピンロックが解放されるのを待ちます。
Yieldすることすらもったい無い(という表現がよいかは別として)状況で使います。

公式文書ではロックのパーティション分割に記載があります。
https://technet.microsoft.com/ja-jp/library/ms187504(v=sql.105).aspx

またスピンロックの競合については以下のホワイトペーパーがまとまっています。
http://download.microsoft.com/download/D/A/A/DAAD63AF-B06F-4F29-AF1D-68A78102ABF4/SQLServerSpinlockContention.pdf


スポンサードリンク



nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:仕事

nice! 0

コメント 1

oem

事業内容: 
工場との連絡(お客様が依頼した商品の製造上の意見や問題等を工場に伝える)
工場調査(工場の環境、規模、生産能力など)
商品開発(商品のデザイン、製造、包装)
検品(商品の品質の検査)
アマゾン(アマゾンFBA納品、出荷)

URL: http://www.cgksupply.com
Email: info@gafound.com

by oem (2017-07-17 16:33) 

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

SQL Serverの今後|- ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。