Rumah  >  Artikel  >  pangkalan data  >  Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

PHPz
PHPzke hadapan
2023-05-31 16:04:061248semak imbas

Di satu pihak, pengoptimuman pangkalan data adalah untuk mengenal pasti kesesakan sistem dan meningkatkan prestasi keseluruhan pangkalan data MySQL Sebaliknya, ia memerlukan reka bentuk struktur yang munasabah dan pelarasan parameter untuk meningkatkan kelajuan tindak balas pengguna. ia juga perlu untuk menjimatkan sumber sistem sebanyak mungkin supaya pengguna dapat Sistem menyediakan beban yang lebih besar.

1. Gambaran keseluruhan pengoptimuman

Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

2. Pengoptimuman

Pengarang membahagikan pengoptimuman kepada dua kategori, pengoptimuman lembut dan pengoptimuman keras secara amnya melibatkan pengendalian pangkalan data, manakala pengoptimuman keras melibatkan pengendalian perkakasan pelayan dan tetapan parameter 2.1 Pengoptimuman lembut

2.1.1 Pengoptimuman pernyataan pertanyaan

1. Pertama, kita boleh menggunakan perintah EXPLAIN atau DESCRIBE (singkatan: DESC) untuk menganalisis maklumat pelaksanaan pernyataan pertanyaan

2.Contoh:

PILIH DESC * DARI `pengguna`

Paparan:

Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL? Maklumat seperti bilangan indeks dan data bacaan data pertanyaan akan dipaparkan

2.1.2 Mengoptimumkan subkueri

Dalam MySQL, cuba gunakan JOIN dan bukannya subkueri Kerana subkueri memerlukan pertanyaan bersarang, jadual sementara akan dibuat apabila pertanyaan bersarang Penubuhan dan pemadaman jadual sementara akan mempunyai overhed sistem yang besar, manakala pertanyaan gabungan tidak akan Cipta jadual sementara, jadi ia lebih cekap daripada subkueri bersarang.

2.1.3 Menggunakan indeks

Pengindeksan ialah salah satu cara yang paling penting untuk meningkatkan kelajuan pertanyaan pangkalan data Mengenai pengindeksan, anda boleh merujuk artikel pengarang
untuk pengenalan yang lebih terperinci Berikut adalah tiga langkah berjaga-jaga utama untuk menggunakan indeks:

1. Kata kunci LIKE sepadan dengan rentetan bermula dengan '%' dan tidak menggunakan indeks 数据库索引>

2. Kedua-dua medan kata kunci ATAU mesti diindeks sebelum pertanyaan akan menggunakan indeks.

3. Penggunaan indeks berbilang lajur mesti memenuhi padanan paling kiri.

2.1.4 Jadual penguraian

Untuk jadual dengan banyak medan, jika sesetengah medan digunakan kurang kerap, ia harus diasingkan untuk membentuk jadual baharu,
2.1.5 Jadual perantaraan

Untuk jadual yang menanyakan sejumlah besar sambungan, jadual perantaraan boleh dibuat untuk mengurangkan sambungan memakan masa yang disebabkan semasa pertanyaan
2.1.6 Tambah medan berlebihan

Sama seperti membuat jadual perantaraan, menambah redundansi juga adalah untuk mengurangkan pertanyaan sambungan.
2.1.7 Jadual analisis, senarai semak, jadual pengoptimuman

Menganalisis jadual terutamanya menganalisis pengedaran kata kunci dalam jadual, menyemak jadual terutamanya menyemak sama ada terdapat ralat dalam jadual, dan mengoptimumkan jadual terutamanya menghapuskan pembaziran ruang jadual yang disebabkan oleh pemadaman atau kemas kini 1. Jadual analisis: Gunakan kata kunci ANALYZE, seperti pengguna ANALYZE TABLE;

Op: Menunjukkan operasi yang akan dilakukan.Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

  1. Msg_type: Jenis maklumat, termasuk status, maklumat, nota, amaran, ralat.

  2. Msg_text: Paparkan maklumat.

  3. 2. Semak jadual: Gunakan kata kunci CHECK, seperti pengguna CHECK TABLE [pilihan]
pilihan hanya sah untuk MyISAM, dengan jumlah lima nilai parameter:
CEPAT: Jangan imbas talian, jangan semak sambungan yang tidak baik CEPAT: Hanya semak jadual yang tidak ditutup dengan betul.

  1. DIUBAH: Hanya semak jadual yang telah diubah sejak semakan terakhir dan jadual yang tidak ditutup dengan betul MEDIUM: Imbas baris untuk mengesahkan bahawa sambungan yang dipadamkan adalah sah, dan juga boleh mengira jumlah semak kata kunci untuk setiap baris

  2. DILANJUTKAN: Semakan paling komprehensif, carian komprehensif bagi kata kunci dalam setiap baris.

  3. 3. Optimumkan jadual: gunakan kata kunci OPTIMIZE, seperti OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] pengguna JADUAL;
  4. LOCAL|NO_WRITE_TO_BINLOG bermakna tidak menulis pada jadual Dioptimumkan hanya sah untuk VARCHAR, BLOB dan TEXT boleh dihapuskan melalui pernyataan OPTIMIZE TABLE dan kunci baca sahaja akan ditambahkan semasa pelaksanaan > 2.2 Pengoptimuman keras

    2.2.1 Set perkakasan tiga keping
  5. 1. Konfigurasikan CPU berbilang teras dan frekuensi tinggi boleh melaksanakan berbilang urutan.

  6. 2. Konfigurasikan memori yang besar dan tingkatkan memori untuk meningkatkan kapasiti cache, dengan itu mengurangkan masa I/O cakera dan meningkatkan kelajuan tindak balas
3. Konfigurasikan cakera berkelajuan tinggi atau mengedarkan cakera secara munasabah: cakera berkelajuan tinggi meningkatkan I/O, dan cakera yang diedarkan boleh meningkatkan keupayaan operasi selari.
2.2.2 Optimumkan parameter pangkalan data

Mengoptimumkan parameter pangkalan data boleh meningkatkan penggunaan sumber dan dengan itu meningkatkan prestasi pelayan MySQL Parameter konfigurasi perkhidmatan MySQL semuanya dalam my.cnf atau my.ini >

key_buffer_size: saiz penimbal indeks

table_cache: Bilangan jadual yang boleh dibuka serentak


query_cache_size dan query_cache_type: Yang pertama ialah saiz penimbal pertanyaan, yang kedua ialah suis parameter sebelumnya, 0 bermaksud tidak menggunakan penimbal, 1 bermaksud menggunakan penimbal, tetapi boleh digunakan dalam pertanyaan SQL_NO_CACHE bermaksud tidak menggunakan penimbal, 2 bermakna dalam pertanyaan Jelas menunjukkan bahawa penimbal harus digunakan hanya apabila menggunakan penimbal, iaitu, SQL_CACHE.

sort_buffer_size: jenis penimbal

2.2.3 Sub-pangkalan data dan sub-jadual

Oleh kerana pangkalan data berada di bawah tekanan yang terlalu tinggi, masalah pertama ialah prestasi sistem mungkin berkurangan semasa tempoh puncak, kerana beban pangkalan data yang berlebihan akan memberi kesan kepada prestasi. Satu lagi, apakah yang perlu anda lakukan jika pangkalan data anda ranap kerana tekanan yang berlebihan? Jadi pada masa ini, anda mesti membahagikan sistem kepada pangkalan data dan jadual + pemisahan baca-tulis, iaitu, pecahkan pangkalan data kepada berbilang pangkalan data, gunakannya pada pelbagai perkhidmatan pangkalan data, dan kemudian berfungsi sebagai pangkalan data utama untuk mengendalikan permintaan tulis. Kemudian setiap perpustakaan induk memasang sekurang-kurangnya satu perpustakaan hamba, dan perpustakaan hamba mengendalikan permintaan baca.

Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

2.2.4 Kelompok cache

Jika bilangan pengguna bertambah, anda boleh terus menambah mesin Contohnya, jika anda terus menambah mesin pada peringkat sistem, anda boleh mengendalikan permintaan serentak yang lebih tinggi. Kemudian, jika konkurensi tulis pada peringkat pangkalan data menjadi lebih tinggi dan lebih tinggi, pelayan pangkalan data akan diperluaskan dan mesin akan diperluaskan melalui sub-pangkalan data dan pembahagian jadual Jika konkurensi baca pada peringkat pangkalan data menjadi lebih tinggi dan lebih tinggi, kapasiti akan diperluaskan dan lebih banyak pangkalan data hamba akan ditambah. Tetapi terdapat masalah besar di sini: pangkalan data itu sendiri sebenarnya tidak digunakan untuk membawa permintaan serentak yang tinggi, jadi secara amnya, konkurensi yang dibawa oleh mesin pangkalan data tunggal sesaat adalah dalam susunan beribu-ribu, dan mesin yang digunakan oleh pangkalan data adalah konfigurasi yang agak tinggi, mesin yang agak mahal, kosnya sangat tinggi. Jika anda terus menambah mesin, ia sebenarnya salah. Oleh itu, cache biasanya disertakan dalam seni bina konkurensi tinggi Sistem cache direka untuk membawa konkurensi tinggi. Oleh itu, jumlah konkurensi yang dibawa oleh satu mesin adalah puluhan ribu, atau bahkan ratusan ribu sesaat, dan kapasiti bawaan konkurensi tinggi adalah satu hingga dua pesanan magnitud lebih tinggi daripada sistem pangkalan data. Oleh itu, anda boleh memperkenalkan gugusan cache sepenuhnya mengikut ciri perniagaan sistem untuk permintaan yang memerlukan kurang penulisan dan lebih banyak bacaan. Khususnya, apabila menulis ke pangkalan data, salinan data ditulis ke gugusan cache pada masa yang sama, dan kemudian gugusan cache digunakan untuk membawa kebanyakan permintaan baca. Dalam kes ini, melalui pengelompokan cache, sumber mesin yang lebih sedikit boleh digunakan untuk mengehoskan konkurensi yang lebih tinggi.

Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?

Atas ialah kandungan terperinci Apakah pengetahuan tentang pengoptimuman pangkalan data MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam