Jadual Kandungan
1. >
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.
7 Penyerahan terakhir transaksi, binlog
8. Kumpulan penimbal Data kotor dialihkan ke cakera
9 Ringkasan
Rumah pangkalan data tutorial mysql Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

Jan 19, 2022 pm 06:03 PM
mysql

Artikel ini membawakan anda pengetahuan yang berkaitan tentang reka bentuk seni bina enjin storan InnoDB dalam prinsip mysql saya harap ia akan membantu anda.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

Struktur komponen InnoDB:

  1. kolam penimbal: kolam penimbal, data cakera cache

  2. 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

  3. 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
Salin selepas log masuk

Pertama, InnoDB akan menentukan sama ada id data = 1 wujud dalam kumpulan penimbal Jika ia tidak wujud, ia akan dimuatkan daripada cakera ke dalam kumpulan penimbal. dan ia juga akan Menambah kunci eksklusif pada data baris untuk menghalang berbilang SQL daripada mengubah suai data baris pada masa yang sama.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

2. Buat asal fail log Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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 Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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?

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

4. buat semula log penimbal

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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

5 Jika urus niaga tidak diserahkan, adakah akan ada kesan jika pangkalan data turun?

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 Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDBParameter 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.

Pada masa ini, walaupun jika data dalam kumpulan penimbal tidak disalurkan ke cakera, anda masih boleh mengetahui data yang telah diubah suai daripada log buat semula, dan MySQL ditutup dan dimulakan semula Selepas itu, data yang diubah suai boleh dipulihkan daripada log buat semula.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

  1. 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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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

  1. 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

  2. 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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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.

Kuasai sepenuhnya prinsip MySQL dan reka bentuk seni bina enjin storan InnoDB

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!

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)

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

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: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

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.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

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.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

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

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

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.

Cara menyambung ke pangkalan data Apache Cara menyambung ke pangkalan data Apache Apr 13, 2025 pm 01:03 PM

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.

Pantau titisan redis dengan perkhidmatan pengeksport redis Pantau titisan redis dengan perkhidmatan pengeksport redis Apr 10, 2025 pm 01:36 PM

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

Cara Melihat Ralat Pangkalan Data SQL Cara Melihat Ralat Pangkalan Data SQL Apr 10, 2025 pm 12:09 PM

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.

See all articles