Les hints SQL vous permettent de contrôler la couche de stockage analysée par LindormTable lors d'une requête SELECT. Lorsque votre instance Lindorm utilise un stockage hiérarchisé, les données récentes résident dans le stockage chaud et les données plus anciennes sont archivées dans le stockage froid. Limiter l'interrogation au stockage chaud évite la latence plus élevée liée aux analyses du stockage froid. Cette approche est utile pour les charges de travail ne nécessitant que des données récentes, comme les tableaux de bord en temps réel ou les pipelines d'alerte.
Versions applicables
L'utilisation des hints requiert LindormTable 2.3.1 ou une version ultérieure.
Pour vérifier ou mettre à niveau la version de votre LindormTable, consultez les Notes de version de LindormTable ainsi que la procédure de Mise à niveau de la version mineure du moteur d'une instance Lindorm .
Prérequis
Avant de commencer, assurez-vous d'avoir :
Activé le stockage Capacity pour votre instance Lindorm. Consultez la rubrique Activer le stockage Capacity
Fonctionnement
Insérez un commentaire hint (/*+ ... */) immédiatement après le mot-clé SELECT pour indiquer à LindormTable la couche de stockage à lire :
| Hint | Comportement | Cas d'utilisation |
|---|---|---|
/*+ _l_hot_only_ */ |
Lit uniquement le stockage chaud | Requêtes nécessitant des données récentes et devant éviter la latence du stockage froid |
/*+ _l_hot_only_(true) */ |
Lit uniquement le stockage chaud (équivalent au précédent) | Identique au cas précédent ; forme explicite |
/*+ _l_hot_only_(false) */ |
Lit toutes les données — chaudes et froides (équivalent à l'absence de hint) | Lorsqu'il est nécessaire d'accéder à l'historique complet des données |
Les hints ne permettent pas de restreindre les requêtes aux seules données froides. Seuls les modes « stockage chaud uniquement » et « toutes les données » sont pris en charge.
Configurer les données de test
Les exemples ci-dessous s'appuient sur une table dont la rétention des versions est définie à 5. Exécutez les instructions suivantes pour créer la table et insérer des lignes de test avec des horodatages explicites, en utilisant le hint _l_ts_() :
-- Create a test table and set the number of retained versions to 5.
CREATE TABLE t_test_versions_2 (c1 INT , c2 INT, c3 VARCHAR(50), PRIMARY KEY(c1)) WITH(VERSIONS='5');
-- Insert data with explicit timestamps.
UPSERT /*+ _l_ts_(1000) */ INTO t_test_versions_2(c1, c3) VALUES (1, '11');
UPSERT /*+ _l_ts_(2001) */ INTO t_test_versions_2(c1, c3) VALUES (1, '22');
UPSERT /*+ _l_ts_(1000) */ INTO t_test_versions_2(c1, c2) VALUES (1, 1);
UPSERT /*+ _l_ts_(2001) */ INTO t_test_versions_2(c1, c2) VALUES (2, 1);
UPSERT /*+ _l_ts_(2002) */ INTO t_test_versions_2(c1, c2) VALUES (2, 2);
UPSERT /*+ _l_ts_(2003) */ INTO t_test_versions_2(c1, c2) VALUES (2, 3);
UPSERT /*+ _l_ts_(2004) */ INTO t_test_versions_2(c1, c2) VALUES (2, 4);
UPSERT /*+ _l_ts_(2005) */ INTO t_test_versions_2(c1, c2) VALUES (2, 5);
UPSERT /*+ _l_ts_(2006) */ INTO t_test_versions_2(c1, c2) VALUES (2, 6);
Interroger uniquement le stockage chaud
Utilisez _l_hot_only_ ou sa forme équivalente _l_hot_only_(true) pour limiter l'analyse au stockage chaud. Ces deux formes renvoient le même résultat :
SELECT /*+ _l_hot_only_ */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
SELECT /*+ _l_hot_only_(true) */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
Résultat attendu :
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+
Interroger toutes les données
Utilisez _l_hot_only_(false) pour analyser explicitement les stockages chaud et froid. Cette opération produit le même résultat que l'exécution de la requête sans aucun hint :
-- Both statements return the same result.
SELECT /*+ _l_hot_only_(false) */ * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
SELECT * FROM t_test_versions_2 WHERE c1 IN (1, 2, 3);
Résultat attendu :
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+