Jadual Kandungan
Kata Pengantar
1. Kunci peringkat jadual & kunci peringkat baris
2. Kunci eksklusif & kunci kongsi
1. Uji keserasian kunci eksklusif dan kunci kongsi antara transaksi yang berbeza
2. Kunci baris ujian ditambahkan pada pelaksanaan kunci pada item indeks
3
Rumah pangkalan data tutorial mysql Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

Jun 03, 2023 am 10:43 AM
mysql

    Kata Pengantar

    Disebabkan kerumitan perniagaan kami, berbilang penyata SQL berkaitan yang membentuk urus niaga diperlukan. Jadi, mari kita jelaskan dahulu apa itu transaksi. Transaksi merujuk kepada sekumpulan pernyataan SQL yang dilaksanakan bersama-sama Semua mesti dilaksanakan dengan jayanya atau semua gagal atau kegagalan separa tidak dibenarkan. Sesuatu urus niaga mempunyai ciri-ciri ACID:

    • Atomicity: sama ada semua berjaya atau semua gagal, untuk memastikan konsistensi transaksi

    • Konsistensi: Sebagai contoh, dalam pemindahan bank, memotong wang dari satu orang mesti menambah wang kepada orang lain. daripada data. Dimusnahkan; untuk dipindahkan ke cakera. Seperti yang ditulis di atas, jika terdapat gangguan bekalan elektrik, masa mati atau mula semula pada masa ini, kami mempunyai log semula untuk memastikan ketahanan pangkalan data

    • Pengasingan: Bahagian ini boleh menjelaskan mengapa urus niaga mesti diasingkan, kerana urus niaga mesti dibenarkan untuk dilaksanakan secara serentak Satu perniagaan melibatkan banyak transaksi, dan kita selalunya mempunyai banyak perniagaan di latar belakang untuk melaksanakan secara serentak. Jika semua transaksi dilaksanakan secara bersiri, Jika ya, maka apabila kita menulis program berbilang benang, kita hanya mempunyai satu utas untuk melakukan sesuatu, yang sangat tidak cekap. Oleh itu, urus niaga mesti dilaksanakan secara serentak, tetapi pelaksanaan serentak melibatkan beberapa isu:

      Keselamatan & ketekalan transaksi
    • dan
    • Isu kecekapan selaras

      Kami menggunakan dua perkara ini sebagai titik rujukan konkurensi/pengasingan dalam MySQL Jika kita tidak mengasingkan transaksi sama sekali apabila melaksanakan secara serentak, bacaan kotor mungkin berlaku (urus niaga B membaca data transaksi A yang tidak terikat dan kemudian menggunakan transaksi A menggunakan data tidak komited untuk melaksanakan. pengiraan dan memperoleh banyak hasil lain, dan kemudian transaksi A melancarkan semula data tersebut Kemudian transaksi B mengira data bermasalah, dan bacaan kotor pasti akan menyebabkan masalah), Bacaan tidak boleh berulang (Dapatkan sekeping data di bawah. keadaan yang sama, dan kemudian mendapati bahawa nilai data telah berubah apabila membuat pertanyaan semula Sudah tentu, bacaan tidak boleh diulang mungkin tidak menyebabkan masalah dalam beberapa senario perniagaan data adalah berkaitan dengan ketat) dan bacaan hantu (jumlah data dalam hasil dua pertanyaan sebelum dan selepas keadaan yang sama berbeza dalam transaksi) adalah isu-isu ini. Kemudian untuk menyelesaikan masalah yang dihadapi dalam pelaksanaan transaksi serentak, kami memberikan tahap pengasingan transaksi:

    Pensirian, pensirian dilaksanakan sepenuhnya menggunakan kunci Semua urus niaga diisih melalui kunci dan dilaksanakan dengan cara ini keselamatan data adalah tinggi tetapi kecekapan serentak adalah sangat rendah.

      Bacaan tidak komited untuk program berbilang benang yang kami tulis, tiada kawalan serentak untuk segmen kod bahagian kritikal Walaupun konkurensinya tinggi, keselamatan data adalah sangat rendah bacaan juga membenarkan kewujudan bacaan kotor, yang bermasalah jadi bacaan tanpa komitmen tidak boleh digunakan.
    • Siri dan pembacaan tanpa komitmen tidak akan digunakan dalam projek sebenar Secara amnya, enjin pangkalan data berfungsi pada pembacaan komited dan bacaan boleh berulang secara lalai ini menggabungkan keselamatan & ketekalan data dan kecekapan serentak data dilaksanakan oleh mekanisme kawalan koncurrency berbilang versi MVCC

      .

    • Baca diserahkan, tahap kerja lalai Oracle. Pembacaan data tidak terikat tidak dibenarkan Tahap ini masih membenarkan bacaan tidak berulang dan bacaan maya berlaku.

    • Bacaan berulang, tahap kerja lalai MySQL. Dijamin bahawa data yang sama masih akan diperoleh apabila transaksi dibaca semula, yang sebahagiannya menyelesaikan masalah bacaan maya, tetapi bacaan maya masih akan berlaku

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?Nota:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Semakin tinggi tahap pengasingan transaksi, semakin banyak prestasi dibelanjakan untuk mengelakkan konflik, yang ialah, kecekapan adalah rendah.

      Di peringkat "Baca Berulang", ia sebenarnya boleh menyelesaikan beberapa masalah bacaan maya, tetapi ia tidak dapat menghalang masalah bacaan maya yang disebabkan oleh kemas kini untuk melarang berlakunya maya berbunyi, anda masih perlu menetapkan tahap pengasingan Siri.
    • Prinsip pelaksanaan tahap pengasingan transaksi:
    • kunci+MVCC

      . Prinsip pelaksanaan bersiri adalah kunci termasuk kunci kongsi, kunci eksklusif, kunci kongsi niat, kunci eksklusif niat, kunci celah dan jalan buntu Prinsip pelaksanaan asas pembacaan yang komited dan boleh dibaca berulang: MVCC (kawalan serentak Versi berbilang). MVCC menyediakan kaedah bacaan serentak, termasuk bacaan syot kilat (data yang sama akan mempunyai berbilang versi), bacaan semasa, buat asal log dan buat semula log.

      MVCC ialah prinsip pembacaan yang komited dan pembacaan berulang, dan kunci ialah prinsip penyirian

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Log transaksi digunakan untuk melaksanakan ciri ACID, manakala kunci kongsi, kunci eksklusif dan MVCC digunakan untuk melaksanakan ciri ketekalan (I). Log transaksi dibahagikan kepada log buat asal (log putar balik) dan log buat semula (log semula)

    1. Kunci peringkat jadual & kunci peringkat baris

    • Kunci Aras Meja: Kunci keseluruhan meja. Overhed adalah kecil (kerana anda tidak perlu mencari rekod baris tertentu dalam jadual untuk menguncinya. Jika anda ingin mengubah suai jadual ini, anda terus memohon kunci meja ini), kuncinya pantas, dan tidak akan ada

    • Kebuntuan hadir;Kebutiran kunci adalah besar, kebarangkalian konflik kunci adalah tinggi, dan keselarasan adalah rendah

    • Kunci peringkat baris:Untuk rekod Baris tertentu dikunci. Ia mahal (anda perlu mencari rekod yang sepadan dalam jadual, dan terdapat proses mencari jadual dan indeks), mengunci adalah perlahan, dan kebuntuan akan berlaku adalah yang paling kecil, kebarangkalian konflik kunci adalah terendah, dan konkurensinya tinggi

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Enjin storan MyISAM hanya menyokong kunci peringkat jadual, manakala InnoDB menyokong pemprosesan transaksi, kunci peringkat baris, dan konkurensi yang lebih baik

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    2. Kunci eksklusif & kunci kongsi

    • Kunci eksklusif: juga dikenali sebagai X kunci, tulis kunci

    • Kunci kongsi: Juga dikenali sebagai kunci S, kunci baca

    Membaca (SS) ialah serasi, tetapi membaca dan menulis (SX, SX ), menulis dan menulis (XX) adalah saling eksklusif

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    1. Uji keserasian kunci eksklusif dan kunci kongsi antara transaksi yang berbeza

    Kami mula-mula menyemak jadual SQL dan kandungan

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Lihat tahap pengasingan:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Mula-mula buka transaksi A dan tambahkan kunci eksklusif pada data dengan id=7:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Buka transaksi B pada pelanggan lain:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Tidak kira menambah kunci eksklusif atau kunci kongsi pada id=7, ia disekat dan tidak boleh ditanya, kerana transaksi A Kunci eksklusif ditambahkan pada data dalam baris dengan id=7, yang merupakan kunci tulis Orang lain tidak boleh membaca atau menulis.

    Ringkasan: Untuk kunci data antara transaksi yang berbeza, hanya kunci SS boleh wujud bersama, XX, SX dan XS tidak boleh wujud bersama

    2. Kunci baris ujian ditambahkan pada pelaksanaan kunci pada item indeks

    ditambah pada pokok indeks.

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Setiap kali anda menyelesaikan ujian, gulung semula perkara yang baru anda lakukan.

    Gunakan medan tidak diindeks jadual sebagai syarat penapis

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Kini transaksi 2 mendapat rekod baris berbeza chenwei

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    InnoDB menyokong kunci baris Apabila id kunci utama digunakan sebagai syarat penapis sebentar tadi, transaksi 1 dan transaksi 2 boleh berjaya memperoleh kunci untuk baris yang berbeza. Walau bagaimanapun, kini kami mendapati bahawa kami tidak boleh mendapatkan kunci eksklusif bernama chenwei Mengapa ini? Mari jelaskan:

    Kunci baris InnoDB dilaksanakan dengan mengunci entri indeks, bukannya mengunci rekod baris jadual

    Dan kami Menggunakan nama sebagai keadaan penapis tidak menggunakan indeks , jadi secara semula jadi kunci baris tidak akan digunakan, tetapi kunci meja akan digunakan. Ini bermakna InnoDB menggunakan kunci peringkat baris hanya apabila data diambil melalui indeks, jika tidak InnoDB akan menggunakan kunci jadual!!!

    Kami menambah indeks pada medan nama:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Kemudian lakukan operasi tadi:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Kami mendapati bahawa selepas menambah indeks pada nama, dua transaksi boleh mendapatkan kunci eksklusif (untuk kemas kini) pada baris yang berbeza, yang sekali lagi membuktikan bahawa kunci baris InnoDB ditambahkan pada item indeks.

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Oleh kerana nama kini dalam indeks, gunakan zhangsan untuk mencari id rekod baris di mana ia terletak pada pokok indeks tambahan, iaitu 7, dan kemudian pergi ke pepohon indeks kunci utama untuk mendapatkan baris yang sepadan Rekod kunci eksklusif (tekaan peribadi ialah rekod yang sepadan dalam pepohon indeks tambahan dan pepohon indeks kunci utama dikunci)

    3

    Sirikan semua urus niaga adalah semua kunci kongsi atau kunci eksklusif, tidak perlu menambahnya secara manual. Select memperoleh kunci yang dikongsi, manakala sisipkan, padam dan kemas kini memperoleh kunci eksklusif.

    Tetapkan tahap pengasingan bersiri:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Dua transaksi boleh memperoleh kunci kongsi pada masa yang sama (kewujudan bersama SS:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Sekarang biar transaksi 2 masukkan data;

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Sebab Sisipan perlu menambahkan Ia dikunci, tetapi memandangkan transaksi 1 telah menambah kunci dikongsi pada keseluruhan jadual, transaksi 2 tidak lagi berjaya mengunci jadual (sx tidak wujud bersama)

    gulung semula dan semua status perolehan kunci digulung semula:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Buka dua transaksi:

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Kerana kami Indeks ditambahkan pada nama. Pilihan di atas adalah bersamaan dengan menambahkan kunci kongsi baris pada data bernama zhangsan

    Kemas kini Transaksi 2;

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Transaksi 2 tidak boleh dikemas kini kerana keseluruhan jadual telah dikunci oleh kunci kongsi transaksi 1 pada masa ini

    Transaksi 2 mencari zhangsan pada pokok indeks tambahan, mencari nilai kunci utama yang sepadan, dan kemudian pergi ke kunci utama Pepohon indeks menemui rekod yang sepadan, tetapi mendapati baris rekod ini telah dikunci oleh kunci kongsi 2 boleh mendapatkan kunci kongsi, tetapi tidak boleh mendapatkan kunci eksklusif

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL? Mari kita gunakannya sekali lagi Cuba indeks kunci utama untuk melihat sama ada kemas kini id

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL? masih disekat walaupun medan di belakang tempat kami kini menggunakan id bukannya nama, nama itu juga ditemui melalui pepohon indeks tambahan Kunci utama yang sepadan kemudiannya dicari untuk rekod yang sepadan dalam pepohon indeks kunci utama dan rekod pada pepohon indeks kunci utama dikunci

    Kami mengemas kini data dengan id=8 dengan jayanya kerana apabila kami memilih, kami hanya memberikannya Data dengan id=7 mempunyai kunci baris Sudah tentu, kami boleh berjaya mengendalikan data dengan id=8

    Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?

    Jika ada indeks, gunakan kunci baris; jika tiada indeks, Kemudian gunakan kunci meja kunci peringkat baris merujuk kepada butiran kunci, manakala kunci kongsi dan kunci eksklusif merujuk kepada sifat kunci, sama ada kunci meja atau kunci baris , terdapat perbezaan antara kunci kongsi dan kunci eksklusif

    Siri menggunakan kunci eksklusif dan kunci kongsi Pada tahap bacaan yang boleh diulang, jika anda tidak mengunci secara manual, MVCC sebenarnya tidak menggunakan kunci secara manual buat indeks, ia menggunakan kunci jadual. Jika item indeks digunakan dalam pertanyaan, ia menggunakan kunci baris adalah Kunci indeks dan bukannya mengunci baris data

    .

    Atas ialah kandungan terperinci Apakah kunci peringkat meja, kunci peringkat baris, kunci eksklusif dan kunci kongsi dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Topik panas

    Tutorial Java
    1654
    14
    Tutorial PHP
    1252
    29
    Tutorial C#
    1225
    24
    Peranan MySQL: Pangkalan Data dalam Aplikasi Web Peranan MySQL: Pangkalan Data dalam Aplikasi Web Apr 17, 2025 am 12:23 AM

    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.

    Cara Memulakan MySQL oleh Docker Cara Memulakan MySQL oleh Docker Apr 15, 2025 pm 12:09 PM

    Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data

    Contoh Pengenalan Laravel Contoh Pengenalan Laravel Apr 18, 2025 pm 12:45 PM

    Laravel adalah rangka kerja PHP untuk membina aplikasi web yang mudah. Ia menyediakan pelbagai ciri yang kuat termasuk: Pemasangan: Pasang Laravel CLI secara global dengan komposer dan buat aplikasi dalam direktori projek. Routing: Tentukan hubungan antara URL dan pengendali dalam laluan/web.php. Lihat: Buat pandangan dalam sumber/pandangan untuk menjadikan antara muka aplikasi. Integrasi Pangkalan Data: Menyediakan integrasi keluar-of-the-box dengan pangkalan data seperti MySQL dan menggunakan penghijrahan untuk membuat dan mengubah suai jadual. Model dan Pengawal: Model mewakili entiti pangkalan data dan proses pengawal permintaan HTTP.

    Selesaikan masalah sambungan pangkalan data: Kes praktikal menggunakan perpustakaan mini/db Selesaikan masalah sambungan pangkalan data: Kes praktikal menggunakan perpustakaan mini/db Apr 18, 2025 am 07:09 AM

    Saya menghadapi masalah yang rumit ketika membangunkan aplikasi kecil: keperluan untuk mengintegrasikan perpustakaan operasi pangkalan data ringan dengan cepat. Selepas mencuba beberapa perpustakaan, saya mendapati bahawa mereka mempunyai terlalu banyak fungsi atau tidak serasi. Akhirnya, saya dapati Minii/DB, versi mudah berdasarkan YII2 yang menyelesaikan masalah saya dengan sempurna.

    Kaedah pemasangan kerangka Laravel Kaedah pemasangan kerangka Laravel Apr 18, 2025 pm 12:54 PM

    Ringkasan Artikel: Artikel ini menyediakan arahan langkah demi langkah terperinci untuk membimbing pembaca tentang cara memasang rangka kerja Laravel dengan mudah. Laravel adalah rangka kerja PHP yang kuat yang mempercepat proses pembangunan aplikasi web. Tutorial ini merangkumi proses pemasangan dari keperluan sistem untuk mengkonfigurasi pangkalan data dan menyediakan penghalaan. Dengan mengikuti langkah -langkah ini, pembaca dapat dengan cepat dan cekap meletakkan asas yang kukuh untuk projek Laravel mereka.

    Cara Memasang MySQL di CentOS7 Cara Memasang MySQL di CentOS7 Apr 14, 2025 pm 08:30 PM

    Kunci untuk memasang MySQL dengan elegan adalah untuk menambah repositori MySQL rasmi. Langkah -langkah khusus adalah seperti berikut: Muat turun kekunci GPG rasmi MySQL untuk mencegah serangan pancingan data. Tambah fail repositori MySQL: rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm kemas kini yum repository cache: yum update mysql: yum pemasangan mysql-server mysql Server.

    MySQL dan PHPMyAdmin: Ciri dan Fungsi Teras MySQL dan PHPMyAdmin: Ciri dan Fungsi Teras Apr 22, 2025 am 12:12 AM

    MySQL dan phpmyadmin adalah alat pengurusan pangkalan data yang kuat. 1) MySQL digunakan untuk membuat pangkalan data dan jadual, dan untuk melaksanakan pertanyaan DML dan SQL. 2) Phpmyadmin menyediakan antara muka intuitif untuk pengurusan pangkalan data, pengurusan struktur meja, operasi data dan pengurusan kebenaran pengguna.

    Mysql vs Bahasa Pengaturcaraan Lain: Perbandingan Mysql vs Bahasa Pengaturcaraan Lain: Perbandingan Apr 19, 2025 am 12:22 AM

    Berbanding dengan bahasa pengaturcaraan lain, MySQL digunakan terutamanya untuk menyimpan dan mengurus data, manakala bahasa lain seperti Python, Java, dan C digunakan untuk pemprosesan logik dan pembangunan aplikasi. MySQL terkenal dengan prestasi tinggi, skalabilitas dan sokongan silang platform, sesuai untuk keperluan pengurusan data, sementara bahasa lain mempunyai kelebihan dalam bidang masing-masing seperti analisis data, aplikasi perusahaan, dan pengaturcaraan sistem.

    See all articles