虛刪除概觀

適用於: ✅Azure 數據總管

支援刪除個別記錄的功能。 記錄刪除通常是使用下列其中一種方法來達成:

  • 若要刪除具有系統保證包含這些記錄的記憶體成品也會刪除記錄,請使用 .purge
  • 若要刪除沒有這類保證的記錄,請使用 .delete 本文中所述的 - 此命令會將記錄標示為已刪除,但不一定會從記憶體成品中刪除數據。 這個刪除方法比清除更快。

如需如何使用 命令的資訊,請參閱 語法

使用案例

這個刪除方法應該只用於個別記錄的未計劃刪除。 例如,如果您發現IoT裝置回報損毀的遙測數據一段時間,您應該考慮使用此方法來刪除損毀的數據。

如果您需要經常刪除重複資料刪除或更新的記錄,建議您使用 具體化檢視。 如需重複數據刪除,請參閱具體化檢視與虛刪除之間的選擇。

刪除處理序

虛刪除程式是使用下列步驟執行:

  1. 執行述詞查詢:系統會掃描數據表,以識別包含要刪除之記錄的數據範圍。 所識別的範圍是述詞查詢所傳回的一或多個記錄。
  2. 範圍取代:已識別的範圍會取代為指向原始數據 Blob 的新範圍,並具有類型的 bool 新隱藏數據行,指出是否刪除每筆記錄。 完成後,如果未內嵌任何新數據,述詞查詢將不會傳回任何記錄,如果再次執行。

限制與考量

  • 刪除程式是最終且無法復原的。 即使記憶體成品不一定在作業之後刪除,也無法復原此程式或復原已刪除的數據。

  • 原生數據表和具體化檢視支援虛刪除。 外部數據表不支援它。

  • 在執行虛刪除之前,請執行查詢並檢查結果是否符合預期的結果,以確認述詞。 您也可以在 模式中 whatif 執行 命令,以傳回預期要刪除的記錄數目。

  • 請勿在同一個數據表上執行多個平行虛刪除作業,因為這可能會造成部分或所有命令失敗。 不過,可以在不同的數據表上執行多個平行虛刪除作業。

  • 請勿以平行方式在相同數據表上執行虛刪除和清除命令。 先等候一個命令完成,然後才執行另一個命令。

  • 虛刪除會針對您的叢集 URI 執行: https://[YourClusterName].[region].kusto.windows.net。 此命令需要 相關資料庫的資料庫管理員 許可權。

  • 從具體化檢視數據表中刪除記錄,可能會對具體化檢視造成影響。 如果具體化週期尚未處理刪除的記錄,這些記錄將會在檢視中遺失,因為它們永遠不會處理。 同樣地,如果已處理記錄,刪除將不會影響具體化檢視。

  • 述詞的限制:

    • 它必須包含至少一個 where 運算符。
    • 它只能參考要刪除記錄的數據表。
    • 只允許下列運算子:extendorderprojecttakewhere。 在內 toscalar()summarize 也允許 運算符。

刪除效能

可能會影響 刪除程式 效能的主要考慮包括:

  • 執行述詞查詢:此步驟的效能與述詞本身的效能非常類似。 視述詞而定,它可能會稍微快或變慢,但差異預期微不足道。
  • 範圍取代:此步驟的效能取決於下列各項:
    • 記錄叢集中數據範圍的分佈
    • 叢集中的節點數目

不同於 .purge.delete 命令不會重新擷取數據。 它只會將述詞查詢所傳回的記錄標示為已刪除,因此會更快。

刪除後的查詢效能

在刪除記錄之後,查詢效能不會明顯變更。

效能降低並非預期,因為篩選出已刪除記錄的所有查詢上自動新增的篩選是有效率的。

不過,查詢效能也不保證會改善。 雖然某些類型的查詢可能會發生效能改善,但某些查詢可能不會發生。 為了改善查詢效能,刪除大部分記錄的範圍會定期壓縮,方法是將它們取代為只包含尚未刪除之記錄的新範圍。

對 COGS 的影響 (銷售的商品成本)

在大部分情況下,刪除記錄不會產生COGS的變更。

  • 不會減少,因為實際上不會刪除任何記錄。 記錄只會使用 類型的 bool隱藏數據行標示為已刪除,其大小是可忽略的。
  • 在大部分情況下,不會增加,因為 .delete 作業不需要布建額外的資源。
  • 在某些情況下,刪除大部分記錄的範圍會定期壓縮,方法是將它們取代為只包含尚未刪除之記錄的新範圍。 這會導致刪除包含大量已刪除記錄的舊記憶體成品。 新的範圍較小,因此在記憶體帳戶和經常性快取中耗用較少的空間。 不過,在大多數情況下,這對 COGS 的影響是微不足道的。