Azure Analysis Services 擴充

透過向外延展,客戶端查詢可以在查詢集區中的多個查詢複本之間散發,以減少高查詢工作負載期間的回應時間。 您也可以將處理與查詢集區分開,確保客戶端查詢不會受到處理作業的負面影響。 您可以在 Azure 入口網站 或使用 Analysis Services REST API 來設定向外延展。

標準定價層中的伺服器可以使用擴充。 每個查詢複本會以您伺服器的相同費率計費。 所有查詢複本都會建立在與伺服器相同的區域內。 您可以設定的查詢複本數目受限於您伺服器所在的區域。 若要深入瞭解,請參閱 依區域的可用性。 向外延展不會增加伺服器的可用記憶體數量。 若要增加記憶體則需升級方案。

為什麼要向外延展?

在一般伺服器部署中,一部伺服器同時作為處理伺服器和查詢伺服器。 如果伺服器上針對模型的用戶端查詢數目超過您伺服器計劃的查詢處理單位 (QPU),或模型處理會與高查詢工作負載同時發生,效能可能會降低。

透過向外延展,您可以建立最多七個查詢複本資源的查詢集區(總計八個,包括主伺服器)。 您可以調整查詢集區中的複本數目,以符合關鍵時刻的 QPU 需求,並且可以隨時將處理伺服器與查詢集區分開。

不論您在查詢集區中擁有的查詢複本數目為何,處理工作負載都不會分散在查詢複本之間。 主伺服器做為處理伺服器。 查詢複本只會針對在主伺服器與查詢集區中每個複本之間同步處理的模型資料庫提供查詢。

相應放大時,最多可能需要五分鐘的時間,新的查詢複本才能累加新增至查詢集區。 當所有新的查詢複本都啟動並執行時,新的用戶端聯機會跨查詢集區中的資源進行負載平衡。 現有的用戶端連線不會從目前連線的資源變更。 當您相應縮小時,任何從查詢集區中移除之查詢集區資源的現有用戶端連線都會終止。 用戶端可以重新連線到剩餘的查詢集區資源。

運作方式

當您第一次設定向外延展時,主伺服器上的模型資料庫會自動與新查詢集區中的新複本同步處理。 自動同步處理只會發生一次。 在自動同步處理期間,主伺服器數據檔(Blob 記憶體中的待用加密)會複製到第二個位置,也會在 Blob 記憶體中加密待用數據檔。 然後 ,查詢集區中的複本會與第二組檔案中的數據凍結

雖然只有在您第一次向外延展伺服器時,才會執行自動同步處理,但您也可以執行手動同步處理。 同步處理可確保查詢集區中複本上的數據符合主伺服器的數據。 在主伺服器上處理 (refresh) 模型時,必須在處理作業完成之後執行同步處理。 此同步處理會將更新的數據從 Blob 記憶體中的主伺服器檔案複製到第二組檔案。 然後,查詢集區中的複本會與 Blob 記憶體中第二組檔案的更新數據凍結。

例如,當您執行後續的向外延展作業時,將查詢集區中的複本數目從兩個增加到五個,新的複本會與 Blob 記憶體中第二組檔案中的數據凍結。 沒有同步處理。 如果您接著在相應放大之後執行同步處理,查詢集區中的新複本會凍結兩次 -- 重複凍結。 執行後續向外延展作業時,請務必記住:

  • 在向外延展作業之前執行同步 處理 ,以避免新增複本的備援凍結。 不允許同時執行的並行同步處理和向外延展作業。

  • 自動化處理 向外延展作業時,請務必先處理主伺服器上的數據,然後執行同步處理,然後執行向外延展作業。 此序列可確保對 QPU 和記憶體資源的影響降到最低。

  • 在向外延展作業期間,查詢集區中的所有伺服器,包括主伺服器,都會暫時脫機。

  • 即使查詢集區中沒有任何複本,仍允許同步處理。 如果您要從零向外延展至一或多個複本,並從主伺服器上的處理作業使用新數據,請先在查詢集區中執行同步處理,然後向外延展。在相應放大之前進行同步處理,可避免新增複本的重複凍結。

  • 當您從主伺服器刪除模型資料庫時,它不會自動從查詢集區中的複本中刪除。 您必須使用 Sync-AzAnalysisServicesInstance PowerShell 命令來執行同步處理作業,該命令會從複本的共用 Blob 儲存體位置移除該資料庫的檔案/秒,然後刪除查詢集區中複本上的模型資料庫。 若要判斷模型資料庫是否存在於查詢集區中的複本上,但不存在於主伺服器上,請確定 將處理伺服器與查詢集區 設定分開為 [是]。 然後使用 SQL Server Management Studio (SSMS) 連線到主伺服器,並使用 :rw 限定符來查看資料庫是否存在。 然後連線到查詢集區中的複本,方法是在沒有限定符的情況下 :rw 連線,以查看相同的資料庫是否存在。 如果資料庫存在於查詢集區中的複本上,但不存在於主伺服器上,請執行同步作業。

  • 當您重新命名主伺服器上的資料庫時,還有另一個步驟,以確保資料庫已正確同步至任何復本。 重新命名之後,請使用 Sync-AzAnalysisServicesInstance 命令來指定 -Database 具有舊資料庫名稱的參數來執行同步處理。 此同步處理會從任何復本中移除具有舊名稱的資料庫和檔案。 然後執行另一個同步處理, -Database 指定具有新資料庫名稱的參數。 第二個同步處理會將新命名的資料庫複製到第二組檔案,並凍結任何複本。 您無法在入口網站中使用 [同步處理模型] 命令來執行這些同步處理。

同步處理模式

根據預設,查詢複本會以完整方式解除凍結,而不是以累加方式解除凍結。 解除凍結會分階段進行。 它們會一次卸離並附加兩個(假設至少有三個複本),以確保至少有一個復本在任何指定時間保持在線查詢。 在某些情況下,用戶端可能需要在進行此程式時重新連線到其中一個在線複本。 藉由使用 ReplicaSyncMode 設定,您現在可以指定查詢複本同步處理會以平行方式進行。 平行同步處理提供下列優點:

  • 同步處理時間大幅減少。
  • 跨復本的數據在同步處理過程中更有可能保持一致。
  • 所有複本的資料庫在整個同步期間都會保持上線,因此用戶端無需重新連線。
  • 記憶體內部快取只會以變更的數據累加更新,比完全重新凍結模型更快。

設定 ReplicaSyncMode

使用 SSMS 在進階屬性中設定 ReplicaSyncMode。 可能的值是:

  • 1 (預設值):完整復本資料庫分階段解除凍結(累加式)。
  • 2:平行優化同步處理。

RelicaSyncMode 設定

設定 ReplicaSyncMode=2 時,視需要更新多少快取而定,查詢複本可能會耗用更多記憶體。 若要讓資料庫保持在線且可供查詢使用,視數據量變更多少而定,此作業最多可能需要 複本上的記憶體 加倍,因為舊區段和新區段都會同時保留在記憶體中。 復本節點的記憶體配置與主要節點相同,而且主要節點上通常會有額外的記憶體來進行重新整理作業,因此復本不太可能用盡記憶體。 此外,常見的案例是資料庫會在主要節點上累加更新,因此兩倍記憶體的需求應該不常見。 如果同步處理作業確實發生記憶體不足錯誤,則會使用預設技術重試 (一次附加/中斷連結兩個)。

將處理與查詢集區分開

如需處理和查詢作業的最大效能,您可以選擇將處理伺服器與查詢集區分開。 分隔時,新的用戶端連線只會指派給查詢集區中的查詢複本。 如果處理作業只需要短時間,您可以選擇只針對執行處理和同步處理作業所需的時間,將處理伺服器與查詢集區分開,然後將它納入查詢集區。 將處理伺服器與查詢集區分開,或將它新增回查詢集區,最多可能需要五分鐘的時間,才能完成作業。

監視 QPU 使用量

若要判斷是否需要向外延展伺服器,請在 Azure 入口網站 中監視您的伺服器計量。 如果您的 QPU 會定期逾時,表示針對模型的查詢數目超過您方案的 QPU 限制。 當查詢線程集區佇列中的查詢數目超過可用的 QPU 時,查詢集區作業佇列長度計量也會增加。

另一個要監看的好計量是 ServerResourceType 的平均 QPU。 此計量會比較主伺服器與查詢集區的平均 QPU。

查詢相應放大計量

若要設定 QPU by ServerResourceType

  1. 在 [計量] 折線圖中,按兩下 [ 新增計量]。
  2. [資源] 中,選取您的伺服器,然後在 [計量命名空間] 中選取 [Analysis Services 標準計量],然後在 [計量] 中選取 [QPU],然後在 [匯總] 中選取 [平均]。
  3. 按兩下 [ 套用分割]。
  4. 在 [值] 中,選取 [ServerResourceType]。

詳細的診斷記錄

使用 Azure 監視器記錄,以取得相應放大伺服器資源的詳細診斷。 透過記錄,您可以使用Log Analytics查詢,依伺服器和複本細分QPU和記憶體。 如需詳細資訊,請參閱 在Log Analytics工作區中分析記錄。 如需範例查詢,請參閱 範例 Kusto 查詢

設定向外延展

Azure 入口網站

  1. 在入口網站中,按兩下 [向外延展]。使用滑桿來選取查詢複本伺服器的數目。 您選擇的複本數目除了現有的伺服器之外。

  2. 在 [ 將處理伺服器與查詢集區分開] 中,選取 [是] 以從查詢伺服器中排除您的處理伺服器。 使用預設 連接字串 的用戶端連線:rw重新導向至查詢集區中的複本。

    向外延展滑桿

  3. 按兩下 [ 儲存 ] 以布建新的查詢複本伺服器。

當您第一次為伺服器設定向外延展時,主伺服器上的模型會自動與查詢集區中的複本同步處理。 當您第一次將向外延展設定為一或多個複本時,只會進行一次自動同步處理。 相同伺服器上 復本數目的後續變更不會觸發另一個自動同步處理。 即使您將伺服器設定為零個復本,然後再相應放大為任意數目的複本,也不會再次發生自動同步處理。

同步處理

同步處理作業必須手動或使用 REST API 來執行。

Azure 入口網站

在 [概觀>模型同步處理] 模型中>

同步處理圖示

REST API

使用同步作業。

同步處理模型

POST https://<region>.asazure.windows.net/servers/<servername>:rw/models/<modelname>/sync

取得同步狀態

GET https://<region>.asazure.windows.net/servers/<servername>/models/<modelname>/sync

傳回狀態代碼:

代碼 描述
-1 無效
0 複製
1 重新凍結
2 已完成
3 失敗
4 正在結束

PowerShell

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

使用 PowerShell 之前, 請先安裝或更新最新的 Azure PowerShell 模組

若要執行同步處理,請使用 Sync-AzAnalysisServicesInstance

若要設定查詢複本的數目,請使用 Set-AzAnalysisServicesServer。 指定選擇性 -ReadonlyReplicaCount 參數。

若要分隔處理伺服器與查詢集區,請使用 Set-AzAnalysisServicesServer。 指定要使用 Readonly的選擇性-DefaultConnectionMode參數。

若要深入瞭解,請參閱 搭配 Az.AnalysisServices 模組使用服務主體。

連線

在伺服器的 [概觀] 頁面上,有兩個伺服器名稱。 如果您尚未為伺服器設定向外延展,這兩個伺服器名稱的運作方式相同。 設定伺服器的向外延展之後,您必須根據連線類型指定適當的伺服器名稱。

如需 Power BI Desktop、Excel 和自定義應用程式等使用者用戶端連線,請使用 伺服器名稱

針對 PowerShell、Azure 函式應用程式和 AMO 中的 SSMS、Visual Studio 和 連接字串,請使用管理伺服器名稱。 管理伺服器名稱包含特殊的 :rw (讀寫) 限定符。 所有處理作業都會發生在 (主要) 管理伺服器上。

伺服器名稱

相應增加、相應減少與相應放大

您可以使用多個復本來變更伺服器上的定價層。 相同的定價層適用於所有複本。 調整作業會先一次降低所有複本,然後在新的定價層上啟動所有複本。

疑難排解

問題: 用戶在 連線模式 'ReadOnly' 中找不到伺服器 '<Name of the server>' 實例。

解決方案:選取 [將處理伺服器與查詢集區分開] 選項時,使用預設 連接字串 的用戶端聯機會:rw重新導向至查詢集區複本。 如果查詢集區中的複本尚未上線,因為同步處理尚未完成,則重新導向的用戶端連線可能會失敗。 若要防止連線失敗,執行同步處理時,查詢集區中必須至少有兩部伺服器。 每部伺服器會個別同步處理,而其他伺服器則維持在在線狀態。 如果您選擇在處理期間沒有查詢集區中的處理伺服器,您可以選擇將它從集區中移除以供處理,然後在處理完成後將其新增回集區,但在同步處理之前。 使用記憶體和 QPU 計量來監視同步處理狀態。

監視 Azure Analysis Services管理 Azure Analysis Services