All Products
Search
Document Center

ApsaraDB RDS:ApsaraDB RDS for MySQL query cache

Last Updated:Jun 22, 2026

Manfaat dan catatan penggunaan

Manfaat:

  • Mengurangi pemanfaatan CPU.
  • Mengurangi IOPS dalam skenario tertentu.
  • Mengurangi waktu respons kueri dan meningkatkan throughput sistem.

Catatan penggunaan:

  • Tabel yang jarang dimodifikasi atau berisi data statis.
  • Kueri yang sangat repetitif (pernyataan SELECT).
  • Set hasil berukuran kurang dari 1 MB.
Catatan Query cache tidak selalu meningkatkan performa. Dalam beberapa kasus, seperti beban kerja dengan volume tinggi namun repetisi rendah, mengaktifkan query cache justru dapat menurunkan performa.

Cara kerja

ApsaraDB RDS for MySQL menghitung nilai hash untuk setiap kueri SELECT dari klien. Nilai hash tersebut kemudian digunakan untuk mencari hasil yang sesuai di dalam query cache.

Jika ditemukan kecocokan (hit), set hasil langsung dikembalikan ke klien tanpa perlu mengurai dan mengeksekusi kueri tersebut.

Jika tidak ditemukan kecocokan, kueri dieksekusi, dan nilai hash beserta set hasilnya disimpan di query cache untuk penggunaan di masa mendatang.

Jika data pada tabel mana pun yang terlibat dalam suatu kueri berubah, ApsaraDB RDS for MySQL membatalkan validitas dan menghapus semua set hasil yang terkait dengan tabel tersebut dari cache.

Batasan

  • Kueri harus benar-benar identik agar menghasilkan hit. Perbedaan apa pun dalam kapitalisasi huruf, spasi, database saat ini, versi protokol, atau set karakter dianggap sebagai kueri yang berbeda.
  • Set hasil subkueri tidak di-cache. Hanya set hasil akhir dari outer query yang di-cache.
  • Kueri yang berada di dalam stored function, stored procedure, trigger, atau event tidak di-cache.
  • Kueri yang mengandung fungsi non-deterministik, seperti now(), curdate(), last_insert_id(), dan rand(), tidak di-cache karena hasilnya berubah pada setiap eksekusi.
  • Kueri terhadap tabel di database sistem mysql, information_schema, atau performance_schema tidak di-cache.
  • Kueri yang menggunakan temporary tables tidak di-cache.
  • Kueri yang menghasilkan warning tidak di-cache.
  • Kueri yang mengandung SELECT ... LOCK IN SHARE MODE, SELECT ... FOR UPDATE, atau SELECT * FROM ... WHERE autoincrement_col IS NULL tidak di-cache.
  • Kueri yang menggunakan user-defined variables tidak di-cache.
  • Kueri yang menyertakan hint SQL_NO_CACHE tidak di-cache.

Pengaturan query cache

  • Parameter settings

    Konfigurasikan parameter berikut di Konsol.

    • query_cache_limit (Satuan: byte): Ukuran maksimum set hasil kueri tunggal yang dapat disimpan di query cache. Nilai default adalah 1 MB. Set hasil yang lebih besar dari batas ini tidak di-cache.

    • query_cache_size (Satuan: byte): Ukuran total query cache. Nilai default adalah 3 MB.

    • query_cache_type: Menentukan apakah query cache diaktifkan.

      Nilai 0 menonaktifkan query cache.

      Nilai 1 mengaktifkan query cache untuk semua kueri kecuali yang diawali dengan SELECT SQL_NO_CACHE.

      Nilai 2 hanya mengaktifkan query cache untuk kueri yang diawali dengan SELECT SQL_CACHE.

    Penting
    • Modifikasi parameter query_cache_type memerlukan restart instans secara otomatis.
    • Nilai parameter query_cache_size harus merupakan kelipatan 1024. Jika tidak, pesan "the specified parameter is invalid" akan dikembalikan.
  • Enabled

    Query cache diaktifkan ketika parameter query_cache_size bernilai lebih dari 0 dan parameter query_cache_type diatur ke 1 atau 2.

  • Disabled

    Untuk menonaktifkan query cache, atur parameter query_cache_size ke 0 atau atur parameter query_cache_type ke 0.

  • Recommendations
    • Jangan mengatur parameter query_cache_size ke nilai yang terlalu besar. Cache yang besar tidak hanya mengonsumsi sumber daya memori yang seharusnya dapat digunakan oleh komponen instans lain, tetapi juga meningkatkan overhead pencarian cache. Tetapkan nilai awal antara 10 MB hingga 100 MB berdasarkan spesifikasi instans Anda, lalu sesuaikan berdasarkan penggunaan waktu proses.
    • Aktifkan atau nonaktifkan query cache dengan mengatur nilai parameter query_cache_size. Modifikasi parameter query_cache_type memerlukan restart instans.
    • Query cache hanya cocok untuk kasus penggunaan tertentu. Lakukan pengujian menyeluruh sebelum mengaktifkannya untuk menghindari penurunan performa atau masalah lainnya.

Verifikasi efek

  • Console
  • SQL command

    Jalankan perintah berikut untuk memeriksa status query cache.

    show global status like 'Qca%';
    • Qcache_hits: Jumlah hit query cache.

    • Qcache_inserts: Jumlah kueri yang dimasukkan ke cache.

    • Qcache_not_cached: Jumlah kueri yang tidak dapat di-cache.

    • Qcache_queries_in_cache: Jumlah kueri yang saat ini ada di cache.