Azure Analysis Services 擴充
透過擴增,即可在查詢集區中的多個查詢複本之間散布用戶端查詢,縮短查詢工作高度負載期間的回應時間。 您也可以將處理與查詢集區分開,確保客戶端查詢不會受到處理作業的負面影響。 可以利用 Azure 入口網站或 Analysis Services REST API 設定擴充。
標準定價層中的伺服器可以使用擴充。 每個查詢複本會以您伺服器的相同費率計費。 所有查詢複本都會建立在與伺服器相同的區域內。 您可以設定的查詢複本數目受限於您伺服器所在的區域。 若要深入了解,請參閱依區域的可用性。 向外延展不會增加伺服器的可用記憶體數量。 若要增加記憶體則需升級方案。
為何要擴增?
在一般伺服器部署中,一部伺服器會作為處理伺服器和查詢伺服器使用。 如果伺服器上對應模型的用戶端查詢數量超過伺服器方案的查詢處理器 (QPU),或是模型的處理作業與高度的查詢工作負載同時發生,則效能可能會降低。
透過向外延展,您可以建立最多七個查詢複本資源的查詢集區(總計八個,包括主伺服器)。 您可以調整查詢集區中的複本數目,以符合關鍵時刻的 QPU 需求,並且可以隨時將處理伺服器與查詢集區分開。
不論您在查詢集區中擁有的查詢複本數目為何,處理工作負載都不會分散在查詢複本之間。 主要伺服器可作為處理伺服器使用。 查詢複本僅針對查詢集區中主要伺服器與每個複本之間同步的模型資料庫,提供查詢。
相應放大時,最多可能需要五分鐘的時間,新的查詢複本才能累加新增至查詢集區。 所有的新查詢複本都已啟動並執行後,新的用戶端連線進行負載平衡,而分散到查詢集區中的資源。 現有的用戶端連線不會從目前連線的資源變更。 當您相應縮小時,任何從查詢集區中移除之查詢集區資源的現有用戶端連線都會終止。 用戶端可以重新連線到剩餘的查詢集區資源。
運作方式
當您第一次設定向外延展時,主伺服器上的模型資料庫會自動與新查詢集區中的新複本同步處理。 自動同步處理只會發生一次。 在自動同步處理期間,主要伺服器的資料檔案 (在 Blob 儲存體中待用加密) 會複製到第二個位置,也會在 Blob 儲存體中加密待用。 接下來,查詢集區中的複本會以第二組檔案中的資料序列化。
雖然只有在您第一次向外延展伺服器時,才會執行自動同步處理,但您也可以執行手動同步處理。 同步處理可確保查詢集區中複本上的資料符合主要伺服器的資料。 在主要伺服器上處理 (重新整理) 模型時,必須在處理作業完成之後執行同步處理。 此同步處理會將更新的資料從 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
:平行最佳化同步處理。
設定 ReplicaSyncMode=2 時,視需要更新多少快取而定,查詢複本可能會耗用更多記憶體。 若要讓資料庫保持上線且可供查詢使用,視資料有多少變更而定,作業最多可能需要將複本上的記憶體加倍,因為舊區段和新區段都會同時保留在記憶體中。 復本節點的記憶體配置與主要節點相同,而且主要節點上通常會有額外的記憶體來進行重新整理作業,因此復本不太可能用盡記憶體。 此外,常見的案例是資料庫會在主要節點上累加更新,因此加倍記憶體的需求應該不常見。 如果同步處理作業確實發生記憶體不足錯誤,則會使用預設技術重試 (一次附加/中斷連結兩個)。
與查詢集區分開處理
若要讓處理和查詢作業達到最佳效能,您可以選擇將處理伺服器和查詢集區區隔開來。 區隔之後,新的用戶端連線只會指派給查詢集區中的查詢複本。 如果處理作業短時間即可完成,您可以選擇只在執行處理和同步處理作業的期間內區隔處理伺服器與查詢集區,且隨後就將它重新納入查詢集區中。 將處理伺服器與查詢集區分開,或將它新增回查詢集區,最多可能需要五分鐘的時間,才能完成作業。
監視 QPU 使用量
若要判斷是否需要向外延展伺服器,請在 Azure 入口網站 中監視您的伺服器計量。 如果您的 QPU 經常超出最大值,表示對應模型的查詢數目超出方案的 QPU 限制。 查詢執行緒集區佇列中的查詢數目超過可用 QPU 時,查詢集區作業佇列長度計量也會增加。
另一個要監看的良好計量是 ServerResourceType 的平均 QPU。 此計量會比較主要伺服器與查詢集區的平均 QPU。
以 ServerResourceType 設定 QPU
- 在 [計量] 折線圖中,按一下 [新增計量]。
- 在 [資源] 中,選取您的伺服器,然後在 [計量命名空間] 中選取 [Analysis Services 標準計量],然後在 [計量] 中選取 [QPU],再於 [彙總] 中選取 [平均]。
- 按一下 [套用分割]。
- 在 [值] 中,選取 [ServerResourceType]。
詳細的診斷記錄
使用 Azure 監視器記錄以取得擴增伺服器資源的詳細診斷。 透過記錄,您可以使用 Log Analytics 查詢,依伺服器和複本細分 QPU 和記憶體。 如需詳細資訊,請參閱 在Log Analytics工作區中分析記錄。 如需範例查詢,請參閱 範例 Kusto 查詢。
設定擴充
Azure 入口網站
在入口網站中,按一下 [擴充]。使用滑桿選取查詢複本伺服器的數目。 所選擇的複本數目不包括現有的伺服器。
在 [Separate the processing server from the querying pool]\(區隔處理伺服器與查詢集區\) 中,選取 [是] 以將處理伺服器從查詢伺服器排除。 使用預設連接字串 (不含
:rw
) 的用戶端連線會重新導向至查詢集區中的複本。按一下 [儲存] 以佈建您的新查詢複本伺服器。
當您第一次為伺服器設定向外延展時,主伺服器上的模型會自動與查詢集區中的複本同步處理。 第一次將擴增設定為一或多個複本時,自動同步處理只會發生一次。 相同伺服器上 復本數目的後續變更不會觸發另一個自動同步處理。 即使您將伺服器設定為零個復本,然後再相應放大為任意數目的複本,也不會再次發生自動同步處理。
同步處理
同步處理作業必須以手動方式或使用 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。 指定選擇性的 -DefaultConnectionMode
參數,以使用 Readonly
。
若要深入了解,請參閱 搭配 Az.AnalysisServices 模組使用服務主體。
連線
在伺服器的 [概觀] 頁面中,有兩個伺服器名稱。 如果您還沒有為伺服器設定擴充,則這兩個伺服器名稱會以相同方式運作。 一旦設定了伺服器擴充,即必須根據連線類型指定適當的伺服器名稱。
若為使用者用戶端連線 (如 Power BI Desktop、Excel 以及自訂應用程式),請使用伺服器名稱。
若為 SSMS、Visual Studio,以及 PowerShell、Azure 函數應用程式和 AMO 中的連接字串,請使用管理伺服器名稱。 管理伺服器名稱包含特殊 :rw
(讀寫) 限定詞。 所有的處理作業皆發生在 (主要) 管理伺服器上。
擴大、縮小與向外延展
您可以在具有多個複本的伺服器上變更定價層。 相同的定價層適用於所有複本。 調整作業會先一次降低所有複本,然後在新的定價層上啟動所有複本。
疑難排解
問題: 用戶在 連線模式 'ReadOnly' 中找不到伺服器 '<Name of the server>' 實例。
解決方法:選取 [分開處理伺服器與查詢集區] 選項時,使用預設連接字串 (不含 :rw
) 的用戶端連線會重新導向至查詢集區複本。 如果查詢集區中的複本尚未上線,因為同步處理尚未完成,則重新導向的用戶端連線可能會失敗。 若要避免連線失敗,則在執行同步處理時,查詢集區中必須有至少兩部伺服器。 每部伺服器會個別同步,而其他伺服器則維持線上狀態。 如果您選擇在處理期間查詢集區中不要有處理中的伺服器,可以選擇從集區中移除該伺服器以供處理,然後在處理完成之後,但在同步處理之前,將它加回集區。 使用記憶體和 QPU 計量來監視同步處理狀態。