


Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB
Artikel ini membawakan anda pengetahuan yang berkaitan tentang reka bentuk seni bina enjin storan InnoDB dalam prinsip mysql saya harap ia akan membantu anda.
Struktur komponen InnoDB:
kolam penimbal: kolam penimbal, data cakera cache
-
buat semula log penimbal: merekodkan operasi pada kumpulan penimbal dan menulis pada cakera mengikut dasar untuk mengelakkan kehilangan data akibat masa henti tetapi transaksi telah diserahkan
buat asal log : apabila data dalam kumpulan penimbal diproses Semasa membuat pengubahsuaian, anda boleh melancarkan semula urus niaga sebelum ia dilakukan Nilai lama ditulis pada fail log batal untuk memudahkan pengembalian pada masa ini pool tidak konsisten dengan yang ada dalam cakera, iaitu data kotor
1. >
perlu dikemas kini kepada pangkalan data Apakah operasi yang akan dilakukan oleh InnoDB?update users set name = 'lisi' where id = 1
2. Buat asal fail log
Anggap id = 1. Nilai asal nama data ini ialah name = 'zhangsan' . Sekarang Kami ingin mengemas kini kepada name = 'lisi', maka kami perlu menulis nilai lama name='zhangsan' dan id=1 ke fail log batal. Bagi pelajar yang biasa dengan pangkalan data, mereka semua memahami konsep transaksi Sebelum transaksi diserahkan, semua operasi boleh ditarik balik, iaitu nama = 'lisi' boleh digulung semula kepada nama =. 'zhangsan' , jadi nilai sebelum kemas kini ditulis pada fail log buat asal.
3. Kemas kini data kumpulan penimbal
Selepas fail log buat asal ditulis, mula mengemas kini entri ini dalam data memori. Kemas kini nama = 'zhangsan' dengan id = 1 kepada nama = 'lisi'. Pada masa ini, data dalam memori telah dikemas kini, tetapi data pada cakera tidak berubah Pada masa ini, data kotor yang tidak konsisten muncul.
Pada masa ini, anda mungkin mempunyai soalan Jika transaksi diserahkan, tetapi perkhidmatan MySQL tidak berfungsi, dan data dalam memori belum ditulis ke cakera, adakah ia akan Menyebabkan kehilangan data dan menyebabkan ketidakkonsistenan dalam data pelaksanaan SQL?Dalam struktur InnoDB, terdapat penampan semula log untuk menyimpan semula log, sebagai contoh, id =1, name ='zhangsan' ditukar kepada name='lisi' dan ia adalah log.
Tetapi pada masa ini, penimbal log semula hanya wujud dalam ingatan, dan pemulihan data selepas MySQL dimatikan tidak dapat direalisasikan.Malah, ia tidak mempunyai kesan Transaksi tidak diserahkan, yang bermaksud bahawa pelaksanaan tidak berjaya Walaupun selepas MySQL ranap atau terputus, data yang diubah suai dalam kumpulan penimbal dan buat semula log penimbal dalam ingatan akan hilang, dan tidak akan memberi kesan Tidak menjejaskan konsistensi data. Jika komit transaksi gagal, data dalam pangkalan data tidak akan berubah.
6. Hantar transaksi, strategi konfigurasi log buat semula
Apabila menyerahkan transaksi, log buat semula akan melaksanakan buat semula mengikut strategi Log ditulis ke cakera daripada penimbal log buat semula. Dasar ini dikonfigurasikan melalui innoDB_flush_log_at_trx_commit.
Parameter innoDB_flush_log_at_trx_commit ialah 0. Walaupun selepas transaksi dilakukan, log buat semula tidak akan ditulis pada cakera. Selepas MySQL ranap, data dalam memori akan hilang.
Parameter innoDB_flush_log_at_trx_commit ialah 1. Selepas transaksi diserahkan, log buat semula akan dipadamkan daripada memori ke cakera, selagi transaksi berjaya diserahkan, log buat semula mesti wujud pada cakera.
Parameter innoDB_flush_log_at_trx_commit ialah 2. Selepas urus niaga diserahkan, log buat semula hanya kekal dalam cache os dan belum disiram ke cakera, sekiranya perkhidmatan tidak berfungsi pada masa ini. Kemudian data dalam cache os juga akan hilang Walaupun transaksi berjaya dihantar, data akan hilang.
Selepas membacanya, saya percaya bahawa untuk memastikan keselamatan data, parameter 1 ialah strategi terbaik.
7 Penyerahan terakhir transaksi, binlog
binlog sebenarnya adalah fail log milik Pelayan MySQL, dan ia dicadangkan di sini kerana ia mempunyai hubungan yang besar dengan persatuan log semula.
1) Perbezaan antara biglog dan buat semula log
buat semula log: merekodkan semula log dengan sifat fizikal separa, seperti "halaman data mana Yang direkodkan, apakah pengubahsuaian telah dibuat?"
binlog: berat sebelah terhadap log logik, seperti: "Lakukan satu baris data dengan id=10 dalam jadual pengguna Selepas operasi kemas kini, apakah nilai selepas kemas kini?"
2) Semasa menyerahkan transaksi, tulis binlog pada masa yang sama
Semasa melakukan kemas kini, innoDB dan Pelaksana sentiasa berinteraksi, termasuk memuatkan data ke dalam kumpulan penimbal, menulis fail log batal, mengemas kini data memori, menulis log buat semula dan mengepam ke cakera. Penulisan kepada binlog juga dilakukan oleh pelaksana.
Langkah 1, 2, 3 dan 4 ialah perkara yang anda lakukan apabila anda melaksanakan kenyataan kemas kini dan langkah 5 dan 6 ialah perkara yang anda lakukan apabila anda melakukan transaksi.
3) Analisis strategi siram log Binlog
Parameter sync_binlog mengawal strategi siram binlog
Nilai lalai sync_binlog ialah 0, selepas transaksi dihantar , log binlog akan disimpan dalam cache os Selepas MySQL dimatikan, data dalam cache os akan hilang
Nilai sync_binlog ialah 1. Selepas transaksi. diserahkan, log binlog disiram terus ke tengah cakera.
4) Lengkapkan penyerahan transaksi berdasarkan binlog dan buat semula log
Selepas binlog ditulis ke cakera, lokasi dan nama fail fail log binlog akan ditulis untuk buat semula fail log, dan tulis tanda komit dalam fail log buat semula.
5) Apakah kepentingan teg komit? Teg
commit bermaksud untuk memastikan log buat semula dan log binlog konsisten. Jika penyerahan transaksi bermula pada langkah 5 atau langkah 6, MySQL tidak berfungsi, dan tiada tanda komit dalam log buat semula, penyerahan transaksi gagal.
bermakna tanda komit ialah transaksi akhirnya berjaya dilakukan.
8. Kumpulan penimbal Data kotor dialihkan ke cakera
Data kotor disiram ke cakera secara rawak oleh benang IO latar belakang.
Pada masa ini, saya terfikir tentang apa yang perlu dilakukan jika MySQL rosak sebelum memancarkan cakera? Pada masa ini, transaksi telah berjaya dihantar, dan terdapat tanda komit dalam log buat semula Walaupun ia tidak berfungsi, selepas dimulakan semula, data akan dikemas kini ke dalam memori mengikut fail log buat semula, menunggu IO. benang untuk menyiram cakera.
9 Ringkasan
Selepas melaksanakan analisis melalui pernyataan kemas kini, kami mengetahui bahawa enjin storan InnoDB mengandungi kolam penimbal kolam penimbal, penimbal semula log dan cache lain data. Fail log seperti undo dan reod log, serta fail log MySQL Server.
Apabila melaksanakan pernyataan kemas kini, kumpulan penimbal, menulis fail log batal, menulis penimbal log buat semula dan operasi lain akan diubah suai apabila transaksi diserahkan, log buat semula akan dipadamkan, binlog akan dipadamkan , dan nama fail binlog akan ditulis dan kedudukan, tulis tanda komit, dan akhirnya tunggu benang IO untuk secara rawak mengepam data kotor dalam kumpulan penimbal.
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB. 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

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

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



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.

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.

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

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.

Apache menyambung ke pangkalan data memerlukan langkah -langkah berikut: Pasang pemacu pangkalan data. Konfigurasikan fail web.xml untuk membuat kolam sambungan. Buat sumber data JDBC dan tentukan tetapan sambungan. Gunakan API JDBC untuk mengakses pangkalan data dari kod Java, termasuk mendapatkan sambungan, membuat kenyataan, parameter mengikat, melaksanakan pertanyaan atau kemas kini, dan hasil pemprosesan.

Pemantauan yang berkesan terhadap pangkalan data REDIS adalah penting untuk mengekalkan prestasi yang optimum, mengenal pasti kemungkinan kesesakan, dan memastikan kebolehpercayaan sistem keseluruhan. Perkhidmatan Pengeksport Redis adalah utiliti yang kuat yang direka untuk memantau pangkalan data REDIS menggunakan Prometheus. Tutorial ini akan membimbing anda melalui persediaan lengkap dan konfigurasi perkhidmatan pengeksport REDIS, memastikan anda membina penyelesaian pemantauan dengan lancar. Dengan mengkaji tutorial ini, anda akan mencapai tetapan pemantauan operasi sepenuhnya

Kaedah untuk melihat ralat pangkalan data SQL adalah: 1. Lihat mesej ralat secara langsung; 2. Gunakan kesilapan menunjukkan dan menunjukkan perintah amaran; 3. Akses log ralat; 4. Gunakan kod ralat untuk mencari punca kesilapan; 5. Semak sambungan pangkalan data dan sintaks pertanyaan; 6. Gunakan alat debugging.
