Ringkasan ciri ACID dan isu konkurensi transaksi MySQL
Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql Ia terutamanya memperkenalkan ciri-ciri ACID transaksi MySQL dan penyelesaian masalah serentak yang memerlukan boleh rujuk, semoga bermanfaat untuk semua.
Pembelajaran yang disyorkan: tutorial video mysql
1. Konsep transaksi
Satu transaksi ialah Unit tidak boleh dibahagikan yang terdiri daripada satu atau lebih penyata SQL yang beroperasi pada pangkalan data Hanya apabila semua operasi dalam urus niaga dilaksanakan secara normal, keseluruhan urus niaga akan diserahkan kepada pangkalan data Jika beberapa pemprosesan transaksi gagal, maka urus niaga tersebut akan menjadi Kepada kembalikan ke keadaan asal , oleh itu, sama ada semua urus niaga berjaya atau semua gagal.
Jadi anda harus ingat beberapa konsep asas urus niaga, seperti berikut:
Transaksi ialah pelaksanaan set pernyataan SQL, sama ada semuanya berjaya atau semua gagal , dan tiada bahagian daripadanya boleh muncul Kejayaan, keputusan kegagalan separa, operasi atom yang menjamin pelaksanaan transaksi. Hanya apabila semua pernyataan SQL transaksi berjaya dilaksanakan, transaksi boleh dilakukan dan keputusan ditulis pada cakera. Semasa pelaksanaan urus niaga, jika beberapa ralat SQL berlaku, urus niaga mesti digulung semula ke keadaan asal.
Sebagai contoh, perniagaan pemindahan memerlukan berbilang penyata SQL untuk dilengkapkan bersama Hanya apabila penyata SQL ini dilaksanakan dengan jayanya, perniagaan boleh dianggap berjaya.
Pemprosesan transaksi mempunyai tiga keadaan:
mula: Semua pernyataan SQL yang akan dilaksanakan untuk membuka transaksi Semua berjaya, dan kemudian komit melakukan transaksi Jika mana-mana pernyataan SQL menyebabkan pelaksanaan SQL yang tidak normal disebabkan oleh gangguan bekalan elektrik atau ralat pelayan, transaksi tidak akan diserahkan dan transaksi akan dilancarkan. kembali (gulung balik), data akan dipulihkan kepada keadaan sebelum transaksi dimulakan
Ini dijamin oleh enjin storan (dijamin oleh log buat semula dan buat asal log)
Enjin storan MyISAM tidak menyokong transaksi, manakala enjin storan InnoDB menyokong transaksi dan kunci baris.
Gunakan show enginesG
untuk menyemak enjin storan yang disokong oleh pangkalan data semasa.
select @@autocommit;
Lihat tetapan untuk status komitmen transaksi
Enjin pangkalan data boleh diubah suai buat sementara waktu melalui arahan, atau melalui fail Konfigurasi diubah suai secara kekal.
Jika perniagaan kami melibatkan transaksi, kami biasanya mengawal pembolehubah ini dalam kod Secara umumnya, urus niaga kami terdiri daripada berbilang SQL dan mesti memenuhi operasi atom transaksi, jadi kami menetapkannya kepada Serah secara manual. Jika perniagaan berjaya, transaksi akan diserahkan; jika terdapat kegagalan di tengah-tengah perniagaan, satu transaksi akan ditarik balik.
2. Ciri-ciri ASID
Setiap transaksi mesti memenuhi 4 ciri berikut:
Atomisitas urus niaga(Atomik): Transaksi ialah keseluruhan yang tidak boleh dibahagikan Urus niaga mesti mempunyai ciri atom, dan apabila urus niaga diubah, sama ada semua pelaksanaan atau tiada pelaksanaan , iaitu, penyiapan bahagian transaksi tidak dibenarkan. Transaksi Ketekalan (Ketekalan): Sebelum dan selepas transaksi dilaksanakan, data pangkalan data mesti mengekalkan keadaan yang konsisten . Keadaan ketekalan pangkalan data mestilah menjadi tanggungjawab pengguna dan dilaksanakan oleh mekanisme kawalan serentak. Ambil membeli-belah dalam talian sebagai contoh Hanya dengan membiarkan barang keluar dari gudang dan memasukkan keranjang belanja pelanggan boleh menyelesaikan transaksi. (Konsistensi bukan sahaja dicerminkan dalam urus niaga, tetapi juga termasuk pengenalan MySQL dalam lapisan storan. Untuk meningkatkan kecekapan capaian data tempat liputan, lapisan cache Redis atau cache Memery biasanya ditambahkan pada cache data hotspot, yang melibatkan data lapisan cache dan lapisan DB pangkalan data isu Konsistensi) Transaksi Pengasingan (Pengasingan): Apabila dua atau lebih transaksi dilaksanakan serentak, untuk memastikan keselamatan data, operasi dalam satu transaksi diasingkan daripada operasi urus niaga lain Tidak kelihatan kepada urus niaga pelaksana lain, menghalang urus niaga secara serentak daripada menjejaskan satu sama lain . Tahap pengasingan: keselamatan data dan konkurensi transaksi. Lebih ketat pengasingan, lebih tinggi keselamatan dan lebih rendah konkurensi (iaitu, kawalan serentak, memastikan keselamatan data) Ketahanan (Ketahanan) transaksi: Selepas transaksi selesai (urus niaga commit berjaya), DBMS menjamin Pengubahsuaiannya kepada data dalam pangkalan data adalah kekal , dan walaupun pangkalan data gagal kerana kegagalan, data itu sepatutnya boleh dipulihkan.
Perkara yang paling penting tentang MySQL ialah log, bukan data!
Ciri transaksi ACD dijamin oleh mekanisme log semula dan batal log MySQL; I pengasingan dijamin oleh mekanisme penguncian transaksi mysql.
3. Masalah dengan kesepakatan transaksi
Pemprosesan transaksi tidak diasingkan, dan masalah berikut biasanya berlaku apabila melaksanakan transaksi serentak:
Bacaan Kotor: Satu transaksi membaca data yang tidak terikat daripada transaksi lain. Contohnya, apabila urus niaga A dan urus niaga B dilaksanakan serentak, selepas urus niaga A dikemas kini, urus niaga B membuat pertanyaan dan membaca data A yang tidak terikat. Pada masa ini, urus niaga A digulung semula, dan data yang dibaca oleh urus niaga B adalah data kotor yang tidak sah (Transaksi B membaca data transaksi A yang tidak terikat)Bacaan tidak boleh berulang(Bacaan Tidak Boleh Diulang): Operasi satu transaksi menyebabkan transaksi lain membaca data berbeza dua kali sebelum dan selepas. Sebagai contoh, apabila transaksi A dan transaksi B dilaksanakan secara serentak, selepas transaksi B membuat pertanyaan dan membaca data, transaksi A mengemas kini data yang ditanya oleh transaksi B. Pada masa ini, transaksi B membaca data sekali lagi dan mendapati bahawa data dibaca dua kali sebelum dan selepas tidak sama. (Transaksi B membaca data transaksi A yang diserahkan)Baca Hantu(Baca Hantu) Baca Hantu: Operasi satu transaksi membawa kepada jumlah data hasil dua pertanyaan sebelum dan selepas satu lagi transaksi berbeza. Sebagai contoh, apabila transaksi A dan transaksi B dilaksanakan serentak, selepas transaksi B membuat pertanyaan dan membaca data, transaksi A menambah atau memadam rekod yang memenuhi syarat pertanyaan transaksi B. Pada masa ini, transaksi B bertanya semula dan mendapati bahawa transaksi sebelumnya pertanyaan tidak Rekod sedia ada, atau beberapa rekod daripada pertanyaan sebelumnya hilang. (Transaksi B membaca data transaksi A yang baru ditambah atau tidak dapat membaca data yang dipadamkan oleh transaksi A)
Bacaan kotor mesti dihapuskan kerana transaksi tidak dilakukan. Dalam sesetengah senario, bacaan tidak boleh berulang dan bacaan hantu dibenarkan (urus niaga telah dilakukan), tetapi tidak perlu dihapuskan (dengan menetapkan tahap pengasingan yang berbeza), yang ditentukan oleh keperluan senario aplikasi.
4 Perintah berkaitan transaksi
select @@autocommit;
Semak sama ada MySQL secara automatik melakukan transaksi
0. bermaksud manual Serahkan transaksi, 1 bermaksud menyerahkan transaksi secara automatik, tetapkan kaedah penyerahan transaksi kepada penyerahan manual (hanya menjejaskan sesi semasa):
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Ringkasan ciri ACID dan isu konkurensi transaksi MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Membina pangkalan data SQL melibatkan 10 langkah: memilih DBMS; memasang DBMS; mewujudkan pangkalan data; mewujudkan jadual; memasukkan data; mengambil data; mengemas kini data; memadam data; menguruskan pengguna; Menyandarkan pangkalan data.
