Azure-Sql-Database

我可以為 Azure SQL DB 中的報告製作一個短暫的只讀快照嗎?

  • July 25, 2021

我有一個負載相當大的 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 數據庫不支持數據庫快照,因此除此之外沒有其他選擇:

  1. 在 SNAPSHOT 事務中執行報告查詢。

或者

  1. 使用 COPY 或時間點還原創建數據庫的一致副本。

您可以使用只讀副本,但它們不會被凍結,因此它們可以接收一些新數據。

https://docs.microsoft.com/en-us/azure/azure-sql/database/read-scale-out

也許您可以使用基於插入/更新日期時間的某種過濾器來解決問題。

引用自:https://dba.stackexchange.com/questions/296114