


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!

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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Pengimbasan jadual penuh mungkin lebih cepat dalam MySQL daripada menggunakan indeks. Kes -kes tertentu termasuk: 1) jumlah data adalah kecil; 2) apabila pertanyaan mengembalikan sejumlah besar data; 3) Apabila lajur indeks tidak selektif; 4) Apabila pertanyaan kompleks. Dengan menganalisis rancangan pertanyaan, mengoptimumkan indeks, mengelakkan lebih banyak indeks dan tetap mengekalkan jadual, anda boleh membuat pilihan terbaik dalam aplikasi praktikal.

Ya, MySQL boleh dipasang pada Windows 7, dan walaupun Microsoft telah berhenti menyokong Windows 7, MySQL masih serasi dengannya. Walau bagaimanapun, perkara berikut harus diperhatikan semasa proses pemasangan: Muat turun pemasang MySQL untuk Windows. Pilih versi MySQL yang sesuai (komuniti atau perusahaan). Pilih direktori pemasangan yang sesuai dan set aksara semasa proses pemasangan. Tetapkan kata laluan pengguna root dan simpan dengan betul. Sambung ke pangkalan data untuk ujian. Perhatikan isu keserasian dan keselamatan pada Windows 7, dan disyorkan untuk menaik taraf ke sistem operasi yang disokong.

Keupayaan carian teks penuh InnoDB sangat kuat, yang dapat meningkatkan kecekapan pertanyaan pangkalan data dan keupayaan untuk memproses sejumlah besar data teks. 1) InnoDB melaksanakan carian teks penuh melalui pengindeksan terbalik, menyokong pertanyaan carian asas dan maju. 2) Gunakan perlawanan dan terhadap kata kunci untuk mencari, menyokong mod boolean dan carian frasa. 3) Kaedah pengoptimuman termasuk menggunakan teknologi segmentasi perkataan, membina semula indeks dan menyesuaikan saiz cache untuk meningkatkan prestasi dan ketepatan.

Perbezaan antara indeks clustered dan indeks bukan cluster adalah: 1. Klustered Index menyimpan baris data dalam struktur indeks, yang sesuai untuk pertanyaan oleh kunci dan julat utama. 2. Indeks Indeks yang tidak berkumpul indeks nilai utama dan penunjuk kepada baris data, dan sesuai untuk pertanyaan lajur utama bukan utama.

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

MySQL dan Mariadb boleh wujud bersama, tetapi perlu dikonfigurasikan dengan berhati -hati. Kuncinya adalah untuk memperuntukkan nombor port dan direktori data yang berbeza untuk setiap pangkalan data, dan menyesuaikan parameter seperti peruntukan memori dan saiz cache. Konfigurasi sambungan, konfigurasi aplikasi, dan perbezaan versi juga perlu dipertimbangkan dan perlu diuji dengan teliti dan dirancang untuk mengelakkan perangkap. Menjalankan dua pangkalan data secara serentak boleh menyebabkan masalah prestasi dalam situasi di mana sumber terhad.

Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.
