我有一對設置爲同步AlwaysOn可用性組的SQL Server 2014數據庫。SQL Server中的髒讀AlwaysOn
兩臺服務器都設置爲Synchronous commit
可用性模式,會話超時時間爲50秒。輔助設置爲可讀輔助設備Read-intent only
。
如果我寫入主服務器,然後立即從次服務器讀取(通過ApplicationIntent=ReadOnly
),我一直讀取髒數據(即寫入前的狀態)。如果我在寫作和閱讀之間等待大約一秒鐘,我會得到正確的數據。
這是預期的行爲?如果是這樣,我能做些什麼來確保從中學讀取是最新的?
我想使用輔助節點作爲主節點的只讀版本(以及故障切換),以減少主節點的負載。
可能的更好的交易響應時間和吞吐量對於http:/ /dba.stackexchange.com/ – Liam
這不是「髒讀」,它只是延遲。請閱讀此處:https://blogs.msdn.microsoft.com/sqlserverstorageengine/2011/12/22/alwayson-readable-secondary-and-data-latency/ – dean
請參閱http://dba.stackexchange.com/questions/84420/does-synchronous-commit-availability-mode-ensure-consistency-between-replicas。簡而言之:是的,這是預料之中的,如果您無法容忍*任何延遲,請從小學讀取。你可以想像得出你自己的機制來確保你的閱讀是最新的(帶有觸發器或類似的時間戳表),但在大多數情況下,這會比它的價值更麻煩。在任何情況下,都不要在一個工作負載中盲目混合副本,以期達到同步。 –