Manfaat dan skenario
Manfaat:
Penggunaan CPU berkurang.
Penggunaan IOPS berkurang dalam beberapa kasus.
Waktu respons query lebih cepat, serta throughput sistem meningkat.
Skenario:
Data tabel jarang diperbarui atau bersifat statis.
Pernyataan SELECT yang sama sering dieksekusi.
Set hasil query kurang dari 1 MB.
Fitur ini tidak selalu meningkatkan kinerja query. Dalam beberapa situasi, fitur ini justru dapat menurunkan kinerja query. Misalnya, ketika Anda meminta sejumlah besar data tanpa sering menggunakan pernyataan SELECT yang sama, fitur ini dapat menurunkan kinerja query.
Implementasi
ApsaraDB RDS for MySQL menghitung nilai hash dari query SELECT yang dikirim oleh klien. Kemudian, ApsaraDB RDS for MySQL menggunakan nilai hash untuk mendapatkan hasil query dari query cache.
Jika nilai hash sesuai dengan query yang tersimpan di cache, hasil langsung dikembalikan ke klien tanpa menerjemahkan atau mengeksekusi ulang query tersebut.
Jika nilai hash tidak cocok dengan query apa pun di cache, nilai hash beserta hasil terkait akan disimpan di cache untuk penggunaan di masa mendatang.
Jika sebuah tabel berubah, semua query yang merujuk pada tabel tersebut menjadi tidak valid, dan set hasil query terkait dihapus dari cache.
Batasan
Query harus identik. Query dengan huruf besar/kecil berbeda, database berbeda, versi protokol berbeda, atau set karakter berbeda dianggap sebagai query berbeda dan disimpan secara terpisah di cache.
Set hasil subquery tidak disimpan di cache. Hanya set hasil akhir dari query yang disimpan di cache.
Query tidak disimpan di cache jika dieksekusi dalam tubuh fungsi tersimpan, prosedur tersimpan, pemicu, atau event.
Query tidak disimpan di cache jika menggunakan salah satu fungsi berikut: now(), curdate(), last_insert_id(), dan rand().
Query tidak disimpan di cache jika merujuk pada tabel di database mysql, information_schema, atau performance_schema.
Query tidak disimpan di cache jika merujuk pada tabel sementara.
Query tidak disimpan di cache jika memicu peringatan.
Query tidak disimpan di cache jika berisi SELECT … LOCK IN SHARE MODE, SELECT … FOR UPDATE, atau SELECT * FROM … WHERE AUTOINCREMENT_COL IS NULL.
Query tidak disimpan di cache jika merujuk pada variabel kustom.
Query tidak disimpan di cache jika menggunakan HINT - SQL_NO_CACHE.
Pengaturan
Pengaturan Parameter
Bagian ini menjelaskan pengaturan parameter di Konsol ApsaraDB RDS.
query_cache_limit: Menentukan batas maksimum set hasil cache dari query tunggal. Nilai default adalah 1 MB. Set hasil yang melebihi nilai ini tidak disimpan di cache. Unit: byte.
query_cache_size (byte): Menentukan ukuran query cache. Nilai default adalah 3 MB. Unit: byte.
query_cache_type: Menentukan apakah fitur query cache diaktifkan. Nilai yang valid:
0: Menonaktifkan fitur.
1: Mengaktifkan fitur. Query yang dimulai dengan SELECT SQL_NO_CACHE tidak disimpan di cache.
2: Menonaktifkan fitur. Hanya query yang dimulai dengan SELECT SQL_CACHE yang disimpan di cache.

PentingSetelah memodifikasi parameter query_cache_type dari instance RDS, instance RDS akan otomatis di-restart agar modifikasi dapat diterapkan.
Anda harus menetapkan parameter query_cache_size ke bilangan bulat kelipatan 1024. Jika tidak, pesan kesalahan yang menyatakan bahwa the specified parameter is invalid akan ditampilkan.

Fitur Diaktifkan
Jika nilai parameter query_cache_size lebih besar dari 0 dan parameter query_cache_type diatur ke 1 atau 2, fitur query cache diaktifkan.
Fitur Dinonaktifkan
Jika parameter query_cache_size diatur ke 0 atau parameter query_cache_type diatur ke 0, fitur query cache dinonaktifkan.
Saran
Kami menyarankan agar Anda tidak menetapkan parameter query_cache_size ke nilai yang terlalu besar. Cache yang besar mengambil kapasitas memori proses lain dan meningkatkan overhead saat menggunakan fitur query cache. Kami menyarankan agar Anda menetapkan nilai awal parameter ini ke rentang 10 MB hingga 100 MB berdasarkan tipe instance, lalu menyesuaikan nilainya sesuai kebutuhan bisnis Anda.
Anda dapat mengubah nilai parameter query_cache_size untuk mengaktifkan atau menonaktifkan fitur query cache.
Fitur query cache berlaku untuk skenario tertentu. Jalankan tes sebelum mengaktifkannya untuk mencegah gangguan kinerja sistem atau masalah lainnya.
Verifikasi hasil
Konsol ApsaraDB RDS

Pernyataan SQL
Anda dapat mengeksekusi pernyataan berikut untuk memeriksa status penggunaan fitur query cache:
show global status like ‘Qca%’;Qcache_hits: Jumlah hit query cache.
Qcache_inserts: Jumlah query dan hasil query yang ditambahkan ke query cache.
Qcache_not_cached: Jumlah query yang tidak dapat disimpan di cache.
Qcache_queries_in_cache: Jumlah query di query cache.
