Rumah >pangkalan data >tutorial mysql >Bagaimana Anda Boleh Melaksanakan Penguncian Optimis dalam MySQL?

Bagaimana Anda Boleh Melaksanakan Penguncian Optimis dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 17:41:301076semak imbas

How Can You Implement Optimistic Locking in MySQL?

Penguncian Optimis dalam MySQL

Penguncian optimistik ialah amalan yang digunakan dalam kawalan serentak untuk menghalang berbilang pengguna daripada mengemas kini data yang sama secara serentak. Tidak seperti penguncian pesimis, yang menganggap bahawa konflik akan berlaku dan mengunci data pada permulaan transaksi, penguncian optimistik mengandaikan bahawa konflik jarang berlaku dan membenarkan kemas kini tanpa mengunci.

Pelaksanaan dalam MySQL

MySQL tidak tidak asli melaksanakan penguncian optimistik. Walau bagaimanapun, ia boleh dilaksanakan menggunakan arahan SQL standard dan pendekatan lajur versi:

<code class="sql">CREATE TABLE theTable (
    id INT NOT NULL AUTO_INCREMENT,
    val1 INT NOT NULL,
    val2 INT NOT NULL,
    version INT NOT NULL DEFAULT 0
);</code>

Pertanyaan Mengunci Optimis:

<code class="sql">UPDATE theTable
SET val1 = @newVal1,
    val2 = @newVal2,
    version = version + 1
WHERE id = @id
AND version = @oldVersion;</code>

Menyemak Konflik :

Selepas kemas kini, nilai AffectedRows disemak:

  • Jika AffectedRows == 1, kemas kini berjaya tanpa konflik.
  • Jika AffectedRows == 0, konflik telah berlaku dan kemas kini gagal.

Tahap Pengasingan

Tahap pengasingan transaksi memainkan peranan dalam penguncian optimistik. Dalam tahap pengasingan READ_COMMITTED, proses lain tidak boleh membaca kemas kini tanpa komitmen, yang menghalang konflik daripada berlaku.

Pengehadan

  • Skalabiliti: Penguncian optimistik boleh menjadi kurang berkesan dalam keadaan tinggi -persekitaran concurrency di mana konflik lebih berkemungkinan besar.
  • Kehilangan Data: Jika konflik berlaku, perubahan data yang dibuat oleh pengguna lain mungkin hilang.

Bila perlu Gunakan

Penguncian optimis sesuai untuk situasi dengan kemas kini yang jarang berlaku dan kebarangkalian konflik yang rendah. Ia sering digunakan dalam aplikasi web di mana sesi pengguna yang singkat mengurangkan kemungkinan kemas kini serentak.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Melaksanakan Penguncian Optimis 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