Use a instrução DELETE para excluir linhas de uma wide table (LindormTable) ou remover séries temporais inteiras que correspondam às condições de filtro de TAG em uma tabela de séries temporais (LindormTSDB).
Engines e versões compatíveis
|
Engine |
Requisito de versão |
|
LindormTable |
Todas as versões |
|
LindormTSDB |
3.4.19 ou posterior para exclusão de timeline |
Para verificar ou atualizar a versão atual, consulte o guia de versões e as instruções de atualização de versão secundária:
Sintaxe
delete_statement ::= DELETE FROM table_identifier
WHERE where_clause
where_clause ::= relation ( AND|OR relation )*
relation ::= column_name operator term
| '(' column_name ( ',' column_name )* ')' operator tuple_literal
operator ::= '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | IS NOT? NULL | LIKE
Especifique as linhas a excluir na cláusula WHERE.
Observações de uso
LindormTable
Funcionamento do DELETE
Após a execução de uma instrução DELETE, o Lindorm grava um marcador de exclusão nos dados de destino em vez de ler os dados previamente. A operação retorna sucesso independentemente da existência real da linha de destino.
Se você gravar dados com UPSERT usando um timestamp futuro como versão, uma instrução DELETE subsequente não removerá fisicamente esses dados, mesmo que a execução seja bem-sucedida. Consulte Gerenciamento de dados multiversão para obter detalhes.
Comportamento por versão
|
Versão |
Exclusão em lote |
Requisito da cláusula WHERE |
|
Anterior à 2.7.5 |
Indisponível |
Todas as colunas de chave primária com condições |
|
2.7.5 ou posterior |
Exclusão em lote desativada (padrão) |
Todas as colunas de chave primária com condições |
|
2.7.5 ou posterior |
Exclusão em lote ativada |
Amplo intervalo de condições de filtro, semelhante ao |
Versões anteriores à 2.8.2.26 aceitam apenas exclusão de linha única. A partir da versão 2.8.2.26, a exclusão em lote está disponível, mas desativada por padrão. Para ativá-la, entre em contato com o suporte técnico do Lindorm.
Erros durante uma operação de DELETE em lote, como timeout, podem causar exclusão parcial dos dados.
LindormTSDB
O comando DELETE em uma tabela de séries temporais remove todos os dados da série temporal correspondente, e não pontos de dados individuais.
Restrições da cláusula WHERE para o LindormTSDB:
As condições de filtro devem aplicar-se exclusivamente a colunas TAG (tipo VARCHAR).
O campo
column_identifierna expressãorelationdeve ser uma coluna VARCHAR (TAG).O
DELETEnão permite excluir registros individuais; ele sempre remove toda a série temporal que atende à condição de filtro de TAG.
Exemplos
Os exemplos a seguir usam esta tabela:
-- Create a table named sensor.
CREATE TABLE sensor (
p1 INTEGER NOT NULL,
p2 INTEGER NOT NULL,
c1 VARCHAR,
c2 VARCHAR,
PRIMARY KEY(p1, p2)
);
-- Insert data into the table.
UPSERT INTO sensor(p1, p2, c1, c2) VALUES (1,1,'a','a'),(2,2,'b','b'),(3,3,'c','c');
Excluir uma única linha
Especifique todas as colunas de chave primária na cláusula WHERE para excluir uma única linha.
DELETE FROM sensor WHERE p1 = 1 AND p2 = 1;
Execute SELECT * FROM sensor; para verificar o resultado:
+------+------+------+------+
| p1 | p2 | c1 | c2 |
+------+------+------+------+
| 2 | 2 | b | b |
| 3 | 3 | c | c |
+------+------+------+------+
Excluir várias linhas (exclusão em lote)
Para ativar a exclusão em lote, consulte Como ativar a exclusão em lote.
Com a exclusão em lote ativada, use uma cláusula WHERE mais abrangente para excluir múltiplas linhas simultaneamente.
DELETE FROM sensor WHERE c1 > 'b' OR p2 > 1;
Execute SELECT * FROM sensor; para confirmar que as linhas esperadas foram excluídas.