Cara mengatur query_cache_size di mysql

Jika Anda perlu mengubah nilainya, misalnya menonaktifkan caching tanpa memulai ulang server MySQL, lalu jalankan

set global query_cache_type=0;

Agar nilainya tidak reset setelah restart server MySQL, buka file konfigurasi di editor teks

Mari kita lihat lebih dekat dalam mendefinisikan query_cache_size MySQL. Di Bobcares, dengan Layanan Dukungan MySQL kami, kami dapat menangani masalah MySQL Anda

Apa itu query_cache_size di MySQL?

Untuk mengambil hasil kueri dengan cepat tanpa harus memulai dari awal, cache kueri MySQL menyimpan hasil kueri dari kueri yang sering dan baru dijalankan. Mereka sangat membantu dalam meningkatkan kinerja basis data dan kecepatan kueri

Monitor MySQL Query Cache oleh Logicmonitor

Bahkan dengan cache kueri yang disetel dengan baik, masih ada sekitar 10% hingga 15% overhead yang diperlukan untuk mempertahankannya. Jadi persentase hit rate cache kueri Anda [[Qcache_hits / [Qcache_hits + Qcache_inserts + Qcache_not_cached]]*100] harus sedekat mungkin dengan 100%. Itu adalah persentase kueri yang dilayani oleh cache alih-alih dieksekusi ulang oleh database berulang kali. Tentu saja, apa pun di bawah 10% atau 20% berarti cache kueri Anda mungkin lebih merusak performa daripada kebaikan. Biasanya, saya akan tetap menonaktifkan cache kueri jika rasio hit di bawah 50% atau… jika rasio prun/pembersihan masih tinggi setelah meningkatkan ukuran cache kueri ke batas aman

 

Rekomendasi ukuran MySQL Query Cache dari Oracle

Jadi sekali lagi, mengapa disarankan agar query_cache_size MySQL tetap kecil?

“Berhati-hatilah saat mengukur cache kueri terlalu besar, yang meningkatkan biaya overhead yang diperlukan untuk memelihara cache, mungkin di luar manfaat mengaktifkannya. Ukuran dalam puluhan megabyte biasanya menguntungkan. Ukuran dalam ratusan megabyte mungkin tidak.

Lihat juga halaman bantuan MariaDB [alternatif pengganti drop-in MySQL].  

Sekarang, karena semua variasi penyiapan MySQL, spesifikasi perangkat keras, dan fakta bahwa basis data berbeda dalam permintaan, jenis kueri, dll., Anda harus mengutak-atik konfigurasi Anda dan menggunakan rekomendasi maks 200 juta sebagai panduan untuk menemukan . Ukuran cache kueri MySQL sebesar 200 megabyte mungkin cepat di satu server dan mulai memperlambat segalanya di server lain. Karena itu, Anda perlu menyelidiki. Siapkan logging kueri lambat dan/atau siapkan logging kueri penuh selama beberapa menit [bergantung pada seberapa sibuk database Anda] dan lihat berapa banyak waktu yang dihabiskan dalam cache kueri

Caching kueri dapat memberikan peningkatan performa yang signifikan jika digunakan dengan benar dan/atau bersama dengan cache Memcached atau Redis. Seperti yang disebutkan, kuncinya adalah, saat Anda mulai menyetel ukuran cache kueri MySQL,  mulai dari yang kecil . Anda harus menyesuaikan “query_cache_limit” karena default 1 megabyte mungkin terlalu besar. Mengizinkan cache Anda terisi terlalu cepat akan membuat banyak cache terpotong. Juga, lihat menyesuaikan parameter penyetelan "query_cache_min_res_unit" untuk memerangi fragmentasi cache. Sering kali Anda tidak dapat menyimpan semua kueri yang dapat di-cache di cache kueri, tetapi Anda tetap dapat memanfaatkannya dengan baik. Tes tes tes.

 

Konfigurasi & Pemantauan Cache Kueri MySQL

Ini konfigurasi cache kueri saya yang digunakan di server lain untuk menghosting blog ini [Server ini juga menghosting beberapa blog WordPress kecil hingga menengah lainnya. Total melayani sekitar 2 juta tampilan halaman per bulan]

Blog ini sekarang dihosting di VPS StackLinux kecilnya sendiri, mesin penyimpanan database adalah InnoDB dan cache kueri telah dinonaktifkan [lihat dua baris konfigurasi di atas untuk menonaktifkan jika diperlukan]

query_cache_type = 1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
query_cache_size = 80M

Untuk memastikan MySQL Query Cache diaktifkan, gunakan

mysql> SHOW VARIABLES LIKE 'have_query_cache';
_

Untuk memantau penggunaan statistik cache kueri

mysql> SHOW STATUS LIKE 'Qcache%';
_

Tidak yakin apa yang harus dilakukan dengan statistik yang dikembalikan? . pl. Skrip ini akan membantu Anda menghindari jebakan performa MySQL yang paling kentara [termasuk ukuran cache kueri] dan membawa Anda ke setidaknya database Anda tidak terkonfigurasi dengan buruk. Lihat juga Alokasi Memori MariaDB [MySQL].

Berikut tangkapan layar tempat saya menggunakan Netdata [tercantum di 100 Pemantauan Server Teratas & Alat Pemantauan Aplikasi] untuk ikhtisar cache kueri…

Apa itu query_cache_size?

query_cache_size mengontrol jumlah total memori yang dialokasikan ke cache kueri . Jika nilainya disetel ke nol, berarti cache kueri dinonaktifkan. Dalam kebanyakan kasus, nilai default dapat diatur ke 16.777.216 [sekitar 16 MB]. Juga, perlu diingat bahwa query_cache_size membutuhkan setidaknya 40KB untuk mengalokasikan strukturnya.

Bagaimana cara mengaktifkan cache kueri MySQL?

Cara Mengaktifkan Cache Kueri MySQL .
Cek ketersediaan. Masuk ke MySQL dan jalankan perintah berikut untuk memeriksa apakah cache kueri MySQL tersedia untuk database Anda. .
Variabel Cache Kueri Default. Cache permintaan MySQL dikendalikan oleh banyak variabel. .
Aktifkan Cache Kueri MySQL. Logout dari MySQL. .
Mulai ulang basis data MySQL

Bagaimana cara mengoptimalkan kueri MySQL?

Mengoptimalkan Kueri Dengan Panduan Pengoptimalan Kueri MySQL .
Hindari menggunakan fungsi dalam predikat. .
Hindari penggunaan wildcard [%] di awal predikat. .
Hindari kolom yang tidak perlu di klausa SELECT. .
Gunakan gabungan dalam, alih-alih gabungan luar jika memungkinkan. .
Gunakan DISTINCT dan UNION hanya jika diperlukan

Bagaimana cara menjalankan kueri MySQL tanpa cache?

Jadi, satu-satunya cara untuk menghentikan aktivitas apa pun di sekitar cache kueri memerlukan memulai ulang MySQL dengan query_cache_type = 0 dan query_cache_size=0 . Menonaktifkannya atau bahkan menyetelnya ke "0" saat runtime tidak sepenuhnya menghentikan aktivitas mutex.

Bài mới nhất

Chủ Đề