All Products
Search
Document Center

ApsaraDB RDS:Bagaimana cara mengonfigurasi dan menggunakan fitur query cache ApsaraDB RDS for MySQL?

Last Updated:Aug 27, 2026

Query cache menyimpan set hasil dari pernyataan SELECT di memori sehingga kueri identik dapat melewati parsing dan eksekusi sepenuhnya—hasilnya langsung dikembalikan dari cache. Fitur ini mengurangi pemanfaatan CPU, menurunkan IOPS, dan memperpendek waktu respons kueri untuk workload berat-baca dengan data yang stabil. Namun, pada workload berat-tulis atau pola kueri yang bervariasi, overhead invalidasi cache dapat mengurangi throughput keseluruhan. Oleh karena itu, Anda harus menguji dengan workload aktual sebelum mengaktifkannya di lingkungan produksi.

Kapan menggunakan query cache

Query cache bekerja paling optimal jika semua kondisi berikut terpenuhi:

  • Data tabel jarang berubah atau bersifat statis.

  • Pernyataan SELECT yang sama dijalankan berulang kali.

  • Set hasil kueri berukuran di bawah 1 MB.

Penting

Query cache tidak selalu memberikan manfaat. Untuk workload dengan penulisan tabel yang sering atau kueri yang bervariasi, overhead invalidasi dan pengisian ulang cache dapat mengurangi throughput keseluruhan. Ujilah dengan workload aktual Anda sebelum mengaktifkannya di lingkungan produksi.

Cara kerja

  1. ApsaraDB RDS for MySQL menghitung nilai hash untuk setiap pernyataan SELECT yang diterima dari klien.

  2. Jika hash tersebut cocok dengan entri yang tersimpan di cache, hasilnya langsung dikembalikan—kueri tidak diurai atau dieksekusi.

  3. Jika tidak ada kecocokan, kueri dijalankan secara normal dan hash beserta hasilnya disimpan di cache.

  4. Saat tabel mana pun berubah, semua kueri yang mereferensikan tabel tersebut segera di-invalidasi dan dihapus dari cache.

Batasan

Kueri berikut tidak disimpan di cache:

  • Kueri yang hanya berbeda dalam huruf besar/kecil, spasi putih, konteks database, versi protokol, atau set karakter dianggap sebagai kueri berbeda dan disimpan di cache secara terpisah.

  • Set hasil subquery—hanya set hasil akhir dari outer query yang disimpan di cache.

  • Kueri yang dijalankan di dalam stored function, stored procedure, trigger, atau event.

  • Kueri yang memanggil salah satu fungsi non-deterministik berikut: now(), curdate(), last_insert_id(), atau rand().

  • Kueri yang mereferensikan tabel di database mysql, information_schema, atau performance_schema.

  • Kueri yang mereferensikan temporary tables.

  • Kueri yang menghasilkan warnings.

  • Kueri yang mengandung SELECT … LOCK IN SHARE MODE, SELECT … FOR UPDATE, atau SELECT * FROM … WHERE AUTOINCREMENT_COL IS NULL.

  • Kueri yang mereferensikan variabel user-defined.

  • Kueri yang menggunakan hint SQL_NO_CACHE.

Mengonfigurasi query cache

Atur tiga parameter berikut di Konsol ApsaraDB RDS:

Parameter Default Deskripsi
query_cache_type — Mengontrol apakah cache aktif. 0 = nonaktif; 1 = aktif (kueri yang menggunakan SELECT SQL_NO_CACHE tidak disertakan); 2 = aktif hanya berdasarkan permintaan (hanya kueri SELECT SQL_CACHE yang disimpan di cache).
query_cache_size 3 MB Total memori yang dialokasikan untuk cache, dalam byte. Harus merupakan kelipatan 1024.
query_cache_limit 1 MB Ukuran maksimum set hasil untuk satu kueri yang disimpan di cache, dalam byte. Hasil yang lebih besar dari nilai ini tidak disimpan di cache.

Di panel navigasi sebelah kiri, klik Parameters. Di daftar parameter, temukan query_cache_type dan ubah nilainya sesuai kebutuhan. Perubahan hanya berlaku setelah instans restart. Anda juga dapat mengubah parameter terkait seperti query_cache_limit (nilai valid: 1 hingga 1.048.576) dan query_cache_size (nilai valid: 0 hingga 104.857.600) sesuai kebutuhan. Klik ikon informasi di samping parameter untuk melihat deskripsinya.

Penting

Mengubah query_cache_type memicu restart otomatis pada instans RDS. Jika Anda mengatur query_cache_size ke nilai yang bukan kelipatan 1.024, konsol akan mengembalikan error The specified parameter is invalid, dengan kode kesalahan InvalidParameters.Malformed.

Mengaktifkan dan menonaktifkan cache

Cache diaktifkan saat query_cache_size > 0 dan query_cache_type bernilai 1 atau 2.

Cache dimatikan saat query_cache_size = 0 atau query_cache_type = 0.

Rekomendasi

  • Jangan mengatur query_cache_size terlalu besar. Cache yang terlalu besar tidak hanya mengambil memori dari struktur memori lain pada instans, tetapi juga meningkatkan overhead pencarian cache. Mulailah dengan nilai antara 10 MB hingga 100 MB berdasarkan tipe instans Anda, lalu sesuaikan berdasarkan penggunaan yang diamati.

  • Untuk mengaktifkan atau menonaktifkan query cache, ubah nilai query_cache_size daripada query_cache_type, karena perubahan pada query_cache_type hanya berlaku setelah instans restart.

  • Query cache hanya memberikan manfaat untuk workload tertentu. Lakukan pengujian menyeluruh dengan workload aktual Anda sebelum mengaktifkannya, untuk menghindari degradasi performa atau masalah lainnya.

Memantau dan memverifikasi performa cache

Memeriksa statistik cache

Jalankan pernyataan berikut untuk memeriksa penggunaan cache:

SHOW GLOBAL STATUS LIKE 'Qcache%';

Output mencakup variabel status berikut:

Variabel Deskripsi
Qcache_hits Jumlah kueri yang dilayani dari cache
Qcache_inserts Jumlah kueri yang ditambahkan ke cache
Qcache_not_cached Jumlah kueri yang tidak dapat disimpan di cache
Qcache_queries_in_cache Jumlah kueri yang saat ini tersimpan di cache

Contoh output:

mysql>show global status like 'Qca%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 2763       |
| Qcache_free_memory      | 10115160   |
| Qcache_hits             | 365589713  |
| Qcache_inserts          | 612280336  |
| Qcache_lowmem_prunes    | 1257159    |
| Qcache_not_cached       | 1805250864 |
| Qcache_queries_in_cache | 9318       |
| Qcache_total_blocks     | 22409      |
+-------------------------+------------+

Verifikasi menggunakan Konsol ApsaraDB RDS

Di panel navigasi sebelah kiri, pilih Autonomy Service (formerly CloudDBA) > Performance Trends. Lihat grafik MySQL CPU/Memory Utilization dan pastikan bahwa pemanfaatan CPU maupun memori tetap berada dalam rentang normal.