[英]Clickhouse 'lightweight deletes' are not filtered from subsequent queries as expected, only filtered once asynchronous call is complete
我正在嘗試新的 clickhouse 輕量級刪除,它會在下一次合並時刪除行,但會立即異步“標記”它們,以便它們不會顯示在后續查詢中。
我正在關注的指南在這里:https://clickhouse.com/docs/en/sql-reference/statements/delete/
但這似乎並沒有按預期發生。 刪除后,大約需要 2-3 分鍾,我返回的查詢才會從結果中排除。 我在這里錯過了什么嗎?
例如
我有一個名為“測試”的 collapsingMergeTree 表,其中包含以下三行:
ID | 名稱 |
---|---|
syGGJVGETbzKMkayoYYaAg | 基倫 |
wFhZdsdjf1xmcHGqK1CQQf | 麥克風 |
abfZrhYkiafg7qr9jAwseG | 彼得 |
我試圖跑
DELETE FROM test WHERE Id = 'syGGJVGETbzKMkayoYYaAg' SETTINGS allow_experimental_lightweight_delete=1;
// OR
SET allow_experimental_lightweight_delete=1;
DELETE FROM test WHERE Id = 'syGGJVGETbzKMkayoYYaAg'
但是,當我運行查詢時,直到大約 5 分鍾后,我仍然在結果中得到已刪除的記錄。
我在本地使用 clickhouse docker 圖像 (clickhouse/clickhouse-server) 進行測試。
在此先感謝您的幫助。
--- 你嘗試了什么 ---
嘗試了文檔代碼,預計結果會立即隱藏並在后台刪除,如頁面所示。
如果我做錯了什么或遺漏了什么,請告訴我
DELETE FROM test
默認是異步的。 不僅是刪除過程,還有DELETE
本身。
你可以使用mutations_sync=2
:
DELETE FROM test
WHERE Id = 'syGGJVGETbzKMkayoYYaAg'
SETTINGS allow_experimental_lightweight_delete=1, mutations_sync=2;
它使您的刪除同步。
(此行為今天已更改 BTW https://github.com/ClickHouse/ClickHouse/pull/44718 )
所以目前你運行DELETE FROM test...
它立即返回控制並且什么都不做。!! 除了它會產生突變。 此突變在后台異步更改不可見列_deleted
匹配 WHERE 條件的行,此過程可能需要幾秒、幾分鍾、幾小時、幾天。 之后您的選擇將看不到這些行。 在那之后最終或永遠不會在合並期間刪除標記的行,這可能需要幾個月的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.