Rumah > pangkalan data > tutorial mysql > Mari kita bercakap tentang seni bina logik MySQL

Mari kita bercakap tentang seni bina logik MySQL

WBOY
Lepaskan: 2022-03-15 17:36:26
ke hadapan
2111 orang telah melayarinya

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.

Mari kita bercakap tentang seni bina logik MySQL

Pembelajaran yang disyorkan: tutorial pembelajaran mysql

Seni bina logik MySQL (kira-kira seni bina dibahagikan kepada tiga lapisan)

Lapisan pertama: pemprosesan benang sambungan

  • 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.)

Lapisan kedua: Mengandungi kebanyakan mysql. perkhidmatan teras

  • 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

Lapisan ketiga: mengandungi enjin storan

  • 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.

Seni bina logik Mysql - pengenalan terperinci (terbahagi kepada lapan langkah)

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

  • <.>
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 🎜>

Antara muka enjin storan: Ciri paling penting yang membezakan MySQL daripada pangkalan data lain ialah enjin storan jadual pemalamnya.
  • Seni bina enjin storan pemalam MySQL menyediakan satu siri pengurusan standard dan sokongan perkhidmatan Piawaian ini tiada kaitan dengan enjin storan itu sendiri dan mungkin diperlukan untuk setiap sistem pangkalan data, seperti sebagai Penganalisis dan pengoptimum SQL, dsb., manakala enjin storan ialah pelaksanaan struktur fizikal asas. Setiap pembangun enjin storan boleh membangunkan mengikut kehendak mereka sendiri.
  • 9.sistem fail

Sistem fail, data, indeks log (buat semula, buat asal), log ralat, rekod pertanyaan, pertanyaan perlahan, dsb.
  • Nota: Enjin storan adalah berdasarkan jadual, bukan pangkalan data

Aliran kerja pangkalan data

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
  • 1. Pemprosesan sambungan: Pelanggan mewujudkan sambungan TCP dengan lapisan perkhidmatan pangkalan data Modul pengurusan sambungan akan mewujudkan sambungan dan meminta urutan Sambungan . Jika terdapat utas sambungan melahu dalam kumpulan sambungan, ia akan diperuntukkan kepada sambungan ini Jika tidak, utas sambungan baharu akan dibuat untuk bertanggungjawab ke atas pelanggan ini tanpa melebihi bilangan maksimum sambungan
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
  • 1. Selepas benang sambungan menerima SQL penyataan, ia menyerahkan pernyataan kepada modul penghuraian pernyataan SQL untuk analisis sintaks dan semantik.
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
  • 1. Buka meja, jika Dapatkan kunci yang sepadan jika perlu.
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.

4. Akhir sekali, selepas mendapatkan data, kembalikan kepada klien, tutup sambungan dan lepaskan benang sambungan.

Analisis Soalan Lazim

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

  1. LRU - paling kurang digunakan baru-baru ini (paling kurang digunakan baru-baru ini)

  2. LFU - paling kurang kerap digunakan (paling jarang digunakan)

  3. 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

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!

Label berkaitan:
sumber:csdn.net
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan