Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Penguncian Optimis Boleh Dilaksanakan dalam MySQL?

Bagaimanakah Penguncian Optimis Boleh Dilaksanakan dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 20:39:30404semak imbas

 How Can Optimistic Locking Be Implemented in MySQL?

Penguncian Optimis dalam MySQL

Walaupun MySQL secara asli tidak menyokong penguncian optimistik, ia boleh dilaksanakan melalui binaan SQL standard dan logik kod .

Tiada Pendekatan Mengunci:

Dalam pendekatan ini, tiada penguncian eksplisit digunakan. Walau bagaimanapun, ketekalan data tidak dipastikan jika berbilang pengguna mengemas kini data yang sama secara serentak.

SELECT data from theTable WHERE iD = @theId;
{code that calculates new values}
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2
WHERE iD = @theId;

Pendekatan Penguncian Optimis:

Pendekatan ini termasuk menyemak pengubahsuaian sebelum melakukan kemas kini. Jika pengubahsuaian telah berlaku, biasanya ditentukan oleh versi baris atau semakan kesamaan, kemas kini ditolak.

SELECT iD, val1, val2
FROM theTable
WHERE iD = @theId;
{code that calculates new values}
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2
WHERE iD = @theId
AND val1 = @oldVal1
AND val2 = @oldVal2;
{if AffectedRows == 1 }
    {go on with your other code}
{else}
    {decide what to do since it has gone bad... in your code}
{endif}

Penguncian Optimis Versi:

Serupa dengan penguncian optimistik pendekatan, teknik ini menggunakan lajur versi untuk menyemak pengubahsuaian.

SELECT iD, val1, val2, version
FROM theTable
WHERE iD = @theId;
{code that calculates new values}
UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version + 1
WHERE iD = @theId
AND version = @oldversion;
{if AffectedRows == 1 }
    {go on with your other code}
{else}
    {decide what to do since it has gone bad... in your code}
{endif}

Transaksi dan Tahap Pengasingan:

Transaksi boleh digunakan bersama dengan penguncian optimistik untuk memastikan ketekalan data. Walau bagaimanapun, pilihan tahap pengasingan transaksi boleh menjejaskan keberkesanan penguncian optimistik.

Pengujian dan Pengesahan:

Untuk memastikan penguncian optimistik dilaksanakan dengan betul, adalah disyorkan untuk lakukan ujian dan pengesahan menyeluruh menggunakan senario dan tahap pengasingan yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Penguncian Optimis Boleh Dilaksanakan dalam MySQL?. 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