Jadual Kandungan
MVCC
Bagaimanakah InnoDB mentakrifkan 'snapshot'?
Rumah pangkalan data tutorial mysql Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

Mar 10, 2022 am 11:01 AM
mvcc mysql Syot kilat

Artikel ini akan membawa anda memahami syot kilat dalam MVCC dan melihat cara syot kilat berfungsi dalam MVCC? Semoga ia dapat membantu semua orang!

Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

MVCC

Dalam MySQL (enjin storan innodb), sebenarnya, setiap rekod akan merekodkan operasi rollback pada masa yang sama apabila ia dikemas kini. Nilai terkini pada rekod boleh diperoleh dengan menggulung semula nilai keadaan sebelumnya.

Andaikan nilai ditukar daripada 1 kepada 2, 3 dan 4 dalam urutan, akan terdapat rekod yang serupa dengan yang berikut dalam log putar balik.

Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

Nilai semasa ialah 4, tetapi apabila menanyakan rekod ini, urus niaga bermula pada masa yang berbeza akan mempunyai paparan baca yang berbeza. Seperti yang anda lihat dalam rajah, dalam paparan A, B, dan C, nilai rekod ini masing-masing adalah 1, 2, dan 4 Rekod yang sama boleh wujud dalam berbilang versi dalam sistem, iaitu berbilang-. kawalan konkurensi versi (MVCC) pangkalan data ). Untuk paparan baca A, untuk mendapatkan 1, nilai semasa mesti diperolehi dengan melaksanakan semua operasi rollback dalam rajah.

Bagaimanakah InnoDB mentakrifkan 'snapshot'?

Setiap transaksi dalam InnoDB mempunyai ID transaksi unik, dipanggil id transaksi. Ia digunakan pada sistem urus niaga InnoDB pada permulaan urus niaga, dan meningkat secara ketat mengikut susunan permohonan.

Dan setiap baris data juga mempunyai berbilang versi. Setiap kali transaksi mengemas kini data, versi data baharu akan dijana dan id transaksi akan diberikan kepada ID transaksi versi data ini, direkodkan sebagai trx_id baris. Pada masa yang sama, versi data lama perlu dikekalkan, dan dalam versi data baharu, perlu ada maklumat yang boleh diperoleh secara langsung.

Dalam erti kata lain, satu baris rekod dalam jadual data sebenarnya mungkin mempunyai berbilang versi (baris) dan setiap versi mempunyai trx_id barisnya sendiri.

Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

Mengikut takrifan boleh dibaca berulang, Apabila transaksi bermula, anda boleh melihat hasil semua transaksi yang dilakukan. Tetapi kemudian, semasa urus niaga ini dilaksanakan, kemas kini daripada urus niaga lain tidak dapat dilihat olehnya.

Oleh itu, transaksi hanya perlu mengisytiharkan apabila bermula, "Berdasarkan saat saya mula, jika versi data dijana sebelum saya mula, ia akan dikenali; jika saya mula Jika ia dijana nanti, saya tidak akan mengenalinya. Saya perlu mencari versi sebelumnya." Sudah tentu, jika "versi sebelumnya" tidak kelihatan sama ada, anda perlu terus melihat ke hadapan. Selain itu, jika data dikemas kini oleh transaksi itu sendiri, ia masih perlu mengenalinya.

Dari segi pelaksanaan, InnoDB membina tatasusunan untuk setiap transaksi untuk menyimpan semua ID transaksi yang sedang "aktif" pada masa transaksi dimulakan. "Aktif" bermaksud bahawa ia telah dimulakan tetapi masih belum diserahkan.

Nilai minimum ID transaksi dalam tatasusunan direkodkan sebagai paras air rendah, dan nilai maksimum ID transaksi yang telah dibuat dalam sistem semasa ditambah 1 direkodkan sebagai paras air yang tinggi.

Tatasusunan paparan ini membahagikan semua baris trx_id kepada beberapa situasi berbeza.

Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?

Dengan cara ini, untuk saat permulaan transaksi semasa, versi data baris trx_id mempunyai kemungkinan berikut:

  • Jika ia jatuh di bahagian hijau, ini bermakna versi ini adalah transaksi yang komited atau dijana oleh transaksi semasa itu sendiri, dan data ini boleh dilihat; bahagian, ini bermakna versi ini Ia dijana oleh transaksi yang dimulakan pada masa hadapan dan pastinya tidak kelihatan

  • Jika ia jatuh di bahagian kuning, ia termasuk dua situasi

  • a. Jika baris trx_id berada dalam tatasusunan, ini bermakna versi ini dijana oleh transaksi yang belum diserahkan dan tidak kelihatan
  • b dalam tatasusunan, ini bermakna versi ini adalah transaksi yang telah diserahkan, boleh dilihat.

Contohnya:

sesi A memulakan transaksi A. Sebelum transaksi A bermula, terdapat tiga transaksi aktif dalam sistem, dengan ID 90 93 95.
Kemudian ID transaksi A ialah 100

Pada masa ini, tatasusunan pandangan untuk transaksi A adalah seperti ini [90 93 95 100], di mana paras air rendah ialah 90 dan paras air tinggi ialah 100 1= 101;

Kini transaksi A mula membaca data

  • Jika anda membaca bahawa ID ialah 104, iaitu lebih besar daripada tanda air tinggi 101, ini bermakna versi ini dijana oleh transaksi yang dimulakan pada masa hadapan dan pastinya tidak kelihatan
  • Anda membaca bahawa ID ialah 88, iaitu kurang daripada paras air rendah 90, bermakna versi ini adalah transaksi yang diserahkan atau dijana oleh transaksi semasa itu sendiri
  • baca bahawa ID ialah 94, iaitu antara paras air rendah dan masa paras air tinggi, tetapi tidak berada dalam tatasusunan [90 93 95 100], ini bermakna versi ini dijana oleh transaksi yang telah diserahkan dan. kelihatan.
  • Saya membaca bahawa ID ialah 93, iaitu antara paras air rendah dan paras air tinggi Tatasusunan [90 93 95 100] menunjukkan bahawa versi ini dijana oleh transaksi yang belum dilakukan. dan tidak kelihatan;

Peraturan penghakiman ini diterjemahkan secara langsung daripada logik kod, tetapi seperti yang anda lihat, ia menyusahkan untuk digunakan untuk keterlihatan analisis daging manusia.

Jadi, izinkan saya menterjemahkannya untuk anda. Untuk versi data, untuk paparan transaksi, selain kemas kininya sendiri sentiasa kelihatan, terdapat tiga situasi:

  • versi tidak komited dan tidak kelihatan; 🎜>

    Versi telah diserahkan, tetapi ia telah diserahkan selepas paparan dibuat, jadi ia tidak kelihatan
  • Versi telah diserahkan, dan ia telah diserahkan sebelum; paparan telah dibuat, jadi ia boleh dilihat.
  • [Cadangan berkaitan:
  • tutorial video mysql
]

Atas ialah kandungan terperinci Analisis ringkas syot kilat dalam MVCC dan lihat cara syot kilat berfungsi?. 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Integrasi RDS MySQL dengan Redshift Zero ETL Integrasi RDS MySQL dengan Redshift Zero ETL Apr 08, 2025 pm 07:06 PM

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.

Bolehkah mysql mengendalikan pelbagai sambungan Bolehkah mysql mengendalikan pelbagai sambungan Apr 08, 2025 pm 03:51 PM

MySQL boleh mengendalikan pelbagai sambungan serentak dan menggunakan multi-threading/multi-pemprosesan untuk menetapkan persekitaran pelaksanaan bebas kepada setiap permintaan pelanggan untuk memastikan bahawa mereka tidak terganggu. Walau bagaimanapun, bilangan sambungan serentak dipengaruhi oleh sumber sistem, konfigurasi MySQL, prestasi pertanyaan, enjin penyimpanan dan persekitaran rangkaian. Pengoptimuman memerlukan pertimbangan banyak faktor seperti tahap kod (menulis SQL yang cekap), tahap konfigurasi (menyesuaikan max_connections), tahap perkakasan (meningkatkan konfigurasi pelayan).

mysql sama ada untuk menukar jadual kunci meja mysql sama ada untuk menukar jadual kunci meja Apr 08, 2025 pm 05:06 PM

Apabila MySQL mengubahsuai struktur jadual, kunci metadata biasanya digunakan, yang boleh menyebabkan jadual dikunci. Untuk mengurangkan kesan kunci, langkah -langkah berikut boleh diambil: 1. Simpan jadual yang tersedia dengan DDL dalam talian; 2. Melakukan pengubahsuaian kompleks dalam kelompok; 3. Beroperasi semasa tempoh kecil atau luar puncak; 4. Gunakan alat PT-OSC untuk mencapai kawalan yang lebih baik.

Pengoptimuman pertanyaan di MySQL adalah penting untuk meningkatkan prestasi pangkalan data, terutama ketika berurusan dengan set data yang besar Pengoptimuman pertanyaan di MySQL adalah penting untuk meningkatkan prestasi pangkalan data, terutama ketika berurusan dengan set data yang besar Apr 08, 2025 pm 07:12 PM

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

Kunci utama MySQL boleh menjadi batal Kunci utama MySQL boleh menjadi batal Apr 08, 2025 pm 03:03 PM

Kunci utama MySQL tidak boleh kosong kerana kunci utama adalah atribut utama yang secara unik mengenal pasti setiap baris dalam pangkalan data. Jika kunci utama boleh kosong, rekod tidak dapat dikenal pasti secara unik, yang akan membawa kepada kekeliruan data. Apabila menggunakan lajur integer sendiri atau UUIDs sebagai kunci utama, anda harus mempertimbangkan faktor-faktor seperti kecekapan dan penghunian ruang dan memilih penyelesaian yang sesuai.

Bolehkah mysql berjalan di Android Bolehkah mysql berjalan di Android Apr 08, 2025 pm 05:03 PM

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

Bolehkah mysql kembali json Bolehkah mysql kembali json Apr 08, 2025 pm 03:09 PM

MySQL boleh mengembalikan data JSON. Fungsi JSON_EXTRACT mengekstrak nilai medan. Untuk pertanyaan yang kompleks, pertimbangkan untuk menggunakan klausa WHERE untuk menapis data JSON, tetapi perhatikan kesan prestasinya. Sokongan MySQL untuk JSON sentiasa meningkat, dan disyorkan untuk memberi perhatian kepada versi dan ciri terkini.

Tidak dapat log masuk ke mysql sebagai akar Tidak dapat log masuk ke mysql sebagai akar Apr 08, 2025 pm 04:54 PM

Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

See all articles