Rumah > pangkalan data > tutorial mysql > Seni bina pengoptimuman MySql dan enjin storan (perkongsian ringkasan)

Seni bina pengoptimuman MySql dan enjin storan (perkongsian ringkasan)

WBOY
Lepaskan: 2021-12-29 18:36:08
ke hadapan
1718 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang seni bina mysql dan ringkasan enjin storan saya harap ia akan membantu anda.

Seni bina pengoptimuman MySql dan enjin storan (perkongsian ringkasan)

1. dibahagikan kepada tiga lapisan Jika lapisan lebih terperinci, lapisan enjin storan boleh dibahagikan lagi kepada lapisan enjin dan lapisan storan:

Lapisan sambungan Lapisan atas ialah beberapa perkhidmatan pelanggan dan pautan, termasuk komunikasi stokin tempatan dan kebanyakan komunikasi seperti TCP/IP yang dilaksanakan oleh alatan klien/pelayan. Ia terutamanya melengkapkan beberapa pemprosesan sambungan, pengesahan kebenaran dan penyelesaian keselamatan yang berkaitan. Konsep kumpulan benang diperkenalkan pada lapisan ini untuk menyediakan benang untuk pelanggan yang mengakses dengan selamat melalui pengesahan. Pautan selamat berasaskan SSL juga boleh dilaksanakan pada lapisan ini. Pelayan juga mengesahkan kebenaran pengendalian yang dimilikinya untuk setiap pelanggan yang mengaksesnya dengan selamat.

Lapisan perkhidmatan

Seni bina lapisan kedua terutamanya melengkapkan kebanyakan fungsi perkhidmatan teras, seperti antara muka SQL dan melengkapkan pertanyaan cache, analisis dan pengoptimuman SQL serta beberapa terbina dalam fungsi melaksanakan. Semua fungsi enjin storan silang juga dilaksanakan dalam lapisan ini, seperti prosedur, fungsi, dsb. Pada lapisan ini, pelayan akan menghuraikan pertanyaan dan mencipta pepohon parse dalaman yang sepadan, dan melengkapkan pengoptimuman yang sepadan seperti menentukan susunan pertanyaan jadual, sama ada akan menggunakan indeks, dsb., dan akhirnya menjana operasi pelaksanaan yang sepadan. Jika ia adalah penyataan pilih, pelayan juga akan menanyakan cache dalaman Jika ruang cache cukup besar, ini boleh meningkatkan prestasi sistem dalam persekitaran yang menyelesaikan sejumlah besar operasi baca.

Lapisan enjin

Lapisan enjin storan, enjin storan benar-benar bertanggungjawab untuk penyimpanan dan mendapatkan semula data dalam MySQL Pelayan berkomunikasi dengan enjin storan melalui API. Enjin storan yang berbeza mempunyai fungsi yang berbeza, jadi kita boleh memilih enjin storan yang sesuai mengikut keperluan kita.

Lapisan storan

Lapisan storan data terutamanya menyimpan data pada sistem fail dan melengkapkan interaksi dengan enjin storan. Berbanding dengan pangkalan data lain, MySQL adalah sedikit berbeza seni binanya boleh digunakan dan berfungsi dengan baik dalam banyak senario yang berbeza. Dicerminkan terutamanya dalam enjin storan, seni bina enjin storan pemalam memisahkan pemprosesan pertanyaan daripada tugas sistem lain dan penyimpanan dan pengekstrakan data. Seni bina ini membolehkan pemilihan enjin storan yang sesuai berdasarkan keperluan perniagaan dan keperluan sebenar.

2. Komponen Pelayan MySQL

Setiap lapisan struktur MySQL terdiri daripada satu atau beberapa bahagian:

Komponen lapisan sambungan

Penyambung: antara muka interaktifKomponen interaktif yang disediakan oleh MySQL, seperti java,.net , PHP dan bahasa lain boleh menggunakan komponen ini untuk mengendalikan pernyataan SQL dan merealisasikan interaksi dengan SQL

Komponen lapisan perkhidmatan

Kolam Sambungan : Komponen kolam sambungan

Digunakan untuk mengurus dan menampan sambungan pengguna, pemprosesan benang dan keperluan lain yang memerlukan caching

Perkhidmatan & Utiliti Pengurusan: Perkhidmatan pengurusan dan komponen alat

Digunakan untuk pengurusan sistem dan alat kawalan, seperti sandaran dan pemulihan, replikasi Mysql, pengelompokan, pengurusan keselamatan, dsb.

Antara Muka SQL: Komponen antara muka SQL

Digunakan untuk menerima SQL arahan daripada pengguna , seperti DML, DDL dan prosedur tersimpan, dsb., dan mengembalikan hasil akhir kepada pengguna

Parser: Komponen penganalisis pertanyaan

Apabila arahan SQL dihantar kepada penghurai, ia akan menjadi Pengesahan dan penghuraian, mula-mula menganalisis kesahihan sintaks perintah SQL, dan cuba menguraikan perintah SQL ke dalam struktur data Jika penguraian gagal, ia akan menggesa pernyataan SQL itu tidak munasabah

Optimizer: Komponen Optimizer

Pernyataan SQL akan menggunakan pengoptimum pertanyaan untuk mengoptimumkan pertanyaan sebelum membuat pertanyaan. Contohnya: pilih id,nama daripada pengguna di mana umur = 20;

Pertanyaan pilihan ini mula-mula memilih berdasarkan pernyataan where, bukannya menanyakan semua jadual dahulu dan kemudian menapis mengikut umurPertanyaan pilihan ini mula-mula melaksanakan unjuran atribut berdasarkan id dan nama, bukannya mengeluarkan semua atribut dan kemudian menapis

Sambungkan dua syarat pertanyaan ini untuk menjana hasil pertanyaan akhir

  1. Cache & Buffer: Komponen kumpulan penimbal
  2. Jika cache pertanyaan mempunyai hasil pertanyaan hit, pernyataan pertanyaan boleh terus mengambil data daripada cache pertanyaan. Mekanisme caching ini terdiri daripada satu siri cache kecil. Contohnya, cache jadual, cache rekod, cache kunci, cache kebenaran, dll.

Komponen lapisan enjin

Enjin Storan Boleh Pasang: Enjin storan
Enjin storan ialah pelaksanaan teknologi seperti menyimpan data, mencipta indeks, mengemas kini data pertanyaan, dsb. Enjin storan adalah berasaskan jadual, bukan berasaskan perpustakaan. Jadi enjin penyimpanan juga boleh dipanggil jenis jadual. Penciptaan jadual, storan data, pengambilan semula, kemas kini, dan lain-lain semuanya dilengkapkan oleh enjin storan MySQL, yang juga merupakan peranan penting yang dimainkan oleh enjin storan MySQL dalam MySQL.

MYSQL menyediakan seni bina enjin storan plug-in, jadi pengguna boleh memilih enjin storan yang berbeza untuk jadual data mengikut keperluan yang berbeza Pengguna juga boleh menulis enjin storan mereka sendiri atau menulis enjin storan mengikut keperluan mereka sendiri. Malah jadual yang berbeza dalam perpustakaan menggunakan enjin storan berbeza dibenarkan.

Komponen lapisan storan

Sistem Fail: Sistem fail

digunakan untuk benar-benar menyimpan MySQL Fail pangkalan data dan beberapa fail log, dsb. Yang biasa termasuk Linux, Windows, dll.

3. Enjin storan

Perbezaan dalam enjin storan yang biasa digunakan

Dalam MySQL Sebelum versi 5.5, enjin storan lalai ialah MyISAM, yang disertakan dengan MySQL. Selepas versi 5.5, enjin storan lalai telah ditukar kepada InnoDB, yang dibangunkan oleh syarikat pihak ketiga untuk MySQL. Mengapa menukarnya?

Sebab utamanya ialah InnoDB menyokong transaksi dan kunci peringkat baris, yang lebih sesuai untuk senario dengan keperluan konsisten perniagaan yang tinggi.

Pernyataan penciptaan jadual untuk enjin storan berbeza:

CREATE TABLE `user_innodb` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_myisam` (
  `id` int(11) PRIMARY KEY  AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_memory` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_archive` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=Archive DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_csv` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `gender` tinyint(1) NOT NULL,
  `phone` varchar(11) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8mb4;
Salin selepas log masuk

InnoDB
Enjin storan InnoDB ialah enjin storan lalai MySQL hari ini. Enjin storan InnoDB menyediakan keselamatan transaksi dengan keupayaan pemulihan komit, rollback dan ranap. Walau bagaimanapun, berbanding dengan enjin storan MyISAM, kecekapan pemprosesan tulis InnoDB adalah kurang cekap, dan ia mengambil lebih banyak ruang cakera untuk mengekalkan data dan indeks.

Ciri-ciri enjin storan InnoDB berbeza daripada enjin storan lain:

  1. Kawalan transaksi
  2. Kekangan kunci asing

InnoDB jadual penyimpanan dan Terdapat dua cara untuk mengindeks:

  1. Gunakan storan ruang meja kongsi Struktur jadual jadual yang dibuat dengan cara ini disimpan dalam fail .frm. Data dan indeks disimpan dalam ruang jadual yang ditakrifkan oleh innodb_data_home_dir dan innodb_data_file_path , yang boleh menjadi berbilang fail.
  2. Gunakan storan ruang berbilang jadual Struktur jadual jadual yang dibuat dengan cara ini masih wujud dalam fail .frm, tetapi data dan indeks setiap jadual disimpan secara berasingan dalam .ibd.

InnoDB Persekitaran penggunaan yang sesuai:
InnoDB ialah enjin storan lalai MySQL, digunakan untuk aplikasi pemprosesan transaksi dan menyokong kunci asing. Jika aplikasi mempunyai keperluan yang agak tinggi untuk integriti transaksi dan memerlukan ketekalan data di bawah keadaan serentak, dan operasi data termasuk banyak operasi kemas kini dan pemadaman selain sisipan dan pertanyaan, maka enjin storan InnoDB ialah pilihan yang lebih sesuai.

Selain mengurangkan kunci yang disebabkan oleh pemadaman dan kemas kini secara berkesan, enjin storan InnoDB juga boleh memastikan penyerahan dan pemulangan transaksi yang lengkap, yang sesuai untuk sistem pengebilan atau sistem kewangan yang mempunyai keperluan ketepatan data yang tinggi. InnoDB ialah pilihan yang paling sesuai.

MyISAM
MyISAM tidak menyokong transaksi atau kunci asing Kelebihannya ialah akses pantas, tiada keperluan untuk integriti transaksi atau terutamanya SELECT dan INSERT Pada asasnya mana-mana aplikasi boleh menggunakan enjin ini untuk buat jadual.

mempunyai dua ciri penting berikut:

  • Tidak menyokong transaksi
  • Kaedah storan fail

Setiap MyISAM ada pada cakera Ia disimpan ke dalam 3 fail. Nama fail adalah sama dengan nama jadual, tetapi sambungannya ialah:

  • .frm (definisi jadual storan); Simpan data);
  • .MYI(MYIndeks, indeks storan); Terdapat sangat sedikit operasi kemas kini dan pemadaman, dan keperluan untuk integriti dan keselarasan transaksi tidak begitu tinggi, jadi memilih enjin storan ini sangat sesuai.
  • MEMORY

Enjin storan memori menyimpan data jadual dalam ingatan. Setiap jadual MEMORY sebenarnya sepadan dengan fail cakera dalam format .frm Fail ini hanya menyimpan struktur jadual, dan fail datanya disimpan dalam ingatan Ini sesuai untuk pemprosesan data yang cepat dan meningkatkan kecekapan keseluruhan jadual .

Akses jadual jenis MEMORY sangat pantas kerana datanya disimpan dalam memori dan menggunakan indeks HASH secara lalai Namun, setelah perkhidmatan dimatikan, data dalam jadual akan hilang.

MEMORY Persekitaran penggunaan yang sesuai: Simpan semua data dalam RAM, yang boleh menyediakan beberapa blok akses apabila rekod lokasi pantas dan persekitaran data lain yang serupa diperlukan.

Kelemahan MEMORY ialah terdapat had saiz jadual yang terlalu besar tidak boleh di-cache dalam memori . Data dalam jadual boleh dipulihkan selepas pangkalan data ditamatkan secara tidak normal. Jadual MEMORY biasanya digunakan untuk jadual kecil yang kurang kerap dikemas kini untuk mendapatkan hasil capaian dengan cepat.

MERGE
Enjin storan MERGE ialah gabungan set jadual MyISAM ini mesti mempunyai struktur yang sama. Jadual MERGE tidak boleh menyimpan data ditanya dan dikemas kini, operasi padam, operasi ini sebenarnya dilakukan pada jadual MyISAM dalaman.

Untuk operasi sisipan jadual jenis MERGE, jadual yang disisipkan ditakrifkan melalui klausa INSERT_METHOD, yang boleh mempunyai tiga nilai berbeza Menggunakan nilai FIRST atau LAST menyebabkan operasi sisipan digunakan pada yang pertama atau yang terakhir dengan sewajarnya Pada jadual, jika klausa ini tidak ditakrifkan atau ditakrifkan sebagai TIDAK, ini bermakna operasi sisipan tidak boleh dilakukan pada jadual MERGE ini.

Anda boleh melakukan operasi DROP pada jadual MERGE, tetapi operasi ini hanya memadamkan takrif jadual MERGE dan tidak mempunyai kesan pada jadual dalaman.


MERGE Persekitaran penggunaan yang sesuai:
digunakan untuk menggabungkan secara logik satu siri jadual MyISAM yang setara dan merujuknya sebagai objek.

Kelebihan jadual MERGE ialah ia boleh menembusi had saiz satu jadual MyISAM, dan dengan mengedarkan jadual berbeza pada berbilang cakera, kecekapan capaian jadual MERGE boleh dipertingkatkan dengan berkesan. Ini sangat sesuai untuk persekitaran VLDB seperti pergudangan data.

Pembelajaran yang disyorkan: tutorial video mysql

Atas ialah kandungan terperinci Seni bina pengoptimuman MySql dan enjin storan (perkongsian ringkasan). 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