2017-02-15 52 views
0

只需要更清楚地瞭解RangeShardMappings標記爲離線時發生的情況。Azure彈性比例:MarkMappingOffline不會阻止搜索片段

我知道映射需要設置爲脫機更新和刪除分片和映射。

我想保留映射,但是在任何特定時間阻止Azure映射管理器使用特定映射,我希望只是將它們標記爲脫機將允許我執行此操作,但它似乎對搜索結果沒有影響。

根據MS文檔(https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-scale-shard-map-management

上碎片映射某些操作時的映射 處於「離線」狀態,包括UpdateMapping和DeleteMapping只允許。 映射處於脫機狀態時,基於該映射中包含的密鑰 的數據相關請求將返回錯誤。此外,當 範圍首次脫機時,爲了防止針對針對更改範圍的查詢的不完整結果或不完整結果,將自動終止到受影響分片 的所有連接。

但是,這不是我正在經歷的行爲。離線地圖仍然返回結果集。這些映射是否存儲在緩存中?

回答

1

離線標記映射的主要目的是防止使用OpenConnectionForKey的連接。畢竟,如果映射是不可見的,映射仍然是可見的,那麼你以後就無法在網上標記它。

離線地圖仍然返回結果集。

啊,現在我明白你的問題了。碎片映射管理器不知道或控制數據庫中的基礎數據。這意味着碎片映射可能有責任確保您的查詢where子句包含與您請求的映射相匹配的過濾器。您還可以使用row-level security來確保您的查詢僅返回正確的結果集。

+0

謝謝賈裏德,我沒有使用OpenConnectionForKey,這是有道理的。 – redstubble