sql >> データベース >  >> RDS >> Sqlserver

SQL Server-[SELECT]は[UPDATE]をロックしますか?

    はい-ある程度。

    SELECTの長さ 共有ロックの保持は、トランザクションの分離レベルによって異なります:

    • READ UNCOMMITTED -共有ロックはまったく取得されません-UPDATE ブロックされていません
    • READ COMMITTED -共有ロックは、データの読み取り中にのみ取得されます-UPDATE 非常に短い期間ブロックされる可能性があります
    • REPEATABLE READ およびSERIALIZABLE -共有ロックが取得され、トランザクションが終了するまで保持されます-UPDATE SELECTまでブロックされます トランザクションが終了します

    技術的には、UPDATE ステートメントは最初にUPDATEを取得します ロック-共有ロックと互換性があります(SELECTで使用されます) )-更新される行の現在の値を読み取っている間。

    それが完了したら、Update ロックは、テーブルに書き込まれる新しいデータの排他ロックにエスカレートされます。



    1. NHibernate を使用して SQL Server 2008 の TIME データ型を処理するにはどうすればよいですか?

    2. 複数列のインデックスがある場合、単一列のインデックスが必要ですか?

    3. 一意性の制約を処理するためにSQLiteUPDATEでORDERBYをシミュレートします

    4. Apache DDLUtilsを使用せずに、JDBCを使用してスキーマをあるデータベースから別のデータベースにコピーするにはどうすればよいですか?