Rumah > Artikel > pangkalan data > Artikel yang memperkenalkan pelaksanaan kunci dalam MySQL
Pelaksanaan kunci MySQL
MySQL ialah sistem pengurusan pangkalan data hubungan yang sangat popular yang menyokong pemprosesan banyak pengguna dan transaksi serentak. Dalam kes konkurensi yang tinggi, mekanisme kunci dalam MySQL adalah komponen penting. Cara menggunakan mekanisme penguncian secara rasional dan berkesan meningkatkan prestasi konkurensi adalah bahagian penting dalam pengoptimuman MySQL. Artikel ini akan memperkenalkan cara kunci dilaksanakan dalam MySQL dan cara memilih jenis kunci yang berbeza untuk memaksimumkan prestasi.
Ikhtisar
Dalam pangkalan data yang diakses secara serentak, apabila berbilang pengguna cuba mengubah suai data kongsi, pelbagai isu konsistensi data mungkin timbul. Masalah yang paling biasa ialah konflik baca dan tulis serta keadaan perlumbaan data. Untuk menyelesaikan masalah ini, MySQL menyediakan jenis kunci yang berbeza untuk membenarkan akses serentak sambil memastikan ketekalan data.
Kunci MySQL terbahagi terutamanya kepada dua kategori: kunci kongsi (Kunci Dikongsi) dan kunci eksklusif (Kunci Eksklusif). Kunci kongsi membenarkan berbilang pengguna mengakses sumber pada masa yang sama Pengguna ini hanya boleh membaca sumber tetapi tidak boleh mengubah suainya. Oleh itu, apabila pengguna sudah memegang kunci kongsi, pengguna lain boleh menggunakan kunci kongsi untuk membaca sumber yang sama, tetapi tidak boleh menggunakan kunci eksklusif untuk mengubah suainya. Kunci eksklusif hanya membenarkan seorang pengguna mengakses sumber yang sama pada satu masa dan berbilang pengguna tidak boleh memegang kunci pada masa yang sama.
Pelaksanaan kunci MySQL
Kaedah pelaksanaan kunci MySQL termasuk: kunci meja, kunci baris, kunci halaman, kunci tuple dan kunci celah (gap lock), dsb.
Kunci meja ialah kaedah penguncian yang paling asas Semasa operasi pengubahsuaian, keseluruhan meja dikunci. Oleh itu, pengguna lain tidak akan dapat mengakses jadual, menyebabkan prestasi serentak berkurangan. Mekanisme penguncian ini boleh berfungsi dengan baik jika data jadual adalah kecil atau terdapat sedikit akses serentak. Walau bagaimanapun, dalam pangkalan data besar atau pangkalan data konkurensi tinggi, kunci meja boleh menyebabkan beberapa masalah konkurensi dan mengurangkan prestasi sistem.
Sintaks kunci jadual adalah seperti berikut:
Antaranya, lock_type boleh terdiri daripada jenis berikut:
Kunci baris ialah mekanisme penguncian yang lebih cekap dalam MySQL. Untuk pengubahsuaian rekod dalam jadual, MySQL hanya mengunci baris dalam jadual yang memenuhi syarat. Akses lain ke baris yang tidak memerlukan penguncian tidak terjejas. Dalam kes konkurensi yang tinggi dan volum data yang besar, menggunakan kunci baris dapat mengurangkan skop dan masa kunci dengan berkesan dan meningkatkan prestasi sistem.
Dalam enjin storan InnoDB, penguncian baris ialah mekanisme penguncian lalai.
Sintaks kunci baris:
Antaranya, PILIH ... UNTUK KEMASKINI boleh mengunci baris yang ditanda untuk mengelakkan baris tersebut diubah suai oleh transaksi lain. Kenyataan KEMASKINI ... DI MANA ... juga boleh mengunci satu atau lebih baris yang memenuhi syarat.
Kunci halaman ialah mekanisme penguncian MySQL, yang mengunci jadual dalam unit halaman semasa mengimbas jadual. Penguncian halaman adalah lebih berkesan daripada penguncian baris apabila pengubahsuaian dibuat pada berbilang rekod kerana halaman itu terdiri daripada lebih banyak baris. Penguncian baris, sebaliknya, berfungsi secara individu pada setiap baris, jadi berfungsi lebih perlahan apabila mengubah suai berbilang baris.
Seperti namanya, kunci halaman adalah untuk mengunci halaman Semasa proses mengubah suai halaman tertentu, kunci peringkat halaman hanya melindungi seluruh halaman dan memberitahu sistem bahawa penguncian halaman lain tidak akan. menghalang pelaksanaan transaksi lain. Mengunci keseluruhan jadual atau indeks halaman boleh mengelak daripada mengunci terlalu banyak baris, tetapi ia juga boleh menyebabkan isu konkurensi.
Cara menggunakan kunci halaman:
Gunakan arahan berikut untuk menjadikan enjin InnoDB menggunakan kunci peringkat halaman:
Apabila menggunakan kunci halaman, anda mesti berhati-hati untuk tidak menggunakan LIMIT dalam pernyataan SQL untuk mengehadkan bilangan baris pertanyaan, kerana ini mungkin menyebabkan pangkalan data berubah daripada kunci peringkat baris kepada kunci aras meja.
Kunci Tuple, juga dikenali sebagai kunci Tuple, ialah kunci dalam enjin storan MySQL. Dalam enjin InnoDB, kunci tuple hanya digunakan pada indeks sekunder "bukan unik" untuk menyokong operasi serentak. Jika tupel dikunci oleh transaksi lain, transaksi lain hanya boleh melengkapkan pengubahsuaian rekod dengan nilai indeks yang sama, bukan pengubahsuaian keseluruhan baris data.
Sintaks asas kunci tuple:
SELECT c1 FROM tbl WHERE c1 BETWEEN 10 and 20 FOR UPDATE;
Pada ketika ini, pangkalan data perlu mengunci semua baris dengan nilai c1 antara 10 dan 20. Jenis kunci yang sepadan dipanggil kunci jurang, yang mengunci nilai yang berada dalam jurang tetapi tidak wujud.
Cara menggunakan kunci celah:
Ringkasan
Dalam pembangunan sebenar, kita harus memilih jenis kunci yang betul dan menggunakan kunci yang sesuai mengikut keperluan sebenar untuk mengelakkan kebuntuan dan memperbaiki keselarasan sistem, cuba elakkan kemerosotan prestasi sistem. Pelbagai fungsi penguncian yang disediakan oleh MySQL boleh menyelesaikan masalah operasi transaksi atau akses serentak oleh berbilang pengguna.
Pemilihan yang betul bagi mekanisme kunci MySQL yang sesuai boleh meningkatkan prestasi dan keselarasan sistem dengan berkesan, menjadikan aplikasi kami lebih mantap dan boleh dipercayai.
Atas ialah kandungan terperinci Artikel yang memperkenalkan pelaksanaan kunci dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!