Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu berkaitan seni bina sistem logik mysql Seni bina umum dibahagikan kepada tiga lapisan, yang digunakan untuk pemprosesan benang sambungan, Mengandungi kebanyakan perkhidmatan teras mysql dan enjin storan saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial pembelajaran mysql
Pelanggan -> pemprosesan benang sambungan (pemprosesan sambungan, pengesahan kebenaran, keselamatan)
Perkhidmatan yang disertakan bukanlah teknologi unik untuk mysql Semuanya menyediakan program C/S atau apa yang diperlukan oleh program ini (pemprosesan sambungan, pengesahan kebenaran, keselamatan, dll.)
Cache pertanyaan——>Parser——>Optimizer——>Laksanakan pertanyaan
Caching pertanyaan, penghuraian, analisis, pengoptimuman, caching, semua fungsi terbina dalam (tarikh, masa, fungsi matematik dan penyulitan Pada masa yang sama, semua fungsi yang disediakan oleh enjin storan tertumpu dalam lapisan ini (Proses penyimpanan, pencetus, paparan).
Proses: Sebelum menghuraikan pertanyaan, cache mesti ditanya terlebih dahulu. Cache hanya boleh menyimpan maklumat pertanyaan dan data hasil Jika pertanyaan diminta dan wujud dalam cache, pertanyaan itu tidak diperlukan dioptimumkan dan dilaksanakan, dan hasil pertanyaan yang disimpan dalam cache dikembalikan terus
Enjin storan bertanggungjawab untuk penyimpanan dan pengambilan data mysql (serupa dengan sistem fail di bawah Linux)
Setiap enjin storan mempunyai kelebihan dan kekurangan, dan lapisan perkhidmatan perantaraan berkomunikasi dengan enjin storan melalui API , antara muka API ini melindungi perbezaan antara enjin storan yang berbeza dan menjadikan lapisan pertanyaan selulus mungkin.
API enjin storan mengandungi lebih daripada sedozen fungsi peringkat rendah, seperti melaksanakan "Mulakan urus niaga", atau mengambil baris dengan kunci utama tertentu, tetapi enjin storan biasanya tidak menghuraikan SQL (InnoDB akan menghuraikan definisi kunci asing , kerana ia tidak melaksanakan fungsi ini sendiri), enjin storan yang berbeza tidak akan berkomunikasi antara satu sama lain, tetapi hanya akan bertindak balas kepada permintaan pelayan lapisan atas.
1.Penyambung
merujuk kepada ramalan yang berbeza Interaksi dengan SQL
Nactive C API, JDBC, ODBC, .NET, PHP, Python, Perl, Ruby, VB
2
Alat Pengurusan dan Kawalan Sistem
Sandaran & Pemulihan, Keselamatan, Replikasi, Kluster, Pembahagian, Pengurus Instance, INPORMATICN_SCHEMA, Pentadbir , Meja Kerja, Pelayar Pertanyaan, Kit Alat Migrasi
3 Kolam Sambungan (Kolam Sambungan)
Urus sambungan pengguna penimbal, pemprosesan benang, dsb. Keperluan caching adalah. diperlukan.
bertanggungjawab memantau pelbagai permintaan kepada Pelayan MySQL, menerima permintaan sambungan dan memajukan semua permintaan sambungan ke modul pengurusan benang.
Setiap permintaan pelanggan yang disambungkan ke Pelayan MySQL akan diberikan (dicipta) benang sambungan untuk menyampaikannya secara berasingan, dan benang sambungan dicache, jadi tidak ada keperluan untuk setiap sambungan Pelanggan adalah dicipta dan dimusnahkan secara berasingan, dan tugas utama utas sambungan adalah untuk berkomunikasi antara Pelayan MySQL dan pelanggan, menerima permintaan arahan daripada pelanggan, dan menyampaikan maklumat hasil daripada pelayan Modul pengurusan benang bertanggungjawab untuk mengurus dan mengekalkan sambungan ini benang, termasuk penciptaan benang cache, dsb.
Pengesahan -Penggunaan Semula Benang - Had Sambungan - Semak Memori -Cache
4.SQL Antara muka (antara muka SQL)
menerima arahan SQL pengguna dan mengembalikan hasil yang perlu ditanya oleh pengguna Contohnya, pilih daripada untuk memanggil Antara Muka SQL
DML, DDL, Prosedur Tersimpan, Pandangan, Pencetus, dll
5.Parser (penghuraikan)
Apabila SQL arahan dihantar ke parser, ia akan menjadi Pengesahan dan penghuraian yang dilaksanakan oleh Lex dan YACC Ia adalah skrip yang sangat panjang Dalam MySQL, kami digunakan untuk memanggil semua arahan yang dihantar oleh Klien ke bahagian Pelayan yang dipanggil pertanyaan . Dalam Pelayan MySQL, benang sambungan menerima klien Selepas menerima Pertanyaan pada akhirnya, pertanyaan akan dihantar terus ke modul pemprosesan khusus
yang bertanggungjawab untuk mengelaskan pelbagai pertanyaan dan kemudian memajukannya ke setiap modul pemprosesan yang sepadan > a. Lakukan analisis semantik dan sintaksis bagi pernyataan SQL, menguraikannya ke dalam struktur data, kemudian mengklasifikasikannya mengikut jenis operasi yang sama, dan membuat pemajuan disasarkan ke langkah seterusnya, SQL pernyataan akan dihantar dan Pemprosesan adalah berdasarkan struktur ini b Jika ralat ditemui semasa penguraian, ini bermakna pernyataan sql tidak munasabah Aliran kerja pangkalan data 4. Akhir sekali, selepas mendapatkan data, kembalikan kepada klien, tutup sambungan dan lepaskan benang sambungan. 1. Apakah itu enjin storan plug-in Enjin storan adalah untuk membaca dan menulis data ke cakera enjin penyimpanan , kaedah operasi baca dan tulis juga berbeza, urus niaga, kunci, dan lain-lain adalah berbeza Kerana kita mempunyai keperluan perniagaan yang berbeza, akan terdapat banyak enjin storan, kerana enjin storan adalah berdasarkan jadual, berbeza jadual boleh mempunyai enjin storan yang berbeza, membolehkan enjin storan dimuatkan ke dalam pelayan MySQL yang sedang berjalan, ini ialah enjin storan pemalam 2. Apakah cache LRU Algoritma strategi mekanisme penyingkiran Cache, kerana memori cache sentiasa terhad, jadi sesetengah kandungan mesti dipadamkan apabila cache penuh untuk memberi ruang kepada kandungan baharu Di bawah mekanisme LRU, data yang dihapuskan dipanggil data tidak berguna nama LRU ialah Least Recently Used, iaitu kami berpendapat data yang digunakan baru-baru ini berguna, dan data yang sudah lama tidak digunakan sepatutnya menjadi tidak berguna Apabila memori penuh, data yang ada tidak digunakan untuk masa yang lama akan dipadamkan dahulu Strategi caching Ehcache dalam JVM termasuk LRU - paling kurang digunakan baru-baru ini (paling kurang digunakan baru-baru ini) LFU - paling kurang kerap digunakan (paling jarang digunakan) FIFO - pertama mula-mula keluar, elemen tertua mengikut masa penciptaan (kosongkan data cache tertua, Tidak kisah jika anda kerap menggunakannya) Pembelajaran yang disyorkan: tutorial mysql
Terjemahan Pertanyaan, Keistimewaan Objek
6. Pengoptimum (pengoptimum pertanyaan) Pernyataan SQL akan menggunakan pengoptimum pertanyaan untuk mengoptimumkan pertanyaan sebelum membuat pertanyaan, yang mana adalah untuk mengoptimumkan pelanggan Pelanggan meminta pertanyaan Berdasarkan pernyataan pertanyaan yang diminta oleh klien dan beberapa maklumat statistik dalam pangkalan data, ia dianalisis berdasarkan satu siri algoritma dan strategi optimum diperoleh untuk memberitahu program seterusnya bagaimana untuk. dapatkan keputusan pernyataan pertanyaan Penggunaan strategi "Select-Projection-Join" untuk pertanyaan;
Contohnya: pilih uid,nama daripada pengguna di mana jantina=1;
Pertanyaan ini pernyataan pertama memilih berdasarkan pernyataan berikut di mana, bukannya Mula-mula menanyakan semua jadual dan kemudian melakukan penapisan jantina, dan kemudian melaksanakan unjuran atribut berdasarkan uid dan nama, bukannya mengeluarkan semua atribut dan kemudian menapis, dan akhirnya menyambung kedua-dua ini syarat pertanyaan untuk menjana hasil pertanyaan akhir
Laluan Akses, Statistik
7.Cache dan Buffer (cache pertanyaan)Fungsi utama adalah untuk serahkan klien kepada Pilih pertanyaan kelas Mysql Set hasil yang dikembalikan oleh permintaan dicache dalam memori dan sepadan dengan nilai cincang pertanyaan Selepas sebarang perubahan data berlaku dalam jadual asas data yang diperolehi oleh pertanyaan, MySQL akan secara automatik membatalkan cache pertanyaan Selepas membaca dan menulis, Dalam sistem aplikasi dengan perkadaran yang sangat tinggi, Query Cache boleh meningkatkan prestasi dengan ketara, tetapi sudah tentu ia menggunakan banyak memori.
Jika terdapat hasil pertanyaan hit yang sah dalam cache pertanyaan, pernyataan pertanyaan boleh terus mengambil data daripada cache pertanyaan Mekanisme cache ini terdiri daripada siri cache kecil, seperti cache jadual, cache rekod , dan Cache kunci , cache kebenaran, dsb.
Cache & Penimbal Khusus Global dan Enjin
8 🎜>
Sistem fail, data, indeks log (buat semula, buat asal), log ralat, rekod pertanyaan, pertanyaan perlahan, dsb.
Penubuhan Sambungan TCP——>Sahkan pengguna——> Cipta benang untuk menghuraikan SQL——> Jana pelan pelaksanaan——> Buka jadual——> Penimbal carian untuk melihat sama ada halaman data yang diperlukan dicache——> Imbas daripada Data cakera—— >Dapatkan data dan tulis ke kumpulan penimbal——>Kembalikan data kepada pelanggan——>Tutup jadual——>Tutup benang——>Tutup sambungan
Lapisan atas: Sambungan pelanggan
2. Pengesahan keizinan: Sebelum operasi pertanyaan, modul pengguna perlu dipanggil untuk semakan keizinan untuk mengesahkan sama ada pengguna mempunyai kebenaran Selepas lulus kebenaran, perkhidmatan akan diberikan dan urutan sambungan akan mula menerima dan memproses pernyataan SQL daripada klien
Lapisan kedua: perkhidmatan teras
2. Jika ia adalah pernyataan pertanyaan, anda boleh menyemak dahulu sama ada terdapat hasil dalam cache pertanyaan, dan jika ada keputusan, ia akan dikembalikan terus kepada klien. 3 Jika tiada hasil dalam cache pertanyaan, anda perlu menanyakan lapisan enjin pangkalan data dan menghantar pernyataan SQL kepada pengoptimum untuk mengoptimumkan pertanyaan Jika ia adalah perubahan jadual, klasifikasi diserahkan untuk memasukkan, mengemas kini, memadam, mencipta, memberi amaran modul pemprosesan untuk pemprosesan
Lapisan ketiga: lapisan enjin pangkalan data
2. Periksa dahulu sama ada terdapat data yang sepadan dalam halaman cache Jika ada, ia boleh dikembalikan secara langsung ditemui pada cakera Selepas itu, ia akan dimuatkan ke dalam cache, menjadikan pertanyaan seterusnya lebih cekap Disebabkan oleh cache yang terhad, jadual LRU yang fleksibel sering digunakan untuk menguruskan halaman cache untuk memastikan data yang dicache kerap diakses.
Analisis Soalan Lazim
Atas ialah kandungan terperinci Mari kita bercakap tentang seni bina logik MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!