架构师_程序员_码农网

ユーザー名 パスワード取得
会員登録

QQ登录

ワンステップ

検索
表示:14778|返信: 3
打印 上一主题 下一主题

[情報]SQL Server マルチバージョン同時実行制御

[コピーリンク]
データベースの一貫性は、DBMSの性能の最も重要な指標の1つでもあります。現在、ほとんどの商用データベース (DB2, SQL Server) は、並行性制御に Two-Phase Locking (2PL) プロトコルを使用しています。しかし、2PLでは、データの読み取りや書き込みを行う前に、そのデータをロックする必要があります。ブロッキング互換性マトリックスでは、Sロック(共有ロック)とXロック(排他ロック)は互換性がないため、トランザクション1が(Sロックで)データAを読み取り、トランザクション2が(Xロックで)データを書き込みたい場合、トランザクション2は、トランザクション1がデータAのSロックを解除してから実行を続行するのを待たなければならない。マルチバージョン同時実行制御(MVCC)はこの問題をよりうまく解決する。マルチバージョン・システムでは、書き込みが行われるたびにデータの新しいバージョンが生成され、読み取り操作は必要に応じて適切なバージョンを読み取ることができるため、読み取りと書き込みが互いにブロックされることはありません。

Microsoft SQL Server データベース・エンジンは、既存のトランザクション分離レベルであるコミット・リードの新しい実装を導入し、行のバージョン管理を使用するステートメント・レベルのスナップショットを提供します。SQL Server データベース・エンジンは新しいトランザクション分離レベルであるスナップショットも導入し、行のバージョン管理も使用するトランザクション・レベルのスナップショットを提供します。

READ_COMMITTED_SNAPSHOT データベース・オプションを ON に設定すると、行バージョン管理を使用したコミットされた読み取り分離が有効になります。ALLOW_SNAPSHOT_ISOLATIONデータベース・オプションをONに設定すると、スナップショット分離が有効になります。いずれかのオプションがデータベースで有効になっている場合、データベース・エンジンは変更された各行のバージョンを保持します。トランザクションが行を変更する度に、変更前の行のイメージがバージョン・ストアのページにコピーされます。バージョンストアはtempdbのデータページの集まりです。複数のトランザクションが行を変更した場合、その行の複数のバージョンがバージョンチェーンにリンクされます。行のバージョン管理を使用した読み取り操作は、トランザクションやステートメントが開始された時にコミットされた各行の最後のバージョンを取得します。

SQL Server 2008用に書かれたアプリケーションやSQL Serverに追加されたアプリケーションは、READ_COMMITTED_SNAPSHOTデータベース・オプションがONの時に読み取りコミットのトランザクション分離レベルを指定することで、行バージョン管理を使用した読み取りコミットの分離を実現します。全ての読み取り操作は、文が開始された時にコミットされた行のバージョンを参照します。これにより、データの文レベルのスナップショットが提供されます。

SQL Server用に書かれたアプリケーションは、ALLOW_SNAPSHOT_ISOLATIONデータベース・オプションがONの時にスナップショット・トランザクション分離レベルを指定することで、スナップショット分離を実装します。スナップショット・トランザクション内の全ての読み取り操作は、トランザクションの開始時にコミットされた行のバージョンを参照します。これはデータのトランザクション・レベルのスナップショットを提供します。

行のバージョン管理に基づく分離レベルを使用するトランザクションでは、読み取り操作はデータに対する共有ロックを要求しません。つまり、行バージョン管理を使用しているリーダーが他のリーダーやライターが同じデータにアクセスすることを妨げることはありません。同様に、ライターはリーダーをブロックしません。しかし、ライターは(行バージョン管理に基づく分離レベルで操作している場合でも)お互いの邪魔になる可能性があります。2つの書き込み操作が同時に同じデータを変更することはできません。

"スナップショット分離機能はSQL Server 2008のロック・フレームワークを拡張し、データ変更が発生する前にアプリケーションで値を表示できるようにします。SQL Server 2008のRead Committed Snapshotは、読み取り専用トランザクションによるデータの読み取りを許可するために、データベース管理者が有効にする必要があります。そのため、SIの同時実行制御は読み取り専用トランザクションには適していますが、更新トランザクションでも同じかどうかは不明です。長時間実行される更新トランザクションは、短期間で競合性の高いトランザクションよりも不利である。クロスデータベース・トランザクションが全てのデータベースで設定されていないスナップショット分離(SI)標準を使用しようとすると、トランザクションは失敗します。これは間違いなくスケーラビリティの障壁となる。マイクロソフトがSQL 92の仕様よりも強力な独自のSIを実装できるようになるには、まだまだ長い道のりがありそうです。

修正が行われる前に、修正前のバージョンのコピーが作成され、その後のすべての読み取り操作はコピーされたバージョンを読み取り、修正は新しいバージョンを作成する。このようにして、読み取りと書き込みの操作が互いにブロックされることはない。この行バージョン管理機構を使う利点は、プログラムの同時実行性が比較的高いことですが、欠点は、ユーザーが読み取るデータがダーティなデータではなく、変更中のデータ値である可能性があり、すぐに期限切れになることです。この期限切れの値に基づいてデータに変更を加えると、論理エラーが発生します

sqlコマンド


参照リンク

http://blog.itpub.net/29018063/viewspace-1975432/
https://docs.microsoft.com/zh-cn/sql/relational-databases/sql-server-transaction-locking-and-row-versioning-guide?view=sql-server-ver15
https://www.cnblogs.com/qanholas/archive/2012/01/04/2312412.html
https://www.cnblogs.com/liuzhendong/archive/2010/11/18/1881068.html
https://cloud.tencent.com/developer/article/1032013
https://www.cnblogs.com/xwdreamer/archive/2012/07/30/2615357.html





前の記事:Elasticsearch (ES) レプリケーションクローンインデックス
次の記事:cubase10.5チュートリアル
SQL Server のデッドロック問題を追跡するための拡張イベントの使用 SQL Server のデッドロック問題を追跡するための拡張イベントの使用 SQL Server のデッドロック問題を追跡するための拡張イベントの使用 SQL Server のデッドロック問題を追跡するための拡張イベントの使用 SQL Server のデッドロック問題を追跡するための拡張イベントの使用 SQL Server のデッドロック問題を追跡するための拡張イベントの使用
ソファ アウトレット
发表于2021-1-29 09:13:40只看该作者
relationresult陈斌昭
|にできるようにあなたがそれをすることができます本当に出くわすことあなたは、実際には私たち約束、誰でも素早くはちょうど無視これらの一見正確にどのように{}人のことを忘れることができます。
kunbing123123
发表于2021-7-15 20:37:16只看该作者
をしたいをしたいをしたいをしたいをしたいをしたいをしたいをしたいをしたいをしたいをしたいをしたい
コード農家ネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
hnfjj2021
发表于2021-12-12 01:22:12|只看该作者
をするつもりです。
コード農家ネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
投稿するにはログインが必要です ログイン会員登録

このバージョンのインテグラルルール


免責事項:コードファーマーネットワークによってリリースされたすべてのソフトウェア、プログラミング資料や記事は、研究と研究目的に限定され、上記のコンテンツは、商業的または違法な目的のために使用してはならない、そうでなければ、すべての結果は、ユーザーが責任をお願いします。このサイトの情報はネットワークから、著作権紛争は、このサイトとは何の関係もありません。あなたは完全にダウンロードしてから24時間以内にコンピュータから上記のコンテンツを削除する必要があります。あなたがプログラムを好きなら、本物のソフトウェアをサポートしてください、登録を購入し、より良い本物のサービスを得る。もし著作権侵害があれば、メールでご連絡ください。

メール To:help@itsvse.com

QQ|( 鲁ICP备14021824 号-2)|サイトマップ

GMT+8, 2024-9-19 00:36

クイック返信トップに戻る一覧に戻る