DELETE 文を使用して、ワイドテーブル (LindormTable) から行を削除したり、時系列テーブル (LindormTSDB) から TAG フィルター条件に一致する時系列全体を削除したりします。
対象エンジンとバージョン
エンジン | バージョン要件 |
LindormTable | すべてのバージョン |
LindormTSDB | 時系列の削除は、バージョン 3.4.19 以降でサポート |
現在のバージョンを確認またはアップグレードするには、バージョンガイドとマイナーバージョンのアップデート手順をご参照ください。
LindormTable :LindormTable バージョンガイド | Lindorm インスタンスのマイナーエンジンバージョンのアップグレード
LindormTSDB :バージョンガイド | Lindorm インスタンスのマイナーエンジンバージョンのアップグレード
構文
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削除する行は WHERE 句を使用して指定します。
注意事項
LindormTable
DELETE の仕組み
DELETE 文が実行されると、Lindorm は最初にデータを読み取るのではなく、対象データに削除マーカーを書き込みます。この操作は、対象の行が実際に存在するかどうかに関係なく成功したと報告します。
アップサートを使用して、将来のタイムスタンプをデータバージョンとしてデータを書き込んだ場合、そのデータに対する後続の DELETE が成功しても、データは物理的に削除されません。詳細については、「多バージョンデータ管理」をご参照ください。
バージョンに基づく動作
バージョン | バッチ削除 | WHERE 句の要件 |
2.8.2.26 より前 | 利用不可 | すべてのプライマリキーカラムに |
2.8.2.26 以降 | バッチ削除が無効 (デフォルト) | すべてのプライマリキーカラムに |
2.8.2.26 以降 | バッチ削除が有効 |
|
2.8.2.26 より前のバージョンでは、単一行の削除のみがサポートされています。2.8.2.26 以降、バッチ削除が利用可能になりましたが、デフォルトでは無効になっています。有効にするには、Lindorm のテクニカルサポートにお問い合わせください。
バッチ DELETE 操作中にタイムアウトなどのエラーが発生した場合、データが部分的に削除される可能性があります。
LindormTSDB
時系列テーブルでは、DELETE は個々のデータポイントではなく、一致する時系列内のすべてのデータを削除します。
LindormTSDB の WHERE 句の制約:
フィルター条件は、TAG カラム (VARCHAR 型) のみを対象とします。
relation式のcolumn_nameは、VARCHAR (TAG) カラムでなければなりません。DELETEは個々のデータレコードを対象にできず、TAG フィルター条件を満たす時系列全体を常に削除します。
例
次の例では、このテーブルを使用します。
-- sensor テーブルを作成します。
CREATE TABLE sensor (
p1 INTEGER NOT NULL,
p2 INTEGER NOT NULL,
c1 VARCHAR,
c2 VARCHAR,
PRIMARY KEY(p1, p2)
);
-- テーブルにデータを挿入します。
UPSERT INTO sensor(p1, p2, c1, c2) VALUES (1,1,'a','a'),(2,2,'b','b'),(3,3,'c','c');単一行の削除
単一行を削除するには、WHERE 句ですべてのプライマリキーカラムを指定します。
DELETE FROM sensor WHERE p1 = 1 AND p2 = 1;SELECT * FROM sensor; を実行して結果を確認します。
+------+------+------+------+
| p1 | p2 | c1 | c2 |
+------+------+------+------+
| 2 | 2 | b | b |
| 3 | 3 | c | c |
+------+------+------+------+複数行の削除 (バッチ削除)
バッチ削除を有効にする方法については、バッチ削除を有効にする方法をご参照ください。
バッチ削除が有効な場合、より広範な WHERE 句を使用して一度に複数行を削除できます。
DELETE FROM sensor WHERE c1 > 'b' OR p2 > 1;SELECT * FROM sensor; を実行して、対象の行が削除されたことを確認します。