Os SQL hints permitem controlar qual camada de armazenamento o LindormTable varre durante uma consulta SELECT. Quando sua instância do Lindorm utiliza armazenamento em camadas, os dados recentes residem no armazenamento quente e os mais antigos são arquivados no armazenamento frio. Consultar apenas o armazenamento quente evita a maior latência das varreduras no armazenamento frio. Esse recurso é útil para cargas de trabalho que precisam somente de dados recentes, como painéis em tempo real ou pipelines de alerta.
Versões aplicáveis
Os hints exigem o LindormTable 2.3.1 ou posterior.
Para verificar ou atualizar a versão do seu LindormTable, consulte Release notes of LindormTable e Upgrade the minor engine version of a Lindorm instance .
Pré-requisitos
Antes de começar, verifique se você tem:
O Capacity storage ativado para sua instância do Lindorm. Consulte Ativar o Capacity storage
Como funciona
Insira um comentário de hint (/*+ ... */) imediatamente após o SELECT para indicar ao LindormTable qual camada de armazenamento ler:
|
Hint |
Comportamento |
Quando usar |
|
|
Lê apenas o armazenamento quente |
Consultas que necessitam de dados recentes e devem evitar a latência do armazenamento frio |
|
|
Lê apenas o armazenamento quente (equivalente ao anterior) |
Mesma situação acima; forma explícita |
|
|
Lê todos os dados — quentes e frios (equivalente a nenhum hint) |
Quando você precisa de dados históricos completos |
Os hints não podem restringir consultas apenas aos dados frios. Há suporte somente para os modos de apenas dados quentes e de todos os dados.
Configurar dados de teste
Os exemplos abaixo utilizam uma tabela com retenção de versões definida como 5. Execute as instruções a seguir para criar a tabela e inserir linhas de teste com carimbos de data/hora explícitos usando o 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);
Consultar apenas o armazenamento quente
Use _l_hot_only_ ou seu equivalente _l_hot_only_(true) para limitar a varredura ao armazenamento quente. Ambas as formas retornam o mesmo resultado:
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);
Saída esperada:
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+
Consultar todos os dados
Use _l_hot_only_(false) para varrer explicitamente tanto o armazenamento quente quanto o frio. Isso produz o mesmo resultado que executar a consulta sem nenhum 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);
Saída esperada:
+----+----+------+
| c1 | c2 | c3 |
+----+----+------+
| 1 | 1 | 22 |
| 2 | 6 | null |
+----+----+------+