次要複本上的查詢存放區
SQL Server 2022 (16.x)
次要複本上的查詢存放區功能可對次要複本工作負載執行主要複本可用的相同查詢存放區功能。 啟用次要複本上的查詢存放區時,複本會傳送查詢執行資訊,這些資訊通常會儲存回主要複本的查詢存放區內。 之後主要複本會將資料保存至自己查詢存放區的磁碟內。 基本上,主要和所有次要複本會共用同一個查詢存放區。 查詢存放區存在於主要複本中,並將所有複本的資料儲存在一起。 目前,在可用性群組中設定的 SQL Server 2022 (16.x) 執行個體提供次要複本的查詢存放區功能。
重要
次要複本查詢存放區為預覽功能。 不適用於生產環境部署。 請見:SQL Server 2022 (16.0) 版本資訊。
您必須先啟用追蹤旗標 12606,才能啟用次要複本的查詢存放區。 若要啟用追蹤旗標:
啟用次要複本上的查詢存放區
擁有 Always On 可用性群組之後,才能在 SQL Server 執行個體上使用次要複本的查詢存放區。 然後,使用 ALTER DATABASE SET 選項 (Transact-SQL) 啟用次要複本的查詢存放區。
如果查詢存放區尚未啟用,且在主要複本的 READ_WRITE 模式中,您必須先啟用才能繼續。 針對主要複本上的每個所需資料庫執行下列命令:
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
若要啟用所有次要複本上的查詢存放區,請連線到主要複本,並針對每個所需的資料庫執行下列命令。 目前,啟用次要複本的查詢存放區時,所有次要複本皆會啟用。
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
若要停用所有次要複本上的查詢存放區,請連線到主要複本,並針對每個所需的資料庫執行下列命令:
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
您可以連線到次要複本上的資料庫,並執行下列命令,以驗證次要複本上是否已啟用查詢存放區:
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
下列查詢 sys.database_query_store_options 的結果樣本,表示次要的查詢存放區處於 READ_CAPTURE_SECONDARY 狀態。 8
的 readonly_reason
表示查詢已針對次要複本執行。 這些結果表示已在次要複本上成功啟用查詢存放區。
desired_state | desired_state_desc | actual_state | actual_state_desc | readonly_reason |
---|---|---|---|---|
4 | READ_CAPTURE_SECONDARY | 4 | READ_CAPTURE_SECONDARY | 8 |
啟用之後,您可以使用 sys.query_store_replicas 來驗證次要複本上查詢存放區的健康情況。
若要停用次要複本的查詢存放區,請連線到主要複本上的資料庫,然後執行下列程式碼:
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
複本集
目前,啟用次要複本的查詢存放區時,所有次要複本皆會啟用。
複本集的定義為共用角色的所有未命名複本 (主要、次要、異地次要、異地主要),或個別的具名複本。 系統儲存的查詢相關資料,可以根據複本集作為工作負載進行分析。 複本的查詢存放區可讓您監視及調整任何獨特且唯讀的工作負載效能,該工作負載可能會針對次要複本執行。
次要複本查詢存放區的效能考量
次要複本用來將查詢資訊傳回主要複本的通道,與用來讓次要複本保持最新狀態的通道相同。 主要複本上儲存資料的資料表,與查詢存放區針對在主要複本上執行的查詢所用的資料表相同,這會增加查詢存放區的大小。
因此,當系統負載過高時,您或許會發現因通道超載導致變慢的情況。 此外,針對目前查詢存放區面臨的臨機查詢擷取問題,在次要複本上執行的工作負載亦會發生相同情況。 深入瞭解如何在查詢存放區中保留最相關的資料。
另請參閱
- ALTER DATABASE SET 選項 (Transact-SQL)
- sys.database_query_store_options (Transact-SQL)
- sys.query_store_replicas
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.sp_query_store_force_plan (Transact-SQL)