Mengelakkan Kunci dengan Pertanyaan MySQL
Dalam MySQL, pertanyaan tertentu boleh menyebabkan penguncian, yang membawa kepada isu prestasi terutamanya apabila jadual yang disoal kerap diubahsuai. Untuk menangani perkara ini, persoalan timbul: adakah terdapat cara untuk melaksanakan pernyataan pilihan tanpa mendorong kunci?
Pertanyaan asal yang dimaksudkan:
SELECT COUNT(online.account_id) cnt from online;
mengunci jadual disebabkan oleh peristiwa selari mengubah suai jadual juga. Soalan itu meneroka alternatif yang mungkin.
Satu penyelesaian berpotensi yang disebut dalam respons melibatkan menetapkan tahap pengasingan transaksi kepada BACA-TANPA KOMITED. Walau bagaimanapun, pendekatan ini tidak sesuai untuk pangkalan data hamba kerana ia tidak serasi dengan pengelogan binari dalam mod STATEMENT.
Pendekatan alternatif yang serasi dengan pangkalan data hamba ialah menggunakan sintaks berikut:
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SELECT * FROM TABLE_NAME ; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
Kaedah ini melumpuhkan kunci secara berkesan untuk tempoh penyataan pilih. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini boleh membawa kepada keputusan bukan penentu.
Cadangan lain ialah menggunakan sintaks berikut:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SELECT * FROM TABLE_NAME ; COMMIT ;
Pilihan ini juga melumpuhkan kunci untuk tempoh pilih pernyataan dan memastikan bahawa perubahan yang dibuat semasa tempoh pengasingan dilakukan dengan segera. Perlu diingatkan bahawa pendekatan ini mungkin mempunyai implikasi prestasi berbanding kaedah sebelumnya. Selain itu, tahap pengasingan tidak perlu ditetapkan semula secara eksplisit kepada BACA BERULANG kerana ia akan ditetapkan semula secara automatik apabila dilakukan.
Dengan menggunakan pendekatan ini, adalah mungkin untuk mengelakkan kunci semasa melakukan pertanyaan terpilih dalam MySQL, yang berpotensi meningkatkan prestasi dan mengurangkan perbalahan. Walau bagaimanapun, adalah penting untuk mempertimbangkan potensi pertukaran dan implikasi untuk ketepatan dan ketekalan data apabila memilih kaedah yang sesuai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pernyataan SELECT dalam MySQL Tanpa Menyebabkan Kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!