Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 19946|Jawab: 3

[Sumber] Kunci basis data NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Salin tautan]
Diposting pada 14/01/2021 15.23.14 | | | |
NOLOCK
Saat opsi ini dipilih, SQL Server membaca atau memodifikasi data tanpa kunci apa pun. Dalam hal ini, pengguna dapat membaca data dari Transaksi yang Tidak Dilakukan atau Roll Back, yang dikenal sebagai "data kotor".

KUNCI TAHAN
Ketika opsi ini dipilih, SQL Server mempertahankan kunci bersama ini hingga akhir seluruh transaksi tanpa melepaskannya di jalan.

UPDLOCK
Saat opsi ini dipilih, SQL Server menggunakan kunci modifikasi alih-alih kunci bersama saat membaca data dan mempertahankan kunci ini hingga akhir seluruh transaksi atau perintah. Opsi ini memastikan bahwa beberapa proses dapat membaca data secara bersamaan, tetapi hanya proses tersebut yang dapat memodifikasi data.

TABLOCK
Ketika opsi ini dipilih, SQL Server akan menempatkan kunci bersama di seluruh tabel hingga perintah berakhir. Opsi ini memastikan bahwa proses lain hanya dapat membaca dan tidak memodifikasi data.

PAGLOCK
Opsi ini adalah opsi default, dan saat dipilih, SQL Server menggunakan kunci halaman bersama.

TABLOCKX (Kunci Meja Eksklusif)
Ketika opsi ini dipilih, SQL Server akan menempatkan kunci di seluruh tabel hingga perintah atau transaksi berakhir. Ini akan mencegah proses lain membaca atau memodifikasi data dalam tabel.

HOLDLOCK menahan kunci bersama hingga seluruh transaksi selesai dan harus dilepaskan segera setelah objek terkunci tidak diperlukan, sama dengan tingkat isolasi transaksi SERIALIZABLE

Pernyataan NOLOCK dijalankan tanpa mengeluarkan kunci bersama, memungkinkan pembacaan kotor, yang sama dengan tingkat isolasi transaksi READ UNCOMMITTED

PAGLOCK menggunakan beberapa kunci halaman di mana satu kunci tabel digunakan

READPAST memungkinkan server sql melewati baris terkunci dan mengeksekusi transaksi, dan untuk tingkat isolasi transaksi READ UNCOMMITTED hanya melewati kunci RID, bukan kunci halaman, zona, dan tabel

ROWLOCK memberlakukan penggunaan rowlocks

TABLOCKX memberlakukan penggunaan kunci tingkat tabel eksklusif, yang mencegah transaksi lain menggunakan tabel selama transaksi

UPLOCK memaksa penggunaan pembaruan saat membaca tabel tanpa kunci bersama

Catatan: Perbedaan antara mengunci tabel dalam database
PILIH * DARI tabel DENGAN (HOLDLOCK) Transaksi lain dapat membaca tabel, tetapi tidak dapat memperbarui atau menghapus
PILIH * DARI tabel DENGAN (TABLOCKX) Transaksi lain tidak dapat membaca, memperbarui, dan menghapus tabel




Mantan:Tampilan layar ganda desktop jarak jauh win10
Depan:.NET/C# Buat akun dompet ETH dan kata sandi verifikasi berdasarkan Nethereum [dengan kode sumber]
 Tuan tanah| Diposting pada 14/01/2021 16.53.24 |
Uji kunci TABLOCKX

SQL pengujian adalah sebagai berikut:


Menguji Kode C#:


Penemuan,Seluruh tabel terkunci, dan data hanya dapat dikueri saat transaksi dieksekusi, seperti yang ditunjukkan pada gambar di bawah ini:



Hapus WITH(TABLOCKX) dan hanya perbarui data dengan ID 1, pengujiannya adalah sebagai berikut:



Karena Tugas 2 dan Tugas 4 tidak melibatkan data dengan id 1, kueri sangat cepat, dan 3 dan 4 perlu menunggu transaksi selesai sebelum melakukan kueri.

Perilaku saat memodifikasi data

Dalam transaksi baca yang diterapkan yang menggunakan penerapan versi baris, pilih baris yang akan diperbarui menggunakan pemindaian pemblokiran, di mana kunci pembaruan (U-lock) diterapkan ke baris data saat nilai data dibaca. Ini sama dengan transaksi baca yang diterapkan yang tidak menggunakan penerapan versi baris. Jika baris data tidak memenuhi kriteria pembaruan, kunci pembaruan dilepaskan pada baris tersebut dan baris berikutnya dikunci dan dipindai.

Update Lock (U): Mode kunci yang mencegah kebuntuan, di mana dua transaksi membaca sumber daya data terlebih dahulu Dalam hal modifikasi, penggunaan kunci bersama dan kunci eksklusif terkadang menyebabkan kebuntuan, sedangkan penggunaan kunci pembaruan dapat menghindari terjadinya kebuntuan. Kunci pembaruan sumber daya hanya dapat ditetapkan ke satu transaksi pada satu waktu, dan jika sumber daya perlu diubah, kunci pembaruan menjadi kunci eksklusif, jika tidak, kunci tersebut menjadi kunci bersama.

Login hyperlink terlihat.

 Tuan tanah| Diposting pada 28/01/2021 17.30.51 |
Masalah:

Udpate a
atur kolom1 = 1
di mana idx = 1
Saat sqlserver mengeksekusi pernyataan update, itu mengunci seluruh tabel

Analisis:

struktur jam tangan,Tanpa kunci utama, Anda tidak dapat mengunci baris saja
 Tuan tanah| Diposting pada 02/05/2023 11.47.24 |
Pengoptimalan Kueri Kerangka Entitas WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com