Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Zwischenspeichern von Datenbankabfrageergebnissen
Ein gängiges Muster zur Reduzierung von Latenzen bei Datenbankabfragen ist das Zwischenspeichern von Abfragen. Anwendungen implementieren das Abfrage-Caching, indem sie den Cache nach Ergebnissen abfragen, die mit einer Datenbankabfrage verknüpft sind, und diese Ergebnisse zurückgeben, wenn sie zwischengespeichert sind. Wenn keine zwischengespeicherten Ergebnisse gefunden werden, wird die Abfrage in der Datenbank ausgeführt, die Ergebnisse werden in den Cache gefüllt und die Ergebnisse werden dann an die Anwendung zurückgegeben, die die Abfrage initiiert. Nachfolgende Datenbankabfragen geben dann zwischengespeicherte Ergebnisse zurück, solange sie im Cache verbleiben.
Wann sollte das Zwischenspeichern von Abfragen verwendet werden
Das Abfrage-Caching mit ElastiCache ist für die folgenden Workload-Typen am effektivsten:
-
Read-heavy Anwendungen, bei denen dieselben Abfragen wiederholt mit Daten ausgeführt werden, die sich selten ändern.
-
Teure Abfragen wie nicht indizierte Suchvorgänge, Aggregationen oder Verknüpfungen mit mehreren Tabellen, bei denen die Ausführungszeiten der Abfragen lang sind.
-
High-concurrency Szenarien, in denen das Auslagern von Lesevorgängen die CPU-Auslastung der Datenbank ElastiCache reduziert und der Gesamtdurchsatz verbessert wird.
Das Zwischenspeichern von Abfragen wird nicht für Abfragen empfohlen, bei denen eine hohe Konsistenz erforderlich ist, oder für Abfragen innerhalb von Transaktionen mit mehreren Anweisungen, die Konsistenz beim Lesen nach dem Schreiben erfordern.
Verwendung der AWS Erweiterter JDBC-Wrapper
Wenn Ihre Anwendung einen JDBC-Treiber verwendet, um eine relationale Datenbank abzufragen, können Sie das Abfrage-Caching mit dem Remote Query Cache
So funktioniert das Abfrage-Caching mit dem Plugin
Das Remote Query Cache Plugin erleichtert es Java-Anwendungen, die PostgreSQL-, MySQL- oder MariaDB-Datenbanken abfragen, Abfrageergebnisse automatisch zwischenzuspeichern. ElastiCache Sie konfigurieren das Plugin mit Ihren Cache-Endpunktinformationen und geben mithilfe von Abfragehinweisen an, welche Abfragen in Ihrem Code zwischengespeichert werden sollen. Wenn das Plugin eine angedeutete Abfrage erkennt, gibt es das Abfrageergebnis aus dem Cache zurück, falls vorhanden (ein Cache-Treffer). Wenn sich die Ergebnisse nicht im Cache befinden (ein Cache-Fehler), führt das Plugin die Abfrage in der Datenbank aus, speichert die Ergebnisse im Cache und gibt die Ergebnisse an Ihre Anwendung zurück, sodass die Ergebnisse bei der nächsten Ausführung der Abfrage aus dem Cache bereitgestellt werden können.
Hinweise zwischenspeichern
Sie steuern, welche Abfragen zwischengespeichert werden sollen, indem Sie für jede Abfrage Hinweise festlegen. Sie können Abfragehinweise mit einem Kommentarpräfix direkt auf Abfragezeichenfolgen in Ihrem Anwendungscode anwenden:
/* CACHE_PARAM(ttl=300s) */ SELECT * FROM my_table WHERE id = 42
wo ttl ist die Gültigkeitsdauer in Sekunden. Sie können Abfragehinweise auch in vorbereiteten Anweisungen setzen, indem Sie gängige Frameworks wie Hibernate und Spring Boot verwenden.
Voraussetzungen
Um das Remote Query Cache Plugin in Ihrer Anwendung verwenden zu können, benötigen Sie einen OSS-Cache ElastiCache für Valkey oder Redis (sowohl serverlose als auch knotenbasierte werden unterstützt) sowie die folgenden Abhängigkeiten:
-
AWS Erweiterter JDBC
Wrapper Version 3.3.0 oder höher. -
Apache Commons Pool
Version 2.11.1 oder höher. -
Valkey Glide
Version 2.3.0 oder höher.
Beispiel: Zwischenspeichern einer Abfrage mit dem Plugin
Das folgende Beispiel zeigt, wie das Plugin aktiviert und ein Abfrageergebnis mit einem ElastiCache serverlosen Cache für Valkey für 300 Sekunden (5 Minuten) zwischengespeichert wird:
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(); } }
Wenn diese Abfrage zum ersten Mal ausgeführt wird, wird das Ergebnis aus der Datenbank zurückgegeben und zwischengespeichert. ElastiCache In den nächsten 300 Sekunden werden nachfolgende Ausführungen dieser Abfrage direkt aus dem Cache bereitgestellt.
Zugehörige Ressourcen
Ausführlichere Beispiele und detaillierte Informationen zur Plugin-Konfiguration finden Sie in der Dokumentation zum Remote Query Cache Plugin