Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Anda Boleh Melaksanakan Penguncian Optimis dalam MySQL Tanpa Sokongan Asli?

Bagaimanakah Anda Boleh Melaksanakan Penguncian Optimis dalam MySQL Tanpa Sokongan Asli?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 21:53:02690semak imbas

How Can You Implement Optimistic Locking in MySQL Without Native Support?

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:

  1. Laksanakan pernyataan SELECT untuk mendapatkan semula keadaan semasa data.
  2. Lakukan pengiraan atau operasi lain pada data.
  3. Laksanakan KEMASKINI pernyataan untuk mengemas kini data dengan kriteria penguncian optimistik (mis., WHERE COLUMN_NAME = @OLD_VALUE).
  4. Semak bilangan baris yang terjejas selepas kenyataan KEMASKINI. Jika 0, data telah berubah, menunjukkan konflik dan kemas kini boleh digugurkan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn