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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

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)

1. 2. Prestasi tinggi memerlukan pergantungan pada cache (redis), pengoptimuman pangkalan data, CDN dan giliran tak segerak; 3. Keselamatan mesti dilakukan dengan penapisan input, perlindungan CSRF, HTTPS, penyulitan kata laluan dan kawalan kebenaran; 4. Pengiklanan pilihan wang, langganan ahli, ganjaran, komisen, pembayaran pengetahuan dan model lain, terasnya adalah untuk memadankan nada komuniti dan keperluan pengguna.

Terdapat tiga cara utama untuk menetapkan pembolehubah persekitaran dalam PHP: 1. Konfigurasi global melalui php.ini; 2. Melalui pelayan web (seperti setenv Apache atau fastcgi_param of nginx); 3. Gunakan fungsi Putenv () dalam skrip PHP. Antaranya, php.ini sesuai untuk konfigurasi global dan jarang mengubah konfigurasi, konfigurasi pelayan web sesuai untuk senario yang perlu diasingkan, dan putenv () sesuai untuk pembolehubah sementara. Dasar kegigihan termasuk fail konfigurasi (seperti php.ini atau konfigurasi pelayan web), fail .Env dimuatkan dengan perpustakaan dotenv, dan suntikan dinamik pembolehubah dalam proses CI/CD. Maklumat sensitif pengurusan keselamatan harus dielakkan dengan keras, dan disyorkan untuk digunakan.

Untuk mengumpul data tingkah laku pengguna, anda perlu merakam pelayaran, mencari, membeli dan maklumat lain ke dalam pangkalan data melalui PHP, dan membersihkan dan menganalisisnya untuk meneroka keutamaan minat; 2. Pemilihan algoritma cadangan harus ditentukan berdasarkan ciri -ciri data: berdasarkan kandungan, penapisan kolaboratif, peraturan atau cadangan campuran; 3. Penapisan kolaboratif boleh dilaksanakan di PHP untuk mengira kesamaan kosinus pengguna, pilih K jiran terdekat, skor ramalan berwajaran dan mengesyorkan produk pemarkahan tinggi; 4. Penilaian prestasi menggunakan ketepatan, ingat, nilai F1 dan CTR, kadar penukaran dan sahkan kesan melalui ujian A/B; 5. Masalah permulaan sejuk boleh dikurangkan melalui atribut produk, maklumat pendaftaran pengguna, cadangan popular dan penilaian pakar; 6. Kaedah Pengoptimuman Prestasi termasuk hasil cadangan cache, pemprosesan tak segerak, pengkomputeran yang diedarkan dan pengoptimuman pertanyaan SQL, dengan itu meningkatkan kecekapan cadangan dan pengalaman pengguna.

Untuk mencapai automasi penempatan MySQL, kunci adalah menggunakan Terraform untuk menentukan sumber, konfigurasi pengurusan ansible, Git untuk kawalan versi, dan mengukuhkan pengurusan keselamatan dan kebenaran. 1. Gunakan Terraform untuk menentukan contoh MySQL, seperti versi, jenis, kawalan akses dan atribut sumber lain AWSRDS; 2. Gunakan AnsiblePlayBook untuk merealisasikan konfigurasi terperinci seperti penciptaan pengguna pangkalan data, tetapan kebenaran, dan lain -lain; 3. Semua fail konfigurasi dimasukkan dalam pengurusan Git, pengesanan perubahan sokongan dan pembangunan kolaboratif; 4. Elakkan maklumat sensitif keras, gunakan Vault atau Ansiblevault untuk menguruskan kata laluan, dan tetapkan kawalan akses dan prinsip kebenaran minimum.

Mengapa saya memerlukan penyulitan SSL/TLS MySQL Connection? Kerana sambungan yang tidak disulitkan boleh menyebabkan data sensitif dipintas, membolehkan SSL/TLS dapat menghalang serangan manusia-dalam-pertengahan dan memenuhi keperluan pematuhan; 2. Bagaimana untuk mengkonfigurasi SSL/TLS untuk MySQL? Anda perlu menjana sijil dan kunci peribadi, mengubah suai fail konfigurasi untuk menentukan laluan SSL-CA, SSL-CERT dan SSL dan memulakan semula perkhidmatan; 3. Bagaimana untuk memaksa SSL apabila pelanggan menghubungkan? Dilaksanakan dengan menyatakan keperluan atau keperluan yang diperlukan semasa membuat pengguna; 4. Butiran yang mudah diabaikan dalam konfigurasi SSL termasuk kebenaran laluan sijil, isu tamat sijil, dan keperluan konfigurasi pelanggan.

Apabila memilih rangka kerja PHP yang sesuai, anda perlu mempertimbangkan secara komprehensif mengikut keperluan projek: Laravel sesuai untuk pembangunan pesat dan menyediakan enjin template eloquentorm dan bilah, yang mudah untuk operasi pangkalan data dan rendering bentuk dinamik; Symfony lebih fleksibel dan sesuai untuk sistem kompleks; Codeigniter adalah ringan dan sesuai untuk aplikasi mudah dengan keperluan prestasi tinggi. 2. Untuk memastikan ketepatan model AI, kita perlu memulakan dengan latihan data berkualiti tinggi, pemilihan penunjuk penilaian yang munasabah (seperti ketepatan, penarikan balik, nilai F1), penilaian prestasi biasa dan penalaan model, dan memastikan kualiti kod melalui ujian unit dan ujian integrasi, sambil terus memantau data input untuk mencegah data drift. 3. Banyak langkah diperlukan untuk melindungi privasi pengguna: menyulitkan dan menyimpan data sensitif (seperti AES

PHP memainkan peranan penyambung dan pusat otak dalam perkhidmatan pelanggan pintar, yang bertanggungjawab untuk menyambungkan input depan, penyimpanan pangkalan data dan perkhidmatan AI luaran; 2. Apabila melaksanakannya, adalah perlu untuk membina seni bina berbilang lapisan: front-end menerima mesej pengguna, preprocesses dan permintaan PHP back-end permintaan, pertama sepadan dengan asas pengetahuan tempatan, dan terlepas, panggil perkhidmatan AI luaran seperti OpenAI atau Dialogflow untuk mendapatkan balasan pintar; 3. Pengurusan Sesi ditulis kepada MySQL dan pangkalan data lain oleh PHP untuk memastikan kesinambungan konteks; 4. Perkhidmatan AI bersepadu perlu menggunakan Guzzle untuk menghantar permintaan HTTP, selamat menyimpan Apikeys, dan melakukan kerja yang baik untuk pemprosesan ralat dan analisis tindak balas; 5. Reka bentuk pangkalan data mesti termasuk sesi, mesej, pangkalan pengetahuan, dan jadual pengguna, dengan munasabah membina indeks, memastikan keselamatan dan prestasi, dan menyokong memori robot

Untuk membolehkan bekas PHP menyokong pembinaan automatik, terasnya terletak pada mengkonfigurasi proses integrasi berterusan (CI). 1. Gunakan Dockerfile untuk menentukan persekitaran PHP, termasuk imej asas, pemasangan lanjutan, pengurusan ketergantungan dan tetapan kebenaran; 2. Konfigurasi alat CI/CD seperti Gitlabci, dan tentukan peringkat binaan, ujian dan penempatan melalui fail .gitlab-ci.yml untuk mencapai pembinaan, pengujian dan penggunaan automatik; 3. Mengintegrasikan kerangka ujian seperti PHPUnit untuk memastikan ujian secara automatik dijalankan selepas perubahan kod; 4. Gunakan strategi penempatan automatik seperti Kubernet untuk menentukan konfigurasi penempatan melalui fail penyebaran.yaml; 5. Mengoptimumkan Dockerfile dan mengamalkan pembinaan pelbagai peringkat
