Mengelakkan Kebuntuan MySQL dalam Jadual Pengguna Dalam Talian
Berlakunya ralat "Kebuntuan ditemui apabila cuba mendapatkan kunci; cuba mulakan semula transaksi" boleh menjadi isu yang mengecewakan. Kebuntuan sedemikian timbul apabila berbilang transaksi cuba mendapatkan kunci sumber dalam susunan yang bercanggah. Untuk menangani masalah ini, pertimbangkan penyelesaian berikut:
Operasi Isih
Kebuntuan selalunya berlaku disebabkan oleh operasi yang cuba mengunci kekunci dalam susunan yang berbeza. Wujudkan susunan yang konsisten untuk mengunci kunci dengan mengisih pertanyaan anda dengan sewajarnya. Sebagai contoh, jika anda mempunyai berbilang pertanyaan yang mengunci kedua-dua kunci(1) dan kunci(2), pastikan mereka sentiasa mendapatkan kunci dalam susunan yang sama.
Pesan PADAM Pertanyaan
Pertanyaan DELETE anda juga harus diubah suai untuk berfungsi dalam tertib menaik. Pertanyaan dioptimumkan berikut akan mencapai ini:
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime < NOW() - INTERVAL 900 SECOND ORDER BY id ) u;
Cuba Semula Pelanggan Automatik
Dokumentasi MySQL mengesyorkan percubaan semula pelanggan automatik untuk kebuntuan. Laksanakan logik ini dalam kod pelanggan anda, tetapkan bilangan percubaan semula tertentu (cth., 3) sebelum berputus asa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Kebuntuan MySQL dengan Berkesan dalam Jadual Pengguna Dalam Talian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!