Azure-Sql-Database
數據庫大小大於 200GB 時要刪除的 SQL 查詢
我有一個
SQL
用於儲存大量日誌的表。我想要一個儲存過程或類似的東西。只要數據庫大小超過 200GB,它就會每分鐘執行一次,並從日誌表的末尾刪除項目。
所以像:
While(databaseSize > 200GB) { Batch delete 100 entires From [dbo].[logs] OrderBy DateTime }
我該怎麼做呢?
$$ Edit $$ SQL Azure 將我的數據庫大小限制為 250GB。因此,為什麼我需要限制並仍然為其他表保留一個小緩衝區。
在維護計劃中執行這樣的東西,比如每小時
While((select count(*) from From [dbo].[logs]) > 1000000) begin delete top (10000) From [dbo].[logs] OrderBy DateTime end
若要按計劃執行腳本,您需要使用 Azure 自動化服務建構 PowerShell 工作流。Azure 的文件站點在這裡有一個很好的演練。
我還會注意到,此產品的更好版本是“彈性工作”。它將提供更多的控制和功能,更接近 SQL 代理為內部部署所做的工作。他們現在正在為以前的私人開放投票,但你可以從 Mark Vaillancourt 那裡閱讀更多關於此的資訊。
請記住,Azure SQL 數據庫仍然像本地 SQL Server 中的任何其他數據庫一樣具有日誌,因此請確保您的刪除查詢已針對日誌使用進行了優化。它可以確保刪除有效地執行並且不會長時間鎖定表。