Cara Mengelakkan Kebuntuan dalam MySQL
Kebuntuan ialah isu biasa dalam sistem pangkalan data, yang boleh menyebabkan isu prestasi yang ketara. Dalam MySQL, kebuntuan berlaku apabila dua atau lebih utas cuba mengunci sumber yang sama dalam susunan yang bertentangan.
Memahami Kebuntuan
Mari kita menganalisis senario kebuntuan biasa:
Jika kedua-dua sambungan dijalankan serentak, kebuntuan berlaku kerana kedua-duanya sedang menunggu antara satu sama lain untuk melepaskan yang terkunci kekunci.
Mengelakkan Kebuntuan
Untuk mengelakkan kebuntuan, adalah penting untuk memastikan sambungan mengunci kekunci dalam susunan yang sama.
Susun semula Pertanyaan
Contoh
Dalam kes khusus anda, pernyataan DELETE hendaklah diubah suai seperti berikut:
DELETE FROM onlineusers WHERE id IN ( SELECT id FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND ORDER BY id ) u;
Dengan menggunakan pendekatan subquery ini, operasi DELETE akan mengunci baris dalam tertib menaik id lajur, mengelakkan kemungkinan kebuntuan.
Logik Cuba Semula Sebelah Klien
Jika kebuntuan masih berlaku dalam sistem anda, adalah disyorkan untuk melaksanakan logik cuba semula sisi klien. Ini melibatkan meminta pelanggan mencuba semula operasi secara automatik beberapa kali (mis., tiga kali percubaan) sekiranya berlaku ralat jalan buntu.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mencegah Kebuntuan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!