Mulai versi V3.1, Hologres mendukung fitur query cache. Fitur ini menyimpan hasil query di memori. Saat sistem menemukan query identik atau serupa di kemudian waktu, hasil agregasi dapat langsung dicocokkan dari memori, menghindari pembacaan ulang data dan overhead komputasi, sehingga meningkatkan performa query. Query cache cocok untuk skenario dengan konkurensi tinggi dan query berulang (seperti uji stres dan laporan BI), serta secara signifikan mengoptimalkan efisiensi query dan mengurangi pemborosan sumber daya.
Perhatian
Fitur query cache hanya didukung di Hologres V3.1 dan versi lebih baru.
nullJika versi instans Anda terlalu lama, upgrade instans atau bergabunglah dengan grup DingTalk Hologres untuk meminta peningkatan instans. Untuk informasi lebih lanjut tentang cara bergabung dengan grup DingTalk online, lihat Dapatkan dukungan online untuk Hologres.
Query cache dinonaktifkan secara default. Anda perlu mengaktifkannya dengan menjalankan pernyataan berikut sebelum dapat menggunakannya:
-- Aktifkan fitur query cache. Hanya Superuser yang dapat menjalankan pernyataan ini. Fitur ini berlaku untuk koneksi baru setelah Anda mengaktifkannya. ALTER DATABASE <database_name> SET hg_experimental_enable_query_cache=on;Hasil query cache memiliki konsistensi lemah. Jika data ditulis selama periode cache, kebenaran hasil tidak dijamin.
Hasil query yang berisi fungsi RANDOM tidak akan disimpan dalam cache.
Gunakan query cache
Memori di Hologres dibagi menjadi tiga bagian: query, cache, dan metadata. Memori cache mencakup sekitar 30% dari total memori instans. Sebagai contoh, jika batas memori pekerja tunggal adalah 64 GB, maka batas memori cache adalah 30%, yaitu sekitar 20 GB. Memori yang digunakan oleh fitur query cache merupakan bagian dari memori cache.
query_cache_percentage untuk mengalokasikan sumber daya memori untuk query cache
Saat menggunakan fitur query cache, Anda harus mengalokasikan sumber daya memori yang sesuai. Jika tidak, fitur query cache tidak dapat dimanfaatkan sepenuhnya.
Memori yang dialokasikan untuk satu pekerja = 20 GB × query_cache_percentage × 0,01
Total memori yang dialokasikan dalam instans = Memori yang dialokasikan untuk satu pekerja × Jumlah pekerja
-- Contoh: Memori yang dialokasikan adalah 400 MB (rumus: 20 GB × query_cache_percentage × 0,01).
SELECT hg_admin_command('set_global_flag', 'query_cache_percentage=2');Tetapkan batas maksimum memori untuk hasil cache tunggal
Batas maksimum memori untuk hasil cache tunggal adalah 10 MB secara default. Anda dapat memodifikasinya menggunakan pernyataan berikut. Batas atasnya adalah 20 GB.
-- Sesuaikan batas maksimum memori untuk hasil cache tunggal (10 MB secara default).
ALTER DATABASE <database_name> SET hg_experimental_query_cache_max_kb_per_item=10240;Sesuaikan waktu kedaluwarsa untuk query cache
Cache di Hologres memiliki kebijakan penghapusan, dengan algoritma termasuk batas memori dan periode retensi. Anda dapat memodifikasi waktu kedaluwarsa menggunakan pernyataan berikut.
Waktu kedaluwarsa default untuk fitur query cache adalah 60 detik.
Unit waktunya adalah detik.
-- Sesuaikan waktu kedaluwarsa, dalam detik. Nilai defaultnya adalah 60 detik.
ALTER DATABASE <database_name> SET hg_experimental_query_cache_expire_time_sec=60;