InnoDB ialah salah satu daripada enjin pangkalan data MySQL Ia kini merupakan enjin storan lalai MySQL dan salah satu piawaian untuk keluaran binari oleh MySQL AB InnoDB menggunakan sistem kebenaran dwi-lagu, satu ialah kebenaran GPL dan satu lagi ialah kebenaran perisian proprietari . InnoDB ialah enjin pilihan untuk pangkalan data transaksi dan menyokong jadual keselamatan transaksi (ACID);
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Jika anda ingin melihat enjin storan yang digunakan oleh pangkalan data anda secara lalai, anda boleh menggunakan arahan Tunjukkan PEMBOLEH UBAH SEPERTI 'storage_engine';
1
InnoDB ialah salah satu daripada enjin pangkalan data MySQL Ia kini merupakan enjin storan lalai MySQL dan salah satu piawaian untuk keluaran binari oleh MySQL AB. InnoDB telah dibangunkan oleh Innobase Oy dan diperoleh oleh Oracle pada Mei 2006. Berbanding dengan ISAM tradisional dan MyISAM, ciri terbesar InnoDB ialah ia menyokong fungsi transaksi (Transaksi) serasi ACID, serupa dengan PostgreSQL.
InnoDB menggunakan sistem pelesenan dwi-landasan, satu pelesenan GPL dan satu lagi pelesenan perisian proprietari.
1. InnoDB ialah enjin pilihan untuk pangkalan data transaksi, menyokong jadual keselamatan transaksi (ACID)
Atribut ACID transaksi: Iaitu, atomicity dan konsistensi , Pengasingan, Ketahanan
a. Atomicity: Atomicity bermakna set pernyataan ini sama ada dilaksanakan atau tidak dilaksanakan sama sekali Jika ralat berlaku semasa pelaksanaan transaksi, pangkalan data akan Untuk melancarkan kembali ke titik di mana transaksi bermula.
Transaksi ialah satu set pernyataan SQL yang mempunyai fungsi seperti pemilihan, pertanyaan dan pemadaman. Akan ada satu nod untuk setiap pelaksanaan pernyataan. Sebagai contoh, selepas kenyataan padam dilaksanakan, rekod disimpan dalam urus niaga ini menyimpan masa dan perkara yang kami lakukan. Jika sesuatu berlaku, ia akan digulung semula ke kedudukan asal Apa yang saya lakukan sudah disimpan dalam buat semula, dan kemudian ia boleh dilaksanakan secara terbalik. B. Ketekalan: Sebelum dan selepas permulaan transaksi, kekangan integriti pangkalan data tidak rosak. (EG: Contohnya, pemindahan ke B, adalah mustahil untuk menolak wang, tetapi B tidak menerimanya)
C. Pengasingan: Pada masa yang sama, hanya satu permintaan transaksi membenarkan satu permintaan transaksi untuk meminta Tiada gangguan antara transaksi yang berbeza untuk data yang sama; tertentu data berbilang kali, dan berbilang pengubahsuaian dalam urus niaga ini masih belum dilakukan Pada masa ini, transaksi serentak mengakses data, yang akan menyebabkan data yang diperolehi oleh kedua-dua urus niaga menjadi tidak konsisten (baca Diambil data kotor tanpa komitmen daripada Urus niaga lain)
Data, pelbagai pertanyaan dalam skop transaksi mengembalikan nilai data yang berbeza yang diserahkan oleh transaksi sebelumnya telah dibaca, dan nilai data yang sama telah disoal item data)
Item data telah diubah suai daripada "1" kepada "2". Pada masa ini, transaksi T2 memasukkan baris item data ke dalam jadual dan nilai item data ini masih "1" ke pangkalan data. Jika pengguna mengendalikan transaksi T1 melihat data yang baru diubah suai, dia akan mendapati masih terdapat satu baris yang belum diubah suai, baris ini telah ditambah daripada transaksi T2, sebagai jika dia berhalusinasi ); ( membaca data yang dihantar oleh transaksi sebelumnya, adalah untuk satu kumpulan data secara keseluruhan) : Selepas transaksi selesai , semua kemas kini kepada pangkalan data melalui transaksi akan disimpan ke pangkalan data dan tidak boleh ditarik balik 2. InnoDB ialah enjin storan lalai mySQL Tahap pengasingan lalai ialah RR, dan dalam RR Mengambil tahap pengasingan selangkah lebih jauh, kawalan konkurensi berbilang versi (MVCC) digunakan untuk menyelesaikan masalah bacaan yang tidak boleh diulang, dan kunci jurang (iaitu, kawalan konkurensi) ditambahkan untuk menyelesaikan masalah bacaan hantu. Oleh itu, tahap pengasingan RR InnoDB sebenarnya mencapai kesan tahap siri sambil mengekalkan prestasi konkurensi yang lebih baik.
Pangkalan data MySQL menyediakan kita dengan empat tahap pengasingan:
a boleh disiri: boleh mengelakkan bacaan kotor, bacaan tidak berulang dan bacaan hantu berlaku; 🎜>b. Bacaan berulang (repeatable read): dapat mengelakkan berlakunya bacaan kotor dan bacaan tidak berulang; >d, Baca tanpa komitmen (baca tanpa komitmen): tahap terendah, tiada jaminan dalam sebarang situasi
Dari a----d tahap pengasingan dari tinggi ke rendah, semakin tinggi tahap , semakin rendah; kecekapan pelaksanaan
3. InnoDB menyokong kunci peringkat baris. Kunci peringkat baris boleh menyokong konkurensi sepenuhnya, dan kunci peringkat baris dilaksanakan oleh lapisan enjin storan.
Kunci: Fungsi utama kunci adalah untuk mengurus akses serentak kepada sumber yang dikongsi dan digunakan untuk mencapai pengasingan transaksi
Jenis: Kunci kongsi (kunci baca), kunci eksklusif (kunci tulis) Kekuatan kunci: Kunci peringkat meja (overhead rendah, lapisan concurrency rendah),🎜 >
Kunci peringkat baris (overhed tinggi, konkurensi tinggi) , hanya akan dilaksanakan pada peringkat enjin storan
4. InnoDB ialah direka untuk prestasi maksimum dalam memproses sejumlah besar data. Kecekapan CPUnya mungkin tidak dapat ditandingi oleh mana-mana enjin pangkalan data hubungan berasaskan cakera5 Enjin storan InnoDB disepadukan sepenuhnya dengan pelayan MySQL Enjin storan InnoDB dicache dalam memori utama. Ia mengekalkan kumpulan penimbalnya sendiri untuk data dan indeks. InnoDB meletakkan jadual dan indeksnya dalam ruang jadual logik, dan ruang jadual boleh mengandungi beberapa fail (atau fail cakera asal); data dalam jadual, setiap jadual disimpan dalam susunan kunci primer Jika kunci utama tidak dinyatakan apabila jadual ditakrifkan. InnoDB akan menjana ROWID 6-bait untuk setiap baris dan menggunakannya sebagai kunci utama7 InnoDB digunakan dalam banyak tapak pangkalan data besar yang memerlukan prestasi tinggi
8. InnoDB tidak menyimpan bilangan baris dalam jadual (cth: apabila memilih count(*) daripada jadual, InnoDB perlu mengimbas keseluruhan jadual untuk mengira bilangan baris yang ada; keseluruhan jadual, InnoDB menyimpan satu baris Pemadaman satu baris adalah sangat perlahan InnoDB tidak mencipta direktori Apabila menggunakan InnoDB, MySQL akan mencipta fail data lanjutan secara automatik bernama ibdata1 in direktori data MySQL. Dan dua fail log 5MB bernama ib_logfile0 dan ib_logfile1
2. Pelaksanaan asas enjin InnoDB
InnoDB mempunyai dua fail storan, akhiran ialah .frm dan .idb; .frm ialah fail definisi jadual dan .idb ialah fail data jadual.
1 Enjin InnoDB menggunakan struktur B+Tree sebagai struktur indeks
B-Tree (pokok carian berbilang laluan seimbang) : untuk cakera Pepohon carian seimbang yang direka untuk peranti storan luaran
Apabila sistem membaca data dari cakera ke memori, unit asas ialah bit blok cakera Data yang terletak dalam blok cakera yang sama akan jadi Baca semuanya sekali gus bukannya atas permintaan.
Enjin storan InnoDB menggunakan halaman sebagai unit pembacaan data ialah unit terkecil pengurusan cakera Saiz halaman lalai ialah 16k.
Ruang storan blok cakera dalam sistem selalunya tidak begitu besar, jadi setiap kali InnoDB memohon ruang cakera, ia akan menggunakan beberapa blok cakera berturut-turut dengan alamat untuk mencapai saiz halaman 16KB.
InnoDB akan menggunakan halaman sebagai unit asas apabila membaca data cakera ke dalam cakera Apabila menanyakan data, jika setiap bahagian data dalam halaman boleh membantu mencari lokasi rekod data, yang akan mengurangkan bilangan cakera I/O dan meningkatkan kecekapan pertanyaan.
Data dalam struktur B-Tree membolehkan sistem mencari blok cakera dengan cekap di mana data terletak
Setiap nod dalam B-Tree adalah berdasarkan Situasi sebenar boleh mengandungi sejumlah besar maklumat kata kunci dan cawangan, contohnya:
Setiap nod menduduki satu ruang blok cakera, terdapat dua kekunci tertib menaik pada nod dan tiga penunjuk ke nod akar subpokok Penunjuk menyimpan alamat blok cakera di mana nod kanak-kanak berada.
Mengambil nod akar sebagai contoh, kata kunci ialah 17 dan 35. Julat data subpokok yang ditunjuk oleh penuding P1 adalah kurang daripada 17 dan P2 penunjukJulat data subpokok yang ditunjuk ialah 17----35, dan julat data subpokok yang ditunjukkan oleh penuding P3 adalah lebih besar daripada 35
Carian simulasi kata kunci Proses 29:
a. Cari blok cakera 1 berdasarkan nod akar dan baca ke dalam ingatan. [Operasi I/O Cakera buat kali pertama]
b. Bandingkan kata kunci 29 dalam selang (17, 35), cari penunjuk P2 bagi blok cakera 1; > c. Cari blok cakera 3 mengikut penunjuk P2 dan baca ke dalam memori. [Operasi I/O cakera untuk kali kedua]
d. Bandingkan kata kunci 29 dalam selang (26, 30), cari penunjuk P2 bagi blok cakera 3; >
e. Cari blok cakera 8 mengikut penunjuk P2 dan baca ke dalam memori. [Kendalian I/O Cakera kali ketiga]
f. Cari kata kunci 29 dalam senarai kata kunci dalam blok cakera 8.
Storan InnoDB MySQL. enjin direka bentuk dengan pemastautin nod akar dalam ingatan, jadi ia berusaha untuk mencapai kedalaman pokok tidak lebih daripada 3, iaitu, I/O tidak memerlukan lebih daripada tiga kali; > Menganalisis keputusan di atas, kami mendapati bahawa tiga operasi I/O cakera dan tiga operasi carian memori diperlukan. Memandangkan kata kunci dalam ingatan adalah struktur senarai tersusun, carian binari boleh digunakan untuk meningkatkan kecekapan tiga operasi I/O cakera adalah faktor penentu yang mempengaruhi keseluruhan kecekapan carian B-Tree.
B+Tree
B+Tree ialah pengoptimuman berdasarkan B-Tree, menjadikannya lebih sesuai untuk melaksanakan struktur indeks storan luaran Setiap nod dalam B-Tree mempunyai kunci dan data, dan ruang storan setiap halaman adalah terhad Jika data data adalah besar, ia akan menyebabkan setiap nod (iaitu satu halaman) Nombor kunci yang boleh disimpan adalah sangat kecil. Apabila jumlah data yang disimpan adalah besar, kedalaman B-Tree juga akan menjadi lebih besar, yang akan meningkatkan bilangan I/O cakera semasa pertanyaan, sekali gus menjejaskan kecekapan pertanyaan.
Dalam B+Tree, semua nod rekod data disimpan pada nod daun pada lapisan yang sama mengikut urutan nilai kunci Hanya maklumat nilai kunci yang disimpan pada nod bukan daun Ini boleh meningkatkan bilangan nilai utama yang disimpan dalam setiap nod dan mengurangkan ketinggian B+Tree
B+Tree mempunyai dua perubahan berdasarkan B-Tree: (1) Data disimpan dalam nod daun
🎜>
Memandangkan nod bukan daun B+Tree hanya menyimpan maklumat nilai utama, dengan mengandaikan bahawa setiap blok cakera boleh menyimpan 4 nilai utama dan maklumat penunjuk, struktur selepas menjadi B+Tree adalah seperti yang ditunjukkan di bawah:
Biasanya terdapat dua penunjuk kepala pada B+Tree, satu menunjuk ke nod akar dan satu lagi menghala ke daun dengan nod kata kunci terkecil, dan terdapat struktur cincin rantai antara semua nod daun (iaitu, nod data).
Oleh itu, dua operasi carian boleh dilakukan pada B+Tree, satu ialah carian julat dan carian halaman untuk kunci utama, dan satu lagi ialah carian rawak bermula dari nod akar .
B+Tree dalam InnoDB
InnoDB ialah storan data yang diindeks oleh ID
Terdapat dua fail storan data menggunakan enjin InnoDB, satu fail definisi dan satu lagi fail data.
InnoDB mengindeks ID melalui struktur B+Tree, dan kemudian menyimpan rekod dalam nod daun
Jika medan diindeks bukan ID kunci utama, buat indeks untuk medan tersebut, kemudian simpan kunci utama rekod dalam nod daun, dan kemudian cari rekod yang sepadan melalui primer indeks kunci
【Cadangan berkaitan: tutorial video mysql】
Atas ialah kandungan terperinci apa itu mysql innodb. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Cardinality Indeks MySQL mempunyai kesan yang signifikan terhadap prestasi pertanyaan: 1. Indeks kardinaliti yang tinggi dapat lebih berkesan menyempitkan julat data dan meningkatkan kecekapan pertanyaan; 2. Indeks kardinaliti yang rendah boleh membawa kepada pengimbasan jadual penuh dan mengurangkan prestasi pertanyaan; 3. Dalam indeks bersama, urutan kardinaliti yang tinggi harus diletakkan di depan untuk mengoptimumkan pertanyaan.

Laluan pembelajaran MySQL termasuk pengetahuan asas, konsep teras, contoh penggunaan, dan teknik pengoptimuman. 1) Memahami konsep asas seperti jadual, baris, lajur, dan pertanyaan SQL. 2) Ketahui definisi, prinsip kerja dan kelebihan MySQL. 3) menguasai operasi CRUD asas dan penggunaan lanjutan, seperti indeks dan prosedur yang disimpan. 4) Biasa dengan debugging kesilapan biasa dan cadangan pengoptimuman prestasi, seperti penggunaan rasional indeks dan pertanyaan pengoptimuman. Melalui langkah -langkah ini, anda akan memahami sepenuhnya penggunaan dan pengoptimuman MySQL.

Aplikasi dunia nyata MySQL termasuk reka bentuk pangkalan data asas dan pengoptimuman pertanyaan kompleks. 1) Penggunaan Asas: Digunakan untuk menyimpan dan mengurus data pengguna, seperti memasukkan, menanyakan, mengemas kini dan memadam maklumat pengguna. 2) Penggunaan lanjutan: Mengendalikan logik perniagaan yang kompleks, seperti perintah dan pengurusan inventori platform e-dagang. 3) Pengoptimuman Prestasi: Meningkatkan prestasi dengan menggunakan indeks, jadual partisi dan cache pertanyaan.

Perintah SQL di MySQL boleh dibahagikan kepada kategori seperti DDL, DML, DQL, dan DCL, dan digunakan untuk membuat, mengubah suai, memadam pangkalan data dan jadual, memasukkan, mengemas kini, memadam data, dan melakukan operasi pertanyaan yang kompleks. 1. Penggunaan asas termasuk jadual penciptaan createtable, memasukkan data memasukkan, dan pilih data pertanyaan. 2. Penggunaan lanjutan melibatkan gabungan untuk Jadual Bergabung, Subqueries dan Groupby untuk Agregasi Data. 3. Kesilapan umum seperti kesilapan sintaks, jenis data yang tidak sepadan dan masalah kebenaran boleh disahpepijat melalui pemeriksaan sintaks, penukaran jenis data dan pengurusan kebenaran. 4. Cadangan Pengoptimuman Prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi gabungan dan menggunakan transaksi untuk memastikan konsistensi data.

InnoDB mencapai atomik melalui undolog, konsistensi dan pengasingan melalui mekanisme penguncian dan MVCC, dan kegigihan melalui redolog. 1) Atomicity: Gunakan Undolog untuk merekodkan data asal untuk memastikan urus niaga dapat dilancarkan kembali. 2) Konsistensi: Memastikan konsistensi data melalui penguncian peringkat baris dan MVCC. 3) Pengasingan: Menyokong pelbagai tahap pengasingan, dan RepeatableRead digunakan secara lalai. 4) Kegigihan: Gunakan redolog untuk merekodkan pengubahsuaian untuk memastikan data disimpan untuk masa yang lama.

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 sesuai untuk perusahaan kecil dan besar. 1) Perniagaan kecil boleh menggunakan MySQL untuk pengurusan data asas, seperti menyimpan maklumat pelanggan. 2) Perusahaan besar boleh menggunakan MySQL untuk memproses data besar dan logik perniagaan yang kompleks untuk mengoptimumkan prestasi pertanyaan dan pemprosesan transaksi.

InnoDB secara berkesan menghalang pembacaan hantu melalui mekanisme utama. 1) Kekunci seterusnya menggabungkan kunci baris dan kunci jurang untuk mengunci rekod dan jurang mereka untuk mengelakkan rekod baru daripada dimasukkan. 2) Dalam aplikasi praktikal, dengan mengoptimumkan pertanyaan dan menyesuaikan tahap pengasingan, persaingan kunci dapat dikurangkan dan prestasi konkurensi dapat ditingkatkan.


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

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver Mac版
Alat pembangunan web visual

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft