Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Tips untuk Baca/Tulis Kunci Tergantung pada Tingkat Isolasi Transaksi di MSSQL

Baca Tanpa Komitmen

  • Jika data sedang diubah dalam satu transaksi, pemilihan data ini (pada transaksi lain atau tanpa transaksi) tidak akan menunggu sampai transaksi pertama selesai dan akan mengembalikan entri data transaksi yang tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain tidak akan menunggu sampai transaksi pertama selesai.
  • Kunci bersama tidak digunakan. Identik dengan pengaturan t dia NOLOCK petunjuk untuk semua pilihan di Baca Berkomitmen.
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir dari transaksi .

Baca Komitmen + read_committed_snapshot nonaktif
(ubah database xxx matikan read_committed_snapshot)

  • Jika ada perubahan data dalam satu transaksi, pemilihan data ini (pada transaksi lain atau tanpa transaksi) akan menunggu hingga transaksi pertama selesai. Pilih bertindak dengan yang TIDAK PERIKSA petunjuk akan mengembalikan data yang diubah, tetapi tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain tidak akan menunggu sampai transaksi pertama selesai.
  • Kunci bersama diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir status tidak eksekusi .
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi .

Baca Committed + read_committed_snapshot aktif
(ubah database xxx set read_committed_snapshot aktif)

  • Jika data diubah dalam satu transaksi, pemilihan data ini (dalam transaksi lain atau tanpa transaksi) tidak akan menunggu sampai transaksi pertama selesai, dan akan mengembalikan nilai saat ini t dari yang transaksi dimulai . Pilih dengan yang Petunjuk NOCHECK akan mengembalikan data yang dimodifikasi, tetapi tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain tidak akan menunggu sampai transaksi pertama selesai.
  • Kunci bersama tidak digunakan. Mekanisme Versi Baris digunakan sebagai gantinya – data catatan yang diperbarui disimpan di tempdb .
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi .

Baca yang Dapat Diulang

  • Jika ada perubahan data dalam satu transaksi, pemilihan data ini (pada transaksi lain atau tanpa transaksi) akan menunggu hingga transaksi pertama selesai. Pilih dengan yang Petunjuk NOLOCK akan mengembalikan data yang dimodifikasi, tetapi tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain akan menunggu hingga transaksi pertama selesai.
  • Kunci bersama diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi , tidak seperti Read Committed.
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi .

Dapat dibuat serial

  • Jika ada perubahan data dalam satu transaksi, pemilihan data ini (pada transaksi lain atau tanpa transaksi) akan menunggu hingga transaksi pertama selesai. Pilih dengan yang Petunjuk NOLOCK akan kembalikan data yang diubah, tetapi tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain akan menunggu hingga transaksi pertama selesai.
  • Kunci bersama diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi .
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi.
  • Kunci rentang eksklusif diaktifkan untuk kunci yang memenuhi rentang kriteria kueri. Penyisipan catatan baru yang termasuk dalam rentang ini tidak diperbolehkan. Identik dengan pengaturan yang TAHAN CK petunjuk untuk semua SELECT di Baca Berkomitmen.

Snapshot
(ubah database xxx set allow_snapshot_isolation aktif)

  • Jika ada perubahan data dalam satu transaksi, pemilihan data ini (pada transaksi lain atau tanpa transaksi) tidak akan menunggu sampai transaksi pertama selesai. dan akan mengembalikan nilai saat ini dari yang transaksi dimulai . Pilih dengan yang Petunjuk NOLOCK akan kembalikan data yang diubah, tetapi tidak dikomit.
  • Jika data sedang dibaca dalam satu transaksi, pembaruan data ini di transaksi lain tidak akan menunggu sampai transaksi pertama selesai.
  • Kunci bersama tidak digunakan. Mekanisme Versi Baris digunakan sebagai gantinya – data catatan yang diperbarui disimpan di tempdb .
  • Kunci eksklusif diaktifkan selama eksekusi pernyataan dan dinonaktifkan di akhir transaksi.

Diuji pada MSSQL 2014.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ikhtisar Fungsi DBCC CheckDB

  2. Model Data untuk Melacak Kepemilikan Anda yang Paling Berharga

  3. Kapan harus beralih ke instans RDS yang lebih besar

  4. SQL GROUP BY Klausa untuk Pemula

  5. Blog Basis Data Teratas untuk Diikuti