Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu berkaitan tentang kunci global mengunci seluruh pangkalan data. Selepas kita menambah kunci baca pada pangkalan data, tiada permintaan lain boleh menambah kunci tulis pada pangkalan data Mari kita lihat bersama-sama saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial video mysql
Niat asal reka bentuk pangkalan data adalah untuk menangani isu konkurensi, sebagai sumber yang dikongsi oleh berbilang pengguna Apabila akses serentak berlaku, pangkalan data perlu mengawal peraturan capaian sumber secara munasabah. Kunci ialah struktur data penting yang digunakan untuk melaksanakan peraturan akses ini.
Mari kita siarkan dahulu gambar rajah klasifikasi umum kunci
Mengikut skop penguncian, kunci dalam MySQL boleh dibahagikan secara kasar kepada kunci global dan kunci meja, kunci baris. Kami akan mempelajari jenis kunci ini terlebih dahulu Dalam artikel ini, kami akan mempelajari tentang kunci global.
Kunci global
Kunci global mengunci seluruh pangkalan data. Selepas kami menambah kunci baca pada pangkalan data, tiada permintaan lain boleh menambah kunci tulis pada pangkalan data Apabila kami menambah kunci tulis pada pangkalan data, tiada permintaan seterusnya boleh menambah kunci baca atau tulis pada pangkalan data.
FTWRL
MySQL menyediakan kaedah untuk menambah kunci baca global, Siram jadual dengan kunci baca (FTWRL). Apabila kita perlu membuat keseluruhan perpustakaan dalam keadaan baca sahaja, kita boleh menggunakan arahan ini Kemudian penyataan berikut bagi utas lain akan disekat: penyata kemas kini data (tambah, padam, ubah suai), penyataan definisi data (termasuk membuat jadual. , mengubah suai struktur jadual, dsb.) dan mengemas kini Penyataan komit untuk transaksi kelas.
Senario penggunaan kunci global
Senario penggunaan kunci global: Buat sandaran logik bagi keseluruhan pangkalan data. Sandaran logik bermakna memilih setiap jadual dalam keseluruhan pangkalan data dan menyimpannya sebagai teks. Maksudnya, kunci global hanya digunakan apabila melaksanakan data sandaran tuan-hamba atau mengimport dan mengeksport data.
Jadi mengapa anda memerlukan kunci global?
Oleh kerana apabila kami membuat sandaran data atau mengimport dan mengeksport data, jika data boleh ditambah, dipadam dan diubah suai pada masa yang sama dalam tempoh ini, ketidakkonsistenan data akan berlaku.
Pada masa lalu, terdapat cara untuk menggunakan FTWRL yang dinyatakan di atas untuk memastikan bahawa tiada urutan lain akan mengemas kini pangkalan data semasa sandaran Nota: Semasa proses sandaran, keseluruhan pustaka berada dalam baca sahaja negeri.
Oleh kerana kunci global berorientasikan pangkalan data ini, menambah kunci global berbunyi sangat berbahaya:
- Jika kami membuat sandaran pada pangkalan data utama, kemas kini tidak boleh dilakukan semasa tempoh sandaran , dan Pada asasnya semua perniagaan digantung.
- Jika kita membuat sandaran pada pangkalan data hamba, binlog yang disegerakkan daripada pangkalan data induk semasa tempoh sandaran tidak boleh dilaksanakan, yang akan membawa kepada kelewatan tuan-hamba dan ketidakkonsistenan data.
Bagaimana untuk mengelakkan penguncian
Memandangkan penambahan kunci global mempunyai kesan yang begitu besar, bolehkah kita mengelak daripada mengunci?
Melalui pengenalan di atas, kita tahu bahawa penguncian adalah untuk menyelesaikan masalah ketidakkonsistenan data. Jadi selagi kami dapat menyelesaikan masalah ketidakkonsistenan data, kami tidak perlu menambah kunci global. Terdapat idea sedemikian: jika kita merekodkan log operasi apabila kita memulakan sandaran data, penambahan, pemadaman, pengubahsuaian dan pertanyaan kepada pangkalan data dibenarkan tanpa mengunci semasa proses sandaran, dan semasa proses sandaran, rekod operasi penambahan, pemadaman. , pengubahsuaian dan pertanyaan direkodkan dalam satu Dalam fail log, selepas sandaran kami selesai, kami akan melaksanakan semua operasi dalam fail log dalam tempoh ini. Ini memastikan ketekalan data sebelum dan selepas sandaran.
Untuk meringkaskan, tanpa mengunci, data sandaran dan data utama tidak berada pada titik masa yang logik, dan pandangan ini secara logiknya tidak konsisten. Jika kita memastikan bahawa titik masa logik adalah konsisten, iaitu pandangan logik adalah konsisten, kita boleh memastikan konsistensi data Daripada ini, kita memikirkan tahap pengasingan transaksi yang kita pelajari sebelum ini pandangan yang konsisten.
Terdapat mekanisme dalam InnoDB, enjin lalai MySQL, untuk memastikan ketekalan data. Enjin InnoDB mempunyai fungsi versi syot kilat Fungsi ini dipanggil MVCC kerana MVCC mengekalkan syot kilat versi sejarah Setiap syot kilat sepadan dengan nombor versi transaksi, kami akan memohon nombor versi transaksi mengambil data, anda hanya perlu membaca data dengan nombor versi transaksi yang lebih kecil daripada anda sendiri.
–penguncian perintah transaksi tunggal
Alat sandaran logik rasmi ialah mysqldump. Apabila mysqldump menggunakan parameter –single-transaction, transaksi akan dimulakan sebelum mengimport data untuk memastikan paparan yang konsisten diperoleh. Disebabkan sokongan MVCC, data boleh dikemas kini seperti biasa semasa proses ini.
Fungsi parameter --single-transaction adalah untuk menetapkan tahap pengasingan urus niaga kepada bacaan berulang, iaitu BACA BOLEH DIULANG Ini memastikan semua pertanyaan yang sama dalam transaksi membaca data yang sama, yang secara kasarnya menjamin bahawa dalam Semasa pembuangan, jika benang enjin InnoDB lain mengubah suai data jadual dan menyerahkannya, ia tidak akan memberi kesan kepada data benang pembuangan.
Dan tetapkan DENGAN GAMBAR KONSISTEN ke tahap gambar. Bayangkan jika ia hanya bacaan berulang, maka apabila data tidak dibuang pada permulaan transaksi, utas lain mengubah suai dan menyerahkan data, maka hasil pertanyaan pertama pada masa ini adalah hasil yang dihantar oleh utas lain, dan DENGAN GAMBAR YANG KONSISTEN boleh memastikan bahawa apabila urus niaga dimulakan, hasil pertanyaan pertama ialah data A pada permulaan transaksi Walaupun urutan lain mengubah suai datanya kepada B pada masa ini, hasil pertanyaan itu masih A .
Kaedah transaksi tunggal hanya terpakai kepada perpustakaan yang menggunakan enjin transaksi untuk semua jadual. Dalam proses mysqldump, menambah --single-transaction boleh memastikan data InnoDB benar-benar konsisten Untuk enjin seperti MyISAM yang tidak menyokong transaksi, jika terdapat kemas kini semasa proses sandaran, hanya data terkini yang boleh diperolehi Ini memusnahkan konsistensi sandaran. Pada masa ini, kunci global masih diperlukan, jadi kita masih perlu menggunakan arahan FTWRL.
Tetapan baca sahaja
Kami mungkin juga mempunyai soalan ini, memandangkan keseluruhan perpustakaan adalah baca sahaja, mengapa kita tidak menggunakan set baca sahaja global = benar?
Memang benar kaedah baca sahaja juga boleh meletakkan keseluruhan perpustakaan ke dalam keadaan baca sahaja, tetapi masih disyorkan untuk menggunakan kaedah FTWRL, terutamanya atas dua sebab:
- Dalam sesetengah sistem, nilai readonly will Ia digunakan untuk logik lain, seperti menentukan sama ada pangkalan data ialah pangkalan data utama atau pangkalan data siap sedia. Oleh itu, mengubah suai pembolehubah global mempunyai kesan yang lebih besar.
- Terdapat perbezaan dalam mekanisme pengendalian pengecualian. Jika pelanggan memutuskan sambungan secara tidak normal selepas melaksanakan arahan FTWRL, MySQL akan secara automatik melepaskan kunci global dan keseluruhan perpustakaan akan kembali ke keadaan di mana ia boleh dikemas kini seperti biasa.
Selepas menetapkan keseluruhan perpustakaan kepada baca sahaja, jika pengecualian berlaku pada klien, pangkalan data akan kekal dalam keadaan baca sahaja, yang akan menyebabkan keseluruhan perpustakaan berada dalam keadaan tidak boleh ditulis untuk masa yang lama , dengan risiko yang tinggi.
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Mari bercakap tentang kunci global MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

MySQL sesuai untuk pemula untuk mempelajari kemahiran pangkalan data. 1. Pasang alat pelayan dan klien MySQL. 2. Memahami pertanyaan SQL asas, seperti SELECT. 3. Operasi data induk: Buat jadual, masukkan, kemas kini, dan padam data. 4. Belajar Kemahiran Lanjutan: Fungsi Subquery dan Window. 5. Debugging dan Pengoptimuman: Semak sintaks, gunakan indeks, elakkan pilih*, dan gunakan had.

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pembangunan web. Ciri -ciri utamanya termasuk: 1. Menyokong pelbagai enjin penyimpanan, seperti InnoDB dan Myisam, sesuai untuk senario yang berbeza; 2. Menyediakan fungsi replikasi master-hamba untuk memudahkan pengimbangan beban dan sandaran data; 3. Meningkatkan kecekapan pertanyaan melalui pengoptimuman pertanyaan dan penggunaan indeks.

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Operasi asas MySQL termasuk membuat pangkalan data, jadual, dan menggunakan SQL untuk melakukan operasi CRUD pada data. 1. Buat pangkalan data: createdatabasemy_first_db; 2. Buat Jadual: CreateTableBooks (Idintauto_IncrementPrimaryKey, Titlevarchar (100) NotNull, Authorvarchar (100) NotNull, Published_yearint); 3. Masukkan Data: InsertIntoBooks (Tajuk, Pengarang, Published_year) VA

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

Langkah -langkah untuk membina pangkalan data MySQL termasuk: 1. Buat pangkalan data dan jadual, 2. Masukkan data, dan 3. Pertama, gunakan pernyataan CreatedataBase dan createtable untuk membuat pangkalan data dan jadual, kemudian gunakan pernyataan InsertInto untuk memasukkan data, dan akhirnya gunakan pernyataan PILIH untuk menanyakan data.

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Dreamweaver Mac版
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)