次要副本的查詢存放區
SQL Server 2022 (16.x)
次要複本的查詢存放區功能允許在次要複本的工作負載上啟用與主要複本相同的查詢存放區功能。 啟用次要複本的查詢存放區時,複本會將通常儲存在查詢存放區中的查詢執行資訊傳送回主要複本。 然後,主要復本會將數據保存在它自己的查詢存放區內的磁碟。 基本上,主要複本與所有次要複本之間共用一個查詢存放區。 查詢存放區存在於主要複本上,並將所有複本的數據儲存在一起。 目前,次要復本的查詢存放區可供可用性群組中設定的 SQL Server 2022 (16.x) 實例使用。
重要
次要副本的查詢存放區是 預覽 功能。 它不適用於生產環境部署。 請參閱:SQL Server 2022 (16.0) 版本資訊。
您必須先啟用追蹤旗標 12606,才能啟用次要複本的查詢存放區。 若要啟用追蹤旗標 :
- 在 Windows 中,啟動 SQL Server 組態管理員。
- 在 SQL Server Services清單中,為您的 SQL Server 2022 (16.x) 執行個體的 SQL Server 執行個體服務,以滑鼠右鍵單擊。 選取 [屬性]。
- 選取 [開始參數] 索引標籤。在 [指定啟動參數:] 字段中,新增值:
-T12606
,然後選取 [新增]。 - 必須先重新啟動 SQL Server 實例服務,變更才會生效。
啟用次要複本的查詢存放區
在 SQL Server 執行個體上使用查詢存放區的次要複本之前,您必須擁有 Always On 高可用性群組。 然後,使用 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_desc | 實際狀態 | 實際狀態描述 | 唯讀原因 |
---|---|---|---|---|
4 | READ_CAPTURE_SECONDARY | 4 | (if applicable to the specific context, otherwise maintain the original) 讀取_捕捉_次要 | 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)