Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan SELECT FOR UPDATE dengan Cekap dalam SQL Server dan Elakkan Kebuntuan?
PILIH UNTUK KEMASKINI dengan SQL Server: Memahami dan Menyelesaikan Masalah
Dalam SQL Server, pernyataan SELECT FOR UPDATE digunakan untuk memperoleh kunci pada baris yang diambil, menghalang sambungan lain daripada mengubah suai atau memadamkannya sehingga transaksi yang mengeluarkan pertanyaan selesai. Ini boleh berguna untuk senario di mana anda ingin memastikan akses eksklusif kepada data semasa kemas kini atau pengubahsuaian.
Walau bagaimanapun, adalah penting untuk menggunakan mekanisme penguncian yang betul untuk mengelakkan tingkah laku menyekat yang tidak diingini. Dalam SQL Server 2005 dengan tahap pengasingan READ_COMMITTED dan READ_COMMITTED_SNAPSHOT=ON, pembayang WITH (updlock) boleh digunakan untuk melaksanakan SELECT FOR UPDATE.
Malangnya, dalam contoh yang disediakan, menggunakan WITH (updlock) menyekat semua sambungan lain walaupun untuk memilih baris dengan ID yang berbeza. Ini kerana updlock memperoleh kunci julat pada keseluruhan meja, menghalang sebarang akses lain sehingga kunci dilepaskan.
Untuk mencapai gelagat yang diingini iaitu mengunci baris tertentu sahaja yang dipilih, adalah disyorkan untuk menggunakan pembayang ROWLOCK sebaliknya. Pembayang ini memperoleh kunci hanya pada baris yang dipilih, membenarkan sambungan lain mengakses baris yang berbeza dalam jadual tanpa disekat.
Berikut ialah contoh yang dikemas kini:
SELECT * FROM example WITH (ROWLOCK) WHERE>
Pernyataan ini akan memperoleh kunci hanya pada baris dengan id=1, membenarkan sambungan lain untuk terus mengakses baris lain dalam contoh jadual.
Perlu ambil perhatian bahawa gelagat mengunci juga boleh dipengaruhi oleh faktor lain, seperti tahap pengasingan transaksi dan indeks. Dalam kes anda, anda menyebut menghadapi masalah kebuntuan. Kebuntuan boleh berlaku apabila dua atau lebih transaksi menunggu antara satu sama lain untuk melepaskan kunci pada baris yang sama. Untuk mengelakkan kebuntuan, adalah disyorkan untuk sama ada menggunakan pengasingan syot kilat atau melaksanakan dasar pengurusan transaksi yang betul, seperti percubaan semula kebuntuan atau tamat masa kunci.
Atas ialah kandungan terperinci Bagaimana Menggunakan SELECT FOR UPDATE dengan Cekap dalam SQL Server dan Elakkan Kebuntuan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!