Penguncian Optimis dalam MySQL: Pandangan Lebih Dekat
Penguncian optimistik, teknik yang digunakan untuk mengurus kemas kini serentak dalam pangkalan data, tidak disokong secara asli oleh MySQL. Walau bagaimanapun, ia boleh dilaksanakan melalui gabungan amalan pangkalan data dan kod aplikasi.
Cara Penguncian Optimis Berfungsi
Prinsip di sebalik penguncian optimistik ialah menganggap bahawa data tidak akan konflik semasa kemas kini serentak. Dengan menyemak integriti data sebelum mengemas kini, ia membolehkan pengesanan konflik dan membenarkan tindakan yang sewajarnya diambil.
Jika tiada transaksi, penguncian optimistik digunakan dengan memasukkan pernyataan SELECT tambahan sebelum KEMASKINI. Pernyataan SELECT ini mendapatkan semula keadaan semasa data, yang kemudiannya dibandingkan dengan keadaannya sebelum kemas kini dicuba. Jika data telah berubah, kemas kini akan dibatalkan, mengekalkan integriti data.
Menggunakan Penguncian Optimis dalam MySQL
Untuk melaksanakan penguncian optimistik dalam MySQL, langkah berikut boleh dilakukan dalam kod aplikasi:
Contoh
Pertimbangkan contoh berikut:
<code class="sql">SELECT val1, val2 FROM theTable WHERE iD = @theId; -- Perform data calculations UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId AND val1 = @oldVal1 AND val2 = @oldVal2; -- Check the number of affected rows IF @@ROWCOUNT = 1 -- Update successful ELSE -- Conflict detected END</code>
Kaedah Penguncian Optimis Alternatif
Selain pendekatan SELECT-UPDATE-CHECK, penguncian optimistik juga boleh dilaksanakan menggunakan lajur versi. Lajur ini dinaikkan setiap kali data dikemas kini dan pernyataan KEMASKINI menyemak versi sebelum mengemas kini baris. Jika versi tidak sepadan, kemas kini akan dibatalkan.
Pertimbangan
Penguncian optimis mengandaikan bahawa konflik jarang berlaku dan kos untuk mengesan konflik adalah lebih rendah daripada menggunakan pesimis mengunci (cth., melalui urus niaga). Walau bagaimanapun, ia mungkin tidak sesuai untuk senario di mana konkurensi adalah tinggi dan integriti data adalah penting.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Melaksanakan Penguncian Optimis dalam MySQL Tanpa Sokongan Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!