Azure-Sql-Database
我可以為 Azure SQL DB 中的報告製作一個短暫的只讀快照嗎?
我有一個負載相當大的 Azure SQL DB (OLTP),我們稱之為 AppDB。AppDB 在事務上是一致的,但會不斷地向其中寫入新行。現在我需要每 30 分鐘根據 AppDB 狀態填充 ReportingDB。報告人口作業針對 AppDB 執行了幾個中等大的查詢,不幸的是,這些查詢不能包裝在事務中,但仍然必須全部執行在一致的數據上。也就是說,我不能有情況
Query 1 runs
=>new rows inserted into AppDB
=>Query 2 runs
。我所有的查詢都必須以查詢 1 開始時的方式查看數據。我希望我可以使用快照創建一個只讀快照以供報告作業使用。根據描述,這樣的快照的創建應該很快,並且隨後的“寫入時複製”性能命中應該是可控的。快照的生命週期平均不到 10 分鐘。
但是現在看起來 Azure SQL 不支持
CREATE DATABASE ... AS SNAPSHOT OF ...
,它只支持CREATE DATABASE ... AS COPY OF ...
,我預計會慢很多(可能不打算用於報告快照)。在 Azure SQL DB 中創建快速且短暫的只讀快照以進行報告的好方法是什麼?
PS我們已經考慮過複製,但由於政策限制,目前這不是我們的選擇。
Azure SQL 數據庫不支持數據庫快照,因此除此之外沒有其他選擇:
- 在 SNAPSHOT 事務中執行報告查詢。
或者
- 使用 COPY 或時間點還原創建數據庫的一致副本。
您可以使用只讀副本,但它們不會被凍結,因此它們可以接收一些新數據。
https://docs.microsoft.com/en-us/azure/azure-sql/database/read-scale-out
也許您可以使用基於插入/更新日期時間的某種過濾器來解決問題。