Rumah >pangkalan data >tutorial mysql >Analisis contoh proses kegigihan data MySQL

Analisis contoh proses kegigihan data MySQL

PHPz
PHPzke hadapan
2023-05-26 17:52:171009semak imbas

1. Penerangan ringkas tentang proses

Memahami proses kegigihan data MySQL boleh membantu kami memperdalam pemahaman tentang MySQL yang mendasari Dalam artikel ini, kami akan menyelesaikan proses ini dengan cara yang popular semua orang mewujudkan pemahaman awal Jika anda berminat, anda boleh mengkaji dan menyelidik proses ini secara mendalam.

Storan data MySQL secara amnya boleh dibahagikan kepada dua bahagian, prosedur tersimpan dalam memori dan storan berterusan pada cakera keras Di sini, ia melibatkan buffer poll dan redo log dalam memori dan dan 事务日志, dalam artikel ini, kami tidak akan menerangkan reka bentuk khusus setiap bahagian secara terperinci, tetapi hanya memberi anda pemahaman konsep: 表结构

  • ialah cache enjin InnoDB pool Sebahagian daripadanya, kita boleh fahami di sini sebagai cache blok memori yang dibaca oleh pangkalan data daripada cakera ke dalam memori buffer poll

  • ialah log logik dalam ingatan, merekodkan operasi perubahan transaksiredo log

  • ialah log logik makanan pada cakera事务日志

  • ialah struktur yang sebenarnya menyimpan data 表结构

Analisis contoh proses kegigihan data MySQL

2 Operasi dalam memori

mempunyai cache untuk data dibaca ke dalam memori arahan dilaksanakan, ia akan dilihat dalam cache terlebih dahulu, sama ada ia adalah hit atau tidak, data yang diperlukan akan dibaca daripada cakera Pengurusan cache menggunakan algoritma LRU yang dipertingkatkan, yang tidak akan diperkenalkan secara mendalam di sini. buffer poll

Apabila arahan pengubahsuaian dijalankan, perkara pertama yang perlu dilakukan ialah mengubah suai cache dalam

Data yang diubah suai akan ditandakan sebagai buffer poll Pada masa yang sama, operasi yang diubah suai juga direkodkan dalam 脏页, rangkaian versi dalam MVCC yang sering kita katakan dilaksanakan dengan bantuan redo log. redo log

Perlu diambil perhatian bahawa halaman kotor tidak digugurkan ke cakera serta-merta, tetapi terdapat mekanisme kawalan siram yang boleh ditetapkan Contohnya, urus niaga digugurkan ke cakera sejurus selepas penyelesaian, kerap digugurkan ke cakera mengikut masa tertentu, dsb.

Operasi dalam ingatan tidak berterusan Jika masalah yang tidak dijangka berlaku dan sistem tidak berfungsi, data tidak berterusan, jadi secara teorinya ia tidak akan menyebabkan kerosakan pada pangkalan data.

3. Ketekunan cakera

3.1 Peranan log transaksi

Kegigihan InnoDB pada cakera terbahagi kepada dua langkah data dalam log masuk ke dalam ruang cakera.

Sebelum membincangkan mengapa kita harus menggunakan log logik, kita perlu memahami secara ringkas perbezaan

antara 随机IO dan 顺序IO:

Proses pengalamatan adalah salah satu daripada cakera IO Kesesakan penting kerana ia memerlukan pengalihan probe ke lokasi di mana ia perlu dibaca untuk membaca data cakera.

bermaksud ruang yang dialamatkan adalah berterusan dan jarak bergerak yang sangat pendek 顺序IO bermakna alamat yang perlu kita cari diedarkan di mana-mana dan perlu bergerak jauh. 随机IO

Jadi, kita boleh membuat kesimpulan dengan jelas: Menggantikan

dengan 随机IO dengan berkesan boleh meningkatkan kecekapan cakera IO Ini adalah apa yang log logik lakukan, kerana fail log berada pada cakera. Secara berterusan, berbanding maklumat jadual data yang diedarkan di mana-mana, kecekapan IO boleh menjadi lebih tinggi. 顺序IO

Selagi kami mengemas kini sepenuhnya operasi dalam log urus niaga, maka transaksi telah berjaya diteruskan, dan urutan khusus akan menyimpan maklumat log ke dalam struktur jadual.

3.2 Penyimpanan dua langkah struktur jadual

Proses menyimpan maklumat log ke dalam struktur jadual dibahagikan kepada dua langkah Pertama, data akan dikemas kini dalam kawasan cache pengepala jadual selepas selesai, ia akan dimuat semula dalam struktur jadual yang sepadan.

Tujuan storan dua langkah adalah untuk memastikan konsistensi storan data yang kukuh dan mengelakkan data daripada tidak lengkap disebabkan oleh masa henti pangkalan data semasa proses berkelip ke cakera.

Kawasan cache pengepala jadual dan blok storan struktur jadual mempunyai kod semak untuk mengesahkan integriti data Jika yang pertama lengkap dan yang terakhir tidak lengkap, teruskan flash semula bekas data dalam yang terakhir Ia boleh diselesaikan Jika bekas tidak lengkap, ia bermakna proses pembilasan dari log gagal, hanya siram semula.

Atas ialah kandungan terperinci Analisis contoh proses kegigihan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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