Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Caching hasil kueri database
Pola umum untuk mengurangi latensi kueri database adalah query caching. Aplikasi menerapkan query caching dengan query cache untuk hasil yang terkait dengan query database, mengembalikan hasil tersebut jika mereka di-cache. Jika tidak ada hasil cache yang ditemukan, kueri dijalankan pada database, hasilnya diisi dalam cache, dan hasilnya kemudian dikembalikan ke aplikasi yang memulai kueri. Kueri database berikutnya kemudian akan mengembalikan hasil cache selama mereka tetap dalam cache.
Kapan menggunakan cache kueri
Caching kueri dengan ElastiCache paling efektif untuk jenis beban kerja berikut:
-
Read-heavy aplikasi di mana kueri yang sama dijalankan berulang kali dengan data yang jarang berubah.
-
Kueri mahal seperti pencarian yang tidak diindeks, agregasi, atau gabungan multi-tabel di mana waktu eksekusi kueri lama.
-
High-concurrency skenario di mana pembongkaran membaca untuk ElastiCache mengurangi tekanan CPU database dan meningkatkan throughput keseluruhan.
Caching kueri tidak disarankan untuk kueri di mana konsistensi yang kuat diperlukan, atau untuk kueri di dalam transaksi multi-pernyataan yang memerlukan konsistensi baca-setelah-tulis.
Menggunakan AWS Pembungkus JDBC Tingkat Lanjut
Jika aplikasi Anda menggunakan driver JDBC untuk query database relasional, Anda dapat menerapkan query caching dengan Remote Query Cache Plugin
Bagaimana query caching bekerja dengan plugin
Plugin Cache Kueri Jarak Jauh memudahkan aplikasi Java yang menanyakan database PostgreSQL, MySQL, atau MariaDB untuk secara otomatis menyimpan hasil kueri di cache. ElastiCache Anda mengonfigurasi plugin dengan informasi titik akhir cache Anda dan menunjukkan kueri mana dalam kode Anda untuk di-cache menggunakan petunjuk kueri. Ketika plugin mendeteksi kueri yang diisyaratkan, ia mengembalikan hasil kueri dari cache jika ada (cache hit). Jika hasilnya tidak dalam cache (cache hilang), plugin mengeksekusi kueri pada database, menyimpan hasil dalam cache, dan mengembalikan hasilnya ke aplikasi Anda sehingga saat berikutnya kueri dijalankan hasilnya dapat disajikan dari cache.
Petunjuk caching
Anda mengontrol kueri mana yang akan di-cache dengan menyetel petunjuk pada setiap kueri. Anda dapat menerapkan petunjuk kueri langsung ke string kueri dalam kode aplikasi Anda dengan awalan komentar:
/* CACHE_PARAM(ttl=300s) */ SELECT * FROM my_table WHERE id = 42
di mana ttl waktu-untuk-hidup dalam hitungan detik. Anda juga dapat mengatur petunjuk kueri dalam pernyataan yang disiapkan menggunakan kerangka kerja umum seperti Hibernate dan Spring Boot.
Prasyarat
Untuk menggunakan Plugin Cache Kueri Jarak Jauh dalam aplikasi Anda, Anda memerlukan cache ElastiCache untuk Valkey atau Redis OSS (baik Serverless dan berbasis node didukung) bersama dengan dependensi berikut:
-
AWS Advanced JDBC Wrapper
versi 3.3.0 atau yang lebih baru. -
Apache Commons Pool
versi 2.11.1 atau yang lebih baru. -
Valkey Glide
versi 2.3.0 atau yang lebih baru.
Contoh: Caching kueri dengan plugin
Contoh berikut menunjukkan cara mengaktifkan plugin dan cache hasil kueri selama 300 detik (5 menit) dengan cache tanpa server ElastiCache untuk Valkey:
import java.sql.*; import java.util.Properties; public class QueryCacheExample { public static void main(String[] args) throws SQLException { Properties props = new Properties(); props.setProperty("user", "myuser"); props.setProperty("password", "mypassword"); // Enable the remote query cache plugin props.setProperty("wrapperPlugins", "remoteQueryCache"); // Point to your ElastiCache endpoint props.setProperty("cacheEndpointAddrRw", "my-cache.serverless.use1.cache.amazonaws.com:6379"); Connection conn = DriverManager.getConnection( "jdbc:aws-wrapper:postgresql://my-database.cluster-abc123.us-east-1.rds.amazonaws.com:5432/mydb", props ); Statement stmt = conn.createStatement(); // The SQL comment hint tells the plugin to cache this query for 300 seconds ResultSet rs = stmt.executeQuery( "/* CACHE_PARAM(ttl=300s) */ SELECT product_name, price FROM products WHERE category = 'electronics'" ); while (rs.next()) { System.out.println(rs.getString("product_name") + ": $" + rs.getBigDecimal("price")); } rs.close(); stmt.close(); conn.close(); } }
Pertama kali kueri ini berjalan, hasilnya dikembalikan dari database dan di-cache. ElastiCache Selama 300 detik berikutnya, eksekusi berikutnya dari kueri tersebut disajikan langsung dari cache.
Sumber daya terkait
Anda dapat menemukan contoh yang lebih luas dan informasi rinci tentang konfigurasi plugin dalam dokumentasi Plugin Cache Kueri Jarak Jauh