Rumah  >  Artikel  >  pangkalan data  >  Penemuduga: Mari kita bincangkan tentang mekanisme penyerahan dua fasa MySQL.

Penemuduga: Mari kita bincangkan tentang mekanisme penyerahan dua fasa MySQL.

青灯夜游
青灯夜游ke hadapan
2023-02-01 20:05:031337semak imbas

Artikel ini akan membawa anda memahami mekanisme penyerahan dua fasa MySQL, memperkenalkan log buat semula dan log bin, dan melihat cara mereka bekerjasama untuk menyelesaikan penyerahan dua fasa saya harap ia akan membantu semua orang!

Penemuduga: Mari kita bincangkan tentang mekanisme penyerahan dua fasa MySQL.

MySQL memastikan konsistensi logik log semula dan log bin melalui mekanisme penyerahan dua peringkat, dengan itu memastikan tiada kehilangan data dan konsistensi data dalam pangkalan data tuan-hamba .

Apabila bercakap tentang penyerahan dua peringkat, kita perlu memperkenalkan log semula dan log sampah terlebih dahulu.

buat semula log

buat semula log ialah log buat semula, iaitu log unik kepada enjin InnoDB (sesetengah penemuduga sering bertanya tentang perkara ini).

Apa yang dilakukan semula log terutamanya?

Ambil pengemaskinian data sebagai contoh Kami tahu bahawa data MySQL disimpan pada cakera Jika setiap kali data dikemas kini, cakera dicari untuk mencari data yang akan dikemas kini dan operasi kemas kini dilakukan. Kos IO akan menjadi sangat tinggi.

Tidak mengapa jika ia adalah pemacu keadaan pepejal, tetapi jika ia adalah pemacu keras mekanikal, prestasi kemas kini MySQL tidak dapat memenuhi keperluan perniagaan kami sama sekali.

Jadi, MySQL menggunakan teknologi yang dipanggil WAL, Write-Ahead Logging.

Apabila mengemas kini data, tulis operasi kemas kini (iaitu, pengubahsuaian yang dibuat pada halaman data tertentu) pada log buat semula dahulu, dan kemudian kemas kini memori ini selesai. MySQL akan mengepam rekod operasi log semula ke cakera apabila pelayan melahu untuk mengekalkan konsistensi data.

Perlu diingat bahawa walaupun log buat semula juga merupakan fail pada cakera, prestasinya sangat tinggi kerana operasi ditulis secara berurutan.

Sudah tentu, log buat semula juga mempunyai had saiz, dan penulisan tanpa had adalah mustahil.

Sebagai contoh, dalam gambar di atas, 4 log buat semula dikonfigurasikan Pos tulis mewakili tempat rekod semasa ditulis dan titik semak mewakili a Apabila ia maju, ia akan terus bergerak ke hadapan dan memadam data untuk memastikan bahawa log buat semula boleh terus ditulis.

Sudah tentu, sebelum memadamkan data, rekod log buat semula akan dipadamkan ke cakera.

Melalui log buat semula, anda boleh memastikan bahawa walaupun MySQL dimulakan semula secara tidak normal, data tidak akan hilang (kerana log buat semula ialah log fizikal dan boleh dimainkan semula ciri ini dipanggil selamat ranap.

log bin

Log bin ialah log yang disediakan oleh Pelayan MySQL, dipanggil log arkib Semua enjin boleh menggunakan log bin.

Apakah perbezaan antara log bin dan log semula?

1. Pembekal kedua-dua log ini adalah berbeza: log bin disediakan oleh Pelayan MySQL, dan log buat semula adalah unik untuk enjin InnoDB.

2. Log buat semula terutamanya merekodkan pengubahsuaian yang dibuat pada halaman data tertentu Log bin merekodkan logik asal pernyataan, seperti mengemas kini medan tertentu pada baris tertentu.

3. Log buat semula ditulis dalam gelung dan data akan ditimpa. Log bin dilampirkan Apabila satu fail penuh, fail seterusnya ditulis.

Penyerahan dua fasa

Selepas memperkenalkan log buat semula dan log tong, mari kita lihat cara mereka bekerjasama untuk melengkapkan penyerahan dua fasa.

Gambar di atas adalah proses mengemas kini data Anda boleh melihat bahawa sebelum mengemas kini sekeping data, MySQL akan memuatkan data terlebih dahulu ke dalam memori, dan kemudian Kemas kini memori dan mula menulis log semula.

Pada masa ini, log buat semula berada dalam keadaan sediakan Selepas log sampah selesai ditulis, dan kemudian transaksi diserahkan, operasi kemas kini rekod ini selesai.

buat semula log sediakan -> tulis log bin ->

Mari kita analisa faedah menggunakan penyerahan dua peringkat.

Senario 1: Apabila log buat semula berada dalam keadaan sediakan, jika menulis ke log sampah gagal, kemas kini gagal pada masa ini, log buat semula tidak mempunyai komit dan log sampah tidak mempunyai rekod status kedua-duanya adalah konsisten dan tiada masalah.

Senario 2: Apabila log buat semula berada dalam keadaan sediakan, menulis log sampah berjaya, tetapi komputer tidak berfungsi dan komit gagal. Pada masa ini, log bin menjana rekod, log buat semula tidak berjaya ditulis dan data tidak konsisten buat sementara waktu.

Tetapi jangan risau, apabila MySQL dimulakan semula, ia akan menyemak rekod dalam keadaan sediakan dalam log buat semula. Dalam log buat semula, medan dipanggil Malah, jika penulisan tidak berjaya, penyerahan akan diserahkan.

Melalui mekanisme ini, konsistensi log buat semula dan log sampah terjamin.

Ringkasan

Sebab mengapa terdapat kedua-dua log semula dan log bin dalam MySQL adalah kerana log bin ialah log arkib yang disediakan oleh Pelayan MySQL, yang dengan sendirinya tidak mengalami ranap- keupayaan selamat. Log buat semula itu sendiri tidak mempunyai keupayaan untuk mengarkibkan Ia adalah log yang ditulis dalam gelung.

MySQL memastikan ketekalan data dengan menyepadukan kedua-dua log ini dan menggunakan mekanisme penyerahan dua peringkat.

Menulis bukan mudah, terima kasih atas suka dan perhatian anda.

[Cadangan berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci Penemuduga: Mari kita bincangkan tentang mekanisme penyerahan dua fasa MySQL.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam