


Menguasai Cache Pertanyaan MySQL: Pembolehubah Utama dan Amalan Terbaik untuk Pengoptimuman
Apakah itu Cache Pertanyaan?
Cache Pertanyaan ialah ciri dalam MySQL yang direka untuk meningkatkan prestasi pangkalan data dengan menyimpan cache hasil pertanyaan SELECT. Apabila pertanyaan yang telah dilaksanakan sebelum dijalankan semula, MySQL boleh dengan cepat menarik hasil daripada cache ini dan bukannya melaksanakannya semula terhadap pangkalan data. Ini bukan sahaja mempercepatkan pengambilan data tetapi juga mengurangkan beban pada pangkalan data, menjadikannya sangat cekap untuk pertanyaan yang kerap dijalankan dengan parameter yang konsisten.
Cara Cache Pertanyaan Berfungsi
Setiap kali pertanyaan dikeluarkan, MySQL mula-mula melihat dalam Cache Pertanyaan untuk menyemak sama ada hasil pertanyaan yang sama telah disimpan sebelum ini. Jika terdapat padanan, MySQL memintas proses pelaksanaan pertanyaan biasa dan terus menyediakan hasil cache. Ini lebih pantas kerana ia mengelakkan langkah pemprosesan pertanyaan dan akses cakera yang memakan masa, sebaliknya memanfaatkan kelajuan akses memori.
Kini kita beralih kepada pembolehubah cache pertanyaan kritikal – jenis_cache_query, saiz_cache_query, had_cache_query dan cache_query_size, dan
query_cache_size> dan impaknya pada unit MySQL prestasi.1. jenis_cache_query
Pembolehubah query_cache_type dalam MySQL mengawal sama ada cache pertanyaan didayakan, dilumpuhkan atau ditetapkan untuk beroperasi hanya atas permintaan.
query_cache_type Penggunaan
Cache pertanyaan menyimpan teks pernyataan SELECT bersama hasil yang sepadan yang dihantar kepada klien. Jika kenyataan yang sama diterima kemudian, pelayan mendapatkan semula keputusan daripada cache dan bukannya menghuraikan dan melaksanakan kenyataan itu semula. Mendayakan cache pertanyaan boleh mengurangkan dengan ketara masa yang diperlukan untuk mendapatkan hasil bagi pertanyaan yang kerap dijalankan dengan menyampaikannya daripada memori dan bukannya melaksanakannya semula.
Menetapkan pembolehubah query_cache_type dalam MySQL kepada nilai yang berbeza menentukan cara cache pertanyaan bertindak:
-
0 (MATI)
– Melumpuhkan cache pertanyaan, walaupun penimbal bait query_cache_size masih diperuntukkan. -
1 (HIDUP)
– Mendayakan cache pertanyaan untuk semua pertanyaan PILIH melainkan SQL_NO_CACHE dinyatakan dalam pertanyaan. -
2 (DEMAND)
– Mendayakan cache pertanyaan hanya untuk pertanyaan yang secara eksplisit menggunakan klausa SQL CACHE.
query_cache_type Konfigurasi
Query_cache_type boleh dikonfigurasikan di luar talian atau dalam talian, apabila pelayan sedang berjalan. Konfigurasi mungkin lebih disukai dalam talian, untuk membolehkan ujian. Apabila pelayan dimulakan semula query_cache_type akan kembali.
Konfigurasi Baris Perintah:
mysqld> set global query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Untuk mengesahkan bahawa pembolehubah telah diubah:
mysqld> show global variables like 'query_cache_type'
Fail Konfigurasi:
[mysqld] query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Mulakan semula pelayan MySQL.
query_cache_type Pertimbangan
Mengikut pengesyoran umum, anda harus menetapkan query_cache_type kepada 1 (HIDUP) untuk persekitaran yang data jarang berubah tetapi bacaan kerap. Tetapkan kepada 0 (MATI) dalam persekitaran yang sangat dinamik di mana kos penyelenggaraan cache mungkin melebihi faedahnya.
Mendayakan cache pertanyaan secara sembarangan mungkin tidak selalu menghasilkan manfaat prestasi malah boleh merendahkan prestasi dalam sesetengah senario. Pertimbangkan faktor berikut semasa mengkonfigurasi query_cache_type:
Saiz cache pertanyaan – Cache yang lebih besar boleh menyimpan lebih banyak hasil pertanyaan tetapi memerlukan lebih banyak memori.
Corak pertanyaan – Pertanyaan dengan keputusan yang kerap berubah atau set hasil yang besar mungkin tidak mendapat manfaat daripada caching.
Ketidaksahihan cache – Kemas kini, sisipan atau pemadaman pada jadual cache membatalkan entri cache yang sepadan, yang membawa kepada churn cache.
Concurrency – Cache pertanyaan tidak sesuai untuk beban kerja serentak kerana isu perbalahan.
Versi MySQL – Ciri cache pertanyaan telah ditamatkan dalam MySQL 5.7 dan dialih keluar dalam MySQL 8.0, kerana ia mempunyai had dan boleh menyebabkan perbalahan dalam persekitaran berbilang benang.
2. query_cache_size
Menentukan jumlah memori yang diperuntukkan untuk menyimpan hasil pertanyaan cache. Ini merupakan faktor utama dalam menentukan bilangan hasil yang boleh dicache sekali gus.
query_cache_size Penggunaan
Pembolehubah query_cache_size menentukan jumlah memori yang diperuntukkan untuk cache pertanyaan. Nilai ini harus dilaraskan berdasarkan sifat beban kerja anda dan sumber memori yang tersedia:
Set Hasil Kecil – Jika aplikasi anda kerap melaksanakan pertanyaan yang mengembalikan set hasil kecil, saiz cache pertanyaan yang lebih besar boleh memberi manfaat. Ini membolehkan lebih banyak pertanyaan disimpan dalam cache, mengurangkan keperluan untuk pelaksanaan pertanyaan.
Pertanyaan Identik Kerap – Dalam senario di mana pertanyaan yang sama dilaksanakan berulang kali, meningkatkan query_cache_size boleh meningkatkan prestasi dengan menyimpan cache pertanyaan ini dan keputusannya.
Nisbah Hit Cache Pertanyaan – Memantau nisbah hit cache pertanyaan boleh memberikan cerapan tentang keberkesanan cache. Jika nisbah hit rendah, meningkatkan query_cache_size boleh membantu meningkatkan kecekapan cache.
query_cache_size Konfigurasi
Query_cache_size boleh dikonfigurasikan di luar talian atau dalam talian, apabila pelayan sedang berjalan. Konfigurasi mungkin lebih disukai dalam talian, untuk membolehkan ujian. Apabila pelayan dimulakan semula query_cache_size akan kembali.
Konfigurasi Baris Perintah:
mysqld> set global query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Untuk mengesahkan bahawa pembolehubah telah diubah:
mysqld> show global variables like 'query_cache_type'
Fail Konfigurasi:
[mysqld] query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Mulakan semula pelayan MySQL.
query_cache_size Pertimbangan
Query_cache_size hendaklah ditetapkan berdasarkan memori yang tersedia dan sifat beban kerja anda. Menetapkannya terlalu besar boleh menyebabkan keletihan memori, manakala menetapkannya terlalu kecil boleh mengehadkan keberkesanannya.
Memantau penggunaan cache (hit berbanding sisipan) akan membimbing saiz yang sesuai. Mulakan dengan saiz sederhana, seperti 64MB hingga 128MB, dan laraskan berdasarkan prestasi dan memori sistem yang tersedia.
Pertimbangkan faktor berikut semasa mengkonfigurasi query_cache_size:
Corak pertanyaan – Pertanyaan dengan keputusan yang kerap berubah atau set hasil yang besar mungkin tidak mendapat manfaat daripada caching.
Ketidaksahihan cache – Kemas kini, sisipan atau pemadaman pada jadual cache membatalkan entri cache yang sepadan, yang membawa kepada churn cache.
Concurrency – Cache pertanyaan tidak sesuai untuk beban kerja serentak kerana isu perbalahan.
Versi MySQL – Ciri cache pertanyaan telah ditamatkan dalam MySQL 5.7 dan dialih keluar dalam MySQL 8.0 disebabkan oleh pengehadan dan perbalahan dalam persekitaran berbilang benang.
3. had_cache_query
Pembolehubah ini menetapkan saiz maksimum untuk hasil pertanyaan individu yang boleh dicache. Ia menghalang pertanyaan besar daripada menggunakan jumlah ruang cache yang tidak seimbang.
query_cache_limit Penggunaan
Apabila hasil pertanyaan melebihi had_cache_query, hasilnya tidak dicache. Ini menghalang pertanyaan yang terlalu besar atau intensif sumber daripada mengisi cache dengan hasil yang mungkin tidak kerap digunakan semula. Dengan menetapkan nilai yang sesuai untuk query_cache_limit, anda boleh memastikan bahawa hanya hasil pertanyaan yang lebih kecil dan lebih biasa digunakan dicache, mengoptimumkan penggunaan memori.
Konfigurasi query_cache_limit
Query_cache_limit boleh dikonfigurasikan di luar talian atau dalam talian, apabila pelayan sedang berjalan. Konfigurasi mungkin lebih disukai dalam talian, untuk membolehkan ujian. Apabila pelayan dimulakan semula query_cache_limit akan kembali.
Konfigurasi Baris Perintah:
mysqld> set global query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Untuk mengesahkan bahawa pembolehubah telah diubah:
mysqld> show global variables like 'query_cache_type'
Fail Konfigurasi:
[mysqld] query_cache_type = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Mulakan semula pelayan MySQL.
query_cache_limit Pertimbangan
Lazimnya disyorkan untuk menetapkan query_cache_limit antara 1MB dan 4MB, bergantung pada sifat pertanyaan dan saiz cache yang tersedia. Adalah penting untuk ambil perhatian bahawa menetapkan query_cache_limit terlalu rendah boleh menyebabkan hasil pertanyaan berguna dikecualikan daripada cache, mengurangkan keberkesanan cache pertanyaan.
4. query_cache_min_res_unit
Pembolehubah query_cache_min_res_unit dalam MySQL menentukan saiz minimum dalam bait untuk blok yang diperuntukkan oleh cache pertanyaan. Tetapan ini memberi kesan kepada kecekapan cache pertanyaan dengan mengawal butiran hasil cache.
query_cache_min_res_unit Penggunaan
Apabila hasil pertanyaan disimpan dalam cache pertanyaan, ia menduduki sejumlah memori. Pembolehubah query_cache_min_res_unit mentakrifkan saiz minimum blok memori yang diperuntukkan untuk hasil cache ini. Jika hasil pertanyaan lebih kecil daripada nilai ini, ia masih akan menduduki saiz minimum yang ditentukan oleh query_cache_min_res_unit.
query_cache_min_res_unit Konfigurasi
Query_cache_min_res_unit boleh dikonfigurasikan di luar talian atau dalam talian, apabila pelayan sedang berjalan. Konfigurasi mungkin lebih disukai dalam talian, untuk membolehkan ujian. Apabila pelayan dimulakan semula, query_cache_min_res_unit akan kembali.
Konfigurasi Baris Perintah:
mysqld> set global query_cache_size = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Untuk mengesahkan bahawa pembolehubah telah diubah:
mysqld> show global variables like 'query_cache_size'
Fail Konfigurasi:
[mysqld] query_cache_size = XX
Ganti XX dengan nilai yang sesuai dengan keperluan pangkalan data anda. Mulakan semula pelayan MySQL.
query_cache_min_res_unit Pertimbangan
Mengkonfigurasi query_cache_min_res_unit melibatkan penetapan pembolehubah kepada nilai yang sesuai yang mengimbangi penggunaan memori dengan kecekapan caching. Nilai harus dipilih berdasarkan saiz purata hasil pertanyaan dalam beban kerja anda.
Nilai yang lebih kecil mungkin membawa kepada penggunaan memori yang lebih cekap tetapi boleh meningkatkan overhed disebabkan lebih banyak entri cache.
Sebaliknya, nilai yang lebih besar mungkin mengurangkan bilangan entri cache tetapi boleh menyebabkan memori terbuang untuk hasil pertanyaan yang lebih kecil.
Analisis beban kerja anda untuk menentukan saiz purata hasil pertanyaan. Laraskan nilai query_cache_min_res_unit berdasarkan analisis ini untuk mencapai keseimbangan antara penggunaan memori dan kecekapan caching. Untuk kebanyakan persediaan, ini akan jatuh antara 16MB dan 64MB.
Dayakan dan Penalaan Cache Pertanyaan dalam 4 Langkah
Cache pertanyaan telah ditamatkan pada MySQL 5.7.20 dan dialih keluar sepenuhnya dalam MySQL 8.0. Jika versi MySQL anda masih boleh menggunakan query_cache, ia perlu didayakan kerana ia dilumpuhkan secara lalai. Untuk mendayakan dan mengkonfigurasi cache pertanyaan dalam MySQL, MariaDB atau Percona, anda biasanya perlu mengakses fail my.cnf atau my.ini pelayan anda. Berikut ialah pendekatan langkah demi langkah:
1. Dayakan Cache Pertanyaan – Tetapkan query_cache_type kepada 1 atau 2. Menetapkan query_cache_type atau query_cache_size kepada sifar akan sentiasa melumpuhkan cache. Untuk caching terpilih (disyorkan untuk kebanyakan kes penggunaan), anda akan menggunakan:
mysqld> set global query_cache_type = XX
2. Tetapkan Saiz Cache – Tentukan query_cache_size. Titik permulaan mungkin 10-20% daripada jumlah memori tersedia anda, tetapi ini memerlukan penalaan berdasarkan beban kerja anda:
mysqld> show global variables like 'query_cache_type'
3. Tentukan Had Saiz Keputusan – Konfigurasikan query_cache_limit untuk mengawal saiz hasil yang disimpan. Ini mungkin bermula pada beberapa megabait, bergantung pada saiz pertanyaan biasa anda:
[mysqld] query_cache_type = XX
4. Laraskan Unit Hasil Minimum – Ubah suai query_cache_min_res_unit berdasarkan keperluan anda. Mengurangkan ini di bawah lalai boleh membantu menggunakan ruang cache dengan lebih cekap, terutamanya jika anda menjangkakan banyak pertanyaan kecil:
mysqld> set global query_cache_size = XX
Memantau Cache Pertanyaan dengan Pemeriksaan Kesihatan
QCache Fragmentation ialah penunjuk utama prestasi Query Cache dalam MySQL. Ciri ini dibina untuk menyimpan hasil pertanyaan SELECT supaya permintaan berulang dapat dipenuhi dengan cepat tanpa perlu menjalankan semula pertanyaan, dengan itu meningkatkan prestasi. Walau bagaimanapun, apabila masa berlalu, Cache Pertanyaan boleh menjadi berpecah-belah, membawa kepada pengurangan keberkesanan.
Kira Pecahan QCache
Lihat dokumentasi Pemeriksaan Kesihatan kami yang komprehensif, yang mengandungi maklumat dan arahan langkah demi langkah tentang cara mengira Pecahan QCache.
Setelah anda mengira Pecahan QCache dan QcacheDeleteRate, anda perlu mentafsir keputusan. Sebaik-baiknya, Pecahan QCache hendaklah kurang daripada 10 dan QcacheDeleteRate hendaklah kurang daripada 20.
Tindakan yang Disyorkan
Jika Pecahan QCache tinggi, anda mungkin perlu melaraskan saiz Cache Pertanyaan untuk mengurangkan pemecahan. Jika QcacheDeleteRate adalah tinggi, anda mungkin perlu meningkatkan saiz Query Cache atau mengoptimumkan pertanyaan anda untuk mengurangkan bilangan INSERT.
Optimumkan Cache Pertanyaan Anda dengan Mudah
Menala Cache Pertanyaan MySQL melibatkan pelarasan beberapa tetapan untuk mengoptimumkan prestasi pangkalan data, daripada mengurus penggunaan memori kepada mengurangkan masa pertanyaan. Walaupun pembolehubah yang dibincangkan di sini membentuk asas yang baik, pengurusan yang berkesan memerlukan pemantauan dan kemas kini berterusan berdasarkan beban dan prestasi sistem sebenar.
Untuk memudahkan proses ini, pertimbangkan untuk menggunakan alat pengurusan yang berkuasa seperti Releem yang mengautomasikan pelarasan ini. Alat sedemikian boleh memantau prestasi sistem anda secara berterusan dan mengemas kini tetapan query_cache secara dinamik dalam masa nyata.
Ini memberi anda masa untuk menumpukan pada matlamat yang lebih luas sementara Releem mengendalikan selok-belok pengoptimuman Cache Pertanyaan.
Atas ialah kandungan terperinci Menguasai Cache Pertanyaan MySQL: Pembolehubah Utama dan Amalan Terbaik untuk Pengoptimuman. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Atribut asid termasuk atom, konsistensi, pengasingan dan ketahanan, dan merupakan asas reka bentuk pangkalan data. 1. Atomicity memastikan bahawa urus niaga sama ada berjaya atau gagal sepenuhnya. 2. Konsistensi memastikan pangkalan data tetap konsisten sebelum dan selepas transaksi. 3. Pengasingan memastikan bahawa urus niaga tidak mengganggu satu sama lain. 4. Kegigihan memastikan data disimpan secara kekal selepas penyerahan transaksi.

MySQL bukan sahaja sistem pengurusan pangkalan data (DBMS) tetapi juga berkait rapat dengan bahasa pengaturcaraan. 1) Sebagai DBMS, MySQL digunakan untuk menyimpan, menyusun dan mengambil data, dan mengoptimumkan indeks dapat meningkatkan prestasi pertanyaan. 2) Menggabungkan SQL dengan bahasa pengaturcaraan, tertanam dalam Python, menggunakan alat ORM seperti SQLalChemy dapat memudahkan operasi. 3) Pengoptimuman prestasi termasuk pengindeksan, pertanyaan, caching, perpustakaan dan bahagian meja dan pengurusan transaksi.

MySQL menggunakan arahan SQL untuk menguruskan data. 1. Perintah asas termasuk pilih, masukkan, kemas kini dan padam. 2. Penggunaan lanjutan melibatkan fungsi gabungan, subquery dan agregat. 3. Kesilapan umum termasuk isu sintaks, logik dan prestasi. 4. Petua Pengoptimuman termasuk menggunakan indeks, mengelakkan Pilih* dan menggunakan had.

MySQL adalah sistem pengurusan pangkalan data relasi yang sesuai untuk menyimpan dan menguruskan data. Kelebihannya termasuk pertanyaan berprestasi tinggi, pemprosesan transaksi fleksibel dan jenis data yang kaya. Dalam aplikasi praktikal, MySQL sering digunakan dalam platform e-dagang, rangkaian sosial dan sistem pengurusan kandungan, tetapi perhatian harus dibayar kepada pengoptimuman prestasi, keselamatan data dan skalabilitas.

Hubungan antara SQL dan MySQL adalah hubungan antara bahasa standard dan pelaksanaan khusus. 1. SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data relasi, membolehkan penambahan data, penghapusan, pengubahsuaian dan pertanyaan. 2.MYSQL adalah sistem pengurusan pangkalan data tertentu yang menggunakan SQL sebagai bahasa pengendaliannya dan menyediakan penyimpanan dan pengurusan data yang cekap.

InnoDB menggunakan redolog dan undologs untuk memastikan konsistensi dan kebolehpercayaan data. 1. Pengubahsuaian halaman data rekod untuk memastikan pemulihan kemalangan dan kegigihan transaksi. 2.UNDOLOGS merekodkan nilai data asal dan menyokong penggantian transaksi dan MVCC.

Metrik utama untuk menjelaskan arahan termasuk jenis, kunci, baris, dan tambahan. 1) Jenis mencerminkan jenis akses pertanyaan. Semakin tinggi nilai, semakin tinggi kecekapan, seperti const adalah lebih baik daripada semua. 2) Kunci memaparkan indeks yang digunakan, dan null menunjukkan tiada indeks. 3) Baris menganggarkan bilangan baris yang diimbas, yang mempengaruhi prestasi pertanyaan. 4) Tambahan memberikan maklumat tambahan, seperti menggunakanFilesort meminta bahawa ia perlu dioptimumkan.

MenggunakanTemary menunjukkan bahawa keperluan untuk membuat jadual sementara dalam pertanyaan MySQL, yang biasanya dijumpai di Orderby menggunakan lajur yang berbeza, GroupBy, atau tidak diindeks. Anda boleh mengelakkan berlakunya indeks dan menulis semula pertanyaan dan meningkatkan prestasi pertanyaan. Khususnya, apabila menggunakan pembelian muncul dalam menjelaskan output, ini bermakna MySQL perlu membuat jadual sementara untuk mengendalikan pertanyaan. Ini biasanya berlaku apabila: 1) deduplikasi atau pengelompokan apabila menggunakan yang berbeza atau kumpulan; 2) Susun apabila Orderby mengandungi lajur bukan indeks; 3) Gunakan subquery kompleks atau menyertai operasi. Kaedah Pengoptimuman termasuk: 1) Orderby dan GroupB


Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular