SQL Server 2016 Query Store
ืืืื ืื ืื ืจ, DBA ืืืืจ ืืืืจื ืืฉืืื ืืืื ืช SQL Server 2016 ืืกืคืจ,
SQL Server 2016 ืืืื ืืชื ืชืืื ื ืืืฉื ืื ืืฉื ื ืืืืจ ืืฉืืคืืจ ืืืฆืืขืื.
ืฉืืืชื ืืจืืืช ืฉืืืจืกื ืืฉืงืืขืื ืื ืืฉื ืื ืืฉืื. ืขื ืื, ืื ื ืืฉืชืฃ ืืืคืจื ืืื ืขื ื-Query Store feature ืฉืืขื ืืง ืื ื ืืจื ื ืืกืคืช ืืืืื ืืืฆืืขืื ืฉื ืฉืืืืชืืช ืืืงืืืช.
ืื ืื Query Store ?
Query Store ืืื ืชืืื ื (feature) ืืืฉื ื SQL Server 2016 ืืืืคืฉืจืช ื ืืืืจ ืืืฆืืขื ืฉืืืืชืืช ืืฆืืจื ืงืื ืื ืืื ืืื ืฆืืจื ืื ืืกืืื ,ืชืืื ืืช ืฆื ืฉืืืฉื ืื ืชืคืืจืช ืคืชืจืื ืืช ืืงืืืืื ืืืฉืื.
ืขื ืืืื ืื ืจืฆืื ื ืืืืื ืฉืืืืชืืช ืืชืืื ืืืช ืคืขืืื (Query Plans) ืืืืขืื , ืื ืืื ืืืื ืืช ืขืืืจื ื ืืืืืจืื ืืฉืจืช (Proc Cache) ืืืืืื ื ืืจืืืช ืืืชื ืืจื ืืืืืืช ื ืืืื ืืืขืืืืืช ืืืื sys.dm_exec_query_plan.
ืืืืจ ืืืืืืข ืขื ืืฉืืืืชืืช ื ืฉืืจ ืืืืืจืื - ืืื ืืืืืช ืฉืืื ืืืฉืืจ ืฉื ืืืื ืืฉื ืืืงืง ืื. ืื ืืกืฃ, ืืจืืข ื ืชืื, ืจืง ืืืืืข ืืขืืื ื ืืืืชืจ ืืืื ืืื ื ืืชื ืืืขืช ืื ืืื ืงืืื. ืืฉืื ืื ื ื ืงืจืืื ืืืื ืืืขืืืช ืืืืฆืืขืื ืฆืฆืืช - ืงืฉื ืื ืืจ ืฉืื ืืืื ืืชืืื ืืืช ืคืขืืื ืืืืืฆืืขื ืืฉืืืืชืืช. ืืขืืชืื ืื ืื ื ื ืงืจืืื ืจืง ืืืจื ืฉืืืจ ืืืฉืื ืขืฉื ืืชืืื ืืฉืจืช ืืืืืืจืื ืืคื ืื ืืกืืืืื... ืืื...ืื ืืคืฉ... ืืช ืชืืื ืืืช ืืคืขืืื ืืืืฆืืขื ืืฉืืืืชืืช ืืืืื.
ืขื Query Store ืื ืื ื ืืืืืื ืืจืืืช ืืืกืืืจืื. ืืคืืขื, ื ืืชื ืืงืื ืชืืื ื ืืจืืจื ืฉื ืืืืฆืืขืื ืืืชื ืืื ืืื ืืืืข ืขื ืฉืื ืื ืืชืืื ืืืช ืคืขืืื ืขืืืจ ืื ืฉืืืืชื ืืฉืืืืชื ืฉืจืฆื ืืืกืืก ืื ืชืื ืื ืฉืื ื.
ืืื ืื ืขืืื?
Query Store ืืืขืฉื ืืืฆืข ืฉืืืจืช ืืืืข ืขื ืจืืฆื ืฉื ืฉืืืืชืืช. ืืืื ืืืืข ื ืฉืืจ? ื ืฉืืจืืช ืชืืื ืืืช ืืคืขืืื ืฉืืื ืืฉืืืืฉ ืืืืืข ืขื ืฆืจืืืช ืืืฉืืืื ืืืืฆืืขื ืืฉืืืืชืืช ืืคืืขื. ืืืืืข ื ืฉืืจ ืชืืืื ืืืืืจืื ืืื ืขืืืจ ืืงืืืฅ ืืืกืืก ืื ืชืื ืื ืฉืชืืฉืื (primary filegroup user DB) . ืื, ืืฉืื ืชืื ืื ืืืืกืง, ืื ืืืื ืื ืื ื ืื ืืืจื ืืืืงืช ืืืืืจืื, ืื ืงืจื ืืืืืื ืืื ืื.
ืืืืืข ืืืชืจ ืืคืืจื ืขื ืื ืงืืจื ืืืืืจื ืืงืืขืื ื Query Store ืื ื ืืืืืฅ ืืงืจืื : How Query Store Collects Data
ืืืฆื ืืชืืืืื?
ืชืืืื ืืฉ ืฆืืจื ืืืคืขืื ืืช Query Store . ืืืืืจ ืืชืืื ื ืืจืืช ืืกืืก ืื ืชืื ืื (User database) ืืืฉ ืฆืืจื ืืืืืืจ ืืืชื. ื ืืชื ืืืคืขืื ืืฉืชื ืืจืืื. ืืืืฆืขืืช ืงืื :
ALTER DATABASE [Test_QueryStoreDB] SET QUERY_STORE = ON;
ื ืืชื ืื ืืืคืขืื ืืช Query Store ืืืืฉืง ืืืฉืชืืฉ (SSMS - ืืืืจ 1 ).
ืืืืจ 1 - Query Store ืืืืฉืง ืืืฉืชืืฉ.
ืืฉืื ืืฆืืื ืฉืืฉ ืืืฉืชืืฉ ืืืจืกืืืช ืืืืจืื ืืช ืฉื Sql Server Management Studio , ืื ื ืืฉืชืืฉืชื ื SQL 2016 CTP3 , ืืชืื ืืืขื ืืืืืจืื ืืฉืชื ื ืืืจืกืืืช ืืจืฉืืืืช.
ืืืื ื ืืชื ืืืืจืื ืืช ืืจืกืืช SQL Server 2016 Release Candidate 0
ืืืขื ืืื ื ื: ืืืคืขืื ื ืืืฅ ืงืืืง ืืื ื ืื ืืกืืก ืื ืชืื ืื ืฉื ืจืฆื ืื ืืจ, ืืืืคืืื ื ืืกืืก ืื ืชืื ืื - ืืฉ ืื ื ืืคืฉืจืืช ืืืฉื โ Query Store (ืืืืจ 1).
ืืืจ ืจืืฉืื ืขื ืื ืช ืืืคืขืื ืืช Query Store ื ืืืืจ ืืช ืืืืคืืื Operation Mode , ื ืืืจ ื Read Write.
ืืฉื ื ืืกืคืจ ืืืคืืื ืื ื ืืกืคืื ืฉื ืืชื ืืืืืืจ:
Operation Mode โ ืื ื ืืืจ ืืืคืฉืจืืช Only Read, ืืืจื ืฉ Query Store ืืืจ ืืื ืืฉืืืืฉ, ืืืืจ ืืคืกืืง ืฆืืืจื ืืชืืขืื ืฉื ื ืชืื ืื ืืืฉืื ืืื ืืฉืืืจ ืขื ืื ืชืื ืื ืฉื ืฆืืจื ืขื ืื. ืืืคืฉืจืืช Off ืชืขืฆืืจ ืืช Query Store ืืืื ืืชืืืง ืืช ืื ืชืื ืื ืฉื ืฆืืจื.
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (OPERATION_MODE = READ_WRITE );
(Stale Query Threshold (Days โ ืืฉืืฉ ืืืืืจืช ืืกืคืจ ืืืื ืืฉืืืจืช ืื ืชืื ืื ื query store .
ืืจืืจืช ืืืืื ืืื ื 367 ืืืื , ืืืขืื ืืกืคืจ ืื ืกืืคืจืชื ืืื ืืืืื ืืกืคืืง. ืืืืืฅ ืื ืืฆืืืจ ืืืืข ืฉืื ืืขืฉื ืื ืฉืืืืฉ , ืืืืจ ืืงืฉื ืขื ืชืืงืืจ ืขืชืืื ืืกืชื ืืชืคืืก ืืงืื.
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 14));
(Max Size (MB โ ืืืืฆืขืืชื ื ืืืืจ ืืช ืืืืื ืืืจืื ืฉืื ื ืจืืฆืื ืฉ query store ืืชืคืืก ืืืืกืง. ืืฉ query store ืืืืข ืืืืื ืฉื ืืืืจ ืืืืฆืขืืช ืืืคืืื ืื , ืืืืืืืืช ืืืคืกืง ืืืกืืฃ ื ืชืื ืื ืืืฉืื ื ืืืขืฉื query store ืืขืืืจ ืืืฆื Read Write ืืืฆื (!) Read Only .
ืืฉืื ืืฉืื ืื ืืืืคืืื ืื. ืื ืืกืืก ื ืชืื ืื ืืื ืฉืื ื ืืคืขืืืืชื ืืืฉ ืฆืืจื ืืชืช ืืช ืืืขืช ืขื ืืืืื ืืฉืืืืชืืช, ืืืื ืฉื ืืืืจ ืฉืื ืืฉืืืืชืืช ืืฉืืจื, ืชืืืจืืช ืืืืืช ืื ืชืื ืื. ืืืืืฅ ืืชืืจ ืืชืืื, ืืืืื ืืืื ืืขืืืช ืืงืื , ืืืงืฆืืช ืืืชืจ ืืื ืฉืฆืคืื ืขื ืื ืช ืื ืืคืกืคืก ื ืชืื ืื. ืืืืจ ืืื ืืืื ื ืืชื ืืืขืช ืืื ืืงืื ืืืืช ืฆืจืื ืืืฉื ืืช ืืืืืช ืืฆืืจื.
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (MAX_STORAGE_SIZE_MB = 1024);
Statistics Collection Interval - ืืืคืฉืจ ืืืืืืจ ืื ืืื ืืื ืืืืข ืกืืืืกืื ืืืืกืฃ ืืืกืื ืขืืืจ ืฉืืืืชืืช. ืืืช ืืืืืช ื ืืชืื ืืชืฆืืืช ื ืชืื ืื ืขืืืจ ืฉืืืืชืืช ืืืืจืืช ืืื ืงืจื ืืื ืืืืจื ืืื .
ืืจืืจืช ืืืืื ืืื ืื ืฉืขื. ืืืขืื ืคืขื ืืฉืขื ืืื ืื ืืืืจ ืืจืื ืืืื. ืืืงืจืื ืฉื ืชืคืขืื ืชืงืืืช ืฉืื ื ืจืืฆืื ืืจืืืช ื ืชืื ืื ืืฆืืจื ืืืืืช ื ืืืืจ ืืืกืคืจ ืืืื ืฉื ืืงืืช. ืืขื ืืืช, ืื ื ืฉืื ืืืืืืจ ืืืืืื ืืชืืืจืืช ืงืื ื ืืืชืจ ืื ืืืืจ ืืฉืืืฃ ืืืจื ืฉืืืื ืื ืขื ืืงืืื ืืฉืืื.
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (INTERVAL_LENGTH_MINUTES = 30);
Size Based Cleanup Mode โ ืืืืืจ ืื ืืืฆืข ื ืืงืืื ืืืืืืื ืืืฉืจ ืฆืจืืืช ืืืงืื ืืืืกืง ืืชืงืจืืช ืืืืื ืืืจืื ืฉืืืืจื ื.
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (SIZE_BASED_CLEANUP_MODE = AUTO);
Query Store Capture Mode โ ืืืคืฉืจ ืืืืืืจ ืื query store ืืชืขื ืืช ืื ืืฉืืืืชืืช ืฉืจืฆืืช ืืืกืืก ืื ืชืื ืื (All mode) ืื ืจืง ืืืื ืฉืืื ืืื ืืกืคืจ ืืืืจ ืฉื ืจืืฆืืช ืื ืฆืจืืื ืืืืื ืฉื ืืฉืืืื (Auto mode). ืืืืืืคืื ื ืืชื ืื ืืืืืืจ ืืืืฆืขืืช ืืืคืืื ืื ืื ืืชืขื ืฉืืืืชืืช ืืืฉืืช ืื ืื ืืขืงืื ืืืจ ืืืคืืื ืืื ืฉื ืืื ืฉืืืจ ืชืืขืื (None mode).
ALTER DATABASE [Test_QueryStoreDB]
SET QUERY_STORE (QUERY_CAPTURE_MODE = AUTO);
ืืืคืื ืื ื ืืกืคืื:
MAX_PLANS_PER_QUERY โ ืืฉืืฉ ืืืืืจืช ืืกืคืจ ืืจืื ืฉื ืชืืื ืืืช ืคืขืืื ืืืื ืฉืืืืชื.
DATA_FLUSH_INTERVAL_SECONDS โ ืืืืฆืขืืชื ื ืืืืจ ืืช ืืชืืืจืืช ืฉืื ื ืงืฉืื ืืช ืืืืืข ืฉื ืืกืฃ, ืืืืืจ ืื ืืื ืืื ืืืขืืจื ืื ืชืื ืื ืฉื ืืกืคืื ืืืื ืืฉืืืืชืืช ืืืืืืจืื ืืืืกืง. ืืืืืจ ืื 15 ืืงืืช ืืืจืืจืช ืืืื. ืืชืืืจืืช ืืืกืืช ืืจืืืืช ืขื ืื ืช ืื ืืืคืจืืข ืืคืขืืืืช ืืฉืืืคืช ืฉื ืืกืืก ืื ืชืื ืื. ืื ืืฆืืชื ืกืืื ืืฉื ืืช .
ืืืืกืืฃ , ื ืืชื ืืจืืืช ืืื Query Store ืืืืืจ ืืจืืข ื ืชืื ืขื ืืื ืชืฉืืื sys.database_query_store_options
ืื ื ืืชื ืืจืืืช ืืืฉืจ Query Store ืืืืืจ?
ืืืืจ ืฉืืืืจื ื ืืช Query Store ืืืืืข ืขื ืืืืฆืืขืื ืืชืืื ืืืืฉืืจ. ืขื ืื ืช ืืจืืืช ืืช ืืืืืข ืืคืฉืจ ืืืฉืชืืฉ ืืืืืืช ืืืืฉืง ืืืฉืชืืฉ (SSMS) : ืืืกืืก ืื ืชืื ืื ื ืืกืคื ืชืืงืืื ืืชืืืื ืืื ืืืืืช ืืืขืืืืื (ืจืื ืชืืื ื ืืื) :
ืืืืืืช ืืืฆืืื ืืชืฆืืื ืืจืืคืืช ืืืื ืช ืืืกืืืจืช ,ืืืฉ " ืืืืจ ืืฉืืืจ ".
ืืื ืืื"ืืืช ื ืืชื ืืงืืืช ืืกื ื ืืช ืืชืืฆืืืช ืืืืืื ืืืชื ืืคื ืืืื ืืืฆืืขืื ืฉืื ืื (ืืื ืจืืฆื , ืืื ืขืืืื , ืงืจืืื\ืืชืืื ืืื'). ืื ื ืืงืืืื 4 ืืืืืช ืืืื ืื:
Regressed Queries: ืืคื ืฉืฉืื ืืจืื, ืืืืฆืขืืช ืืื ืื ื ืืชื ืืจืืืช ืื ืื ืืฉืืืืชืืช ืฉืืืื ืืืคืื ืืืืืช ืืขืืืช ืืืฆืืขืื ืคืืืช ืืคืืืช ืืืืื. ืืืฆื ืื ืื ืืฉืืืืชืืช , ืื ืืืชื ืชืืื ืืช ืืคืขืืื, ืื ืืื ืืฉืื ืื ืืืืฆืืขืื ืืืืจื ืืื - ืืืืจ 2.
Overall Resource Consumption: ืืื ืื ืืกืื ืขืืืจืื ื ื ืชืื ืื ืกืืืืกืืืื ืขื ืืืฆืืขื ืืื ืืฉืืืืชืืช ืฉืจืฆื ืืืกืืก ืื ืชืื ืื. ื ืืชื ืืืืืืจ ืืช ืืืื ืืืื ืฉื ืืืื ืืืื ืืืืื ืืืคืื ืืกืืื ืื ืชืื ืื. ืืืฉื, ืืืืข ืฉื ืืืฆืืขื ืืฉืืืืชืืช ืืฉืืืข ืืืืจืื ืขื ืืืชืื ืฉื ืื ืชืื ืื ืืคื ืืื.
Top Resource Consuming Queries: ืื"ื ืื ืืฆืื ืืช ืืฉืืืืชืืช ืืืงืจืืช ืืืืชืจ ืืืืื ืืืฆืืขืื , ืืืืื ืืื ืฉื ืืืืจ ืืขื ืคื ืืืืืื ืฉื ืืืืจ (ืืื ืขืืืื \ ืืื ืจืืฆื \ ืืกืคืจ ืจืืฆืืช \ืฉืืืืฉ ืืืืืจืื \ ืงืจืืืืช ืืืชืืืืช ืืืืืืช \ ืคื ืืืช ืืืืกืง) - ืืืืจ 3
Tracked Queries: ืืื ื ืขืงืื ืืืจ ืืืฆืืขืืื ืฉื ืฉืืืืชืืช ืืืื ืืืช. ืืขืืงืจ ื ืจืฆื ืืขืงืื ืืืจ ืฉืืืืชืืช ืฉืืคืื ื ืขืืืื ืชืืื ืืช ืคืขืืื - ื ืืืื ืฉืืฉืื ืื ืฉืืืฆืขื ื ืืื ืขืืืจ ืืืืฆืืขื ืืฉืืืืชื.
ืืืืจ 2 : ืืืืื ืืืื ืืืื ื ืืืขืจืืช ืืืฆืืืช ืืฉืืืืชืืช ืฉืืืฆืืขืืื ืืืื ืืืจืื.
ืืืืจ 3 : ืืืืื ืืืื ืฉืืืืฉ ืืืฉืืื ืืขืจืืช
ืื ืื ืชืื ืื ืืืื ืฉืื ื ืจืืืื ืืืืืืช ืืืื ืื ืื ื ืืืืืช ืกืงืจืืคืืื ืฉื ืจืืฅ ืืฆืืจืื ืืงืจื ืืชืืงืืจ ืืืืฆืืืช ืงืื (ืืจื ืื ืืืื ืฉืื ืืืืคื ืืื ืืืื ืืืื ืื ื ืืฉืืขืืืช ืืืฆืืขืื ืืืชืืืช ืชืืขื ื ). ืื ื ืจืฉืืืช ืืืืืืช ืฉื ืืชื ืืืืืช ืืื ืืช ืืืืืข:
sys.database_query_store_options โ ืืื ื ืืชื ืืจืืืช ืืื Query Store ืืืืืจ.
sys.query_context_settingsโ ืืืื ืืืืข ืขื ืืืงืฉืจ ืฉื ืฉืืืืชืืช. ืืื ืืฉืื ืืฆืืื ืฉืืืืชืืช ืฉืืืงืกื ืฉืืื ืืื ืืืืืืช ืืจืืฅ ืืืจื ืฉืื ื ืืืืืืืจ ื ืชืื ืื ืฉืื ืื ืื ืื ืจืฆืืช ืขื ื ืชืื ื ืกืืืื ืฉืื ืื - ืืืคืืื ืื ืืืื ืฉืคื, ืืชืืืืกืืช ื NULL , ืกืืื ืืืคืืืืืช , ืืื'.
sys.query_store_plan โ ืืืื ืืช ืชืืื ืืืช ืืคืขืืื ืืืช ืืงืืฉืืจ ืฉืืื ืืฉืืืืชืืช.
sys.query_store_query โ ืืื ื ืจืื ืืช ืืฉืืืืชืืช ืืืช ืืืืืข ืืกืืืืกืื ืฉื ืฆืืจ ืขื ืื ืขื ืืืฆืืขืืื.
sys.query_store_query_text โ ืืืื ืืช ืืฉืืืืชืืช ืขืฆืื (T-SQL ) ื ื handle ืฉืืื.
sys.query_store_runtime_stats โ ืืืืข ืกืืืืกืื ืขื ืืจืืฆื ืืืืจืื ื ืฉื ืฉืืืืชืืช.
sys.query_store_runtime_stats_interval โ ืืืื ืืืืข ืขื ืคืจืงื ืืื ืฉืขื-ืคื ืื ืื ืชืื ืื ื ืกืืืื.
ืื ืขืื ื ืืชื ืืขืฉืืช ืขื Query Store ?
ืืื ืืฉื ืื ื ืืืืืืช ืืืคืืช ืชืืื ืืช ืคืขืืื ืงืืืืช ืืฉืืืืชื, ืืขืงืื ืืืจื ืฉืืืืชืืช ืฉื ืืคืชื ืขืืืื ืชืืื ืืช ืคืขืืื (ืืืืืื ืืืกืืจ ืืช ืืืงืฉืืช ืืืื). ืืืช ืืขืื ... ืืืื ืืืืื ืืืื ืื ื ืืืืฉืง ืืืฉืชืืฉ ืืืจืืจ ืืื ืืงืื ืืืืฆืขืืช ืคืงืืืืช ืฉื ืืฆืจื ืืฉื ืื. ืืืฉื:
sp_query_store_flush_db โ ืืขืืืจ ืืช ืืืืืข ืฉื Query Store ืฆืืจ ืืืืืืจืื ืืืืกืง.
sp_query_store_force_plan - ืืืคืฉืจ ืืืคืืช ืชืืื ืืช ืคืขืืื ืืฉืืืืชื ืืกืืืืช.
sp_query_store_remove_plan โ ืืกืืจ ืชืืื ืืช ืคืขืืื ืื Query Store.
sp_query_store_remove_query โ ืืกืืจ ืื Query Store ืฉืืืืชื ืืืช ืื ืืืืืข ืฉื ืืกืฃ ืืืืื.
sp_query_store_reset_exec_stats โ ืืืืง ืืช ืืืืืข ืืกืืืืกืื ืฉื ืฆืืจ.
sp_query_store_unforce_plan - ืืืคืฉืจ ืืืกืืจ ืืคืื ืฉื ืชืืื ืืช ืคืขืืื ืืฉืืืืชื ืืกืืืืช.
ื ืืชื ืืงืจืื ืืืจืืื ืขื ืฉืืืืฉ ืืคืจืืฆืืืจืืช ืืื - Query Store Stored Procedures
ืืงืืฉืืจ ืืื ืืคืืจืืื ื ืืฉืืื ืจืืื ืขื Query Store. ืืื ืืืืืจืื, ืฉืืืืฉืื ืืคืฉืจืืื, ืฉืืืืชืืช ืืืืืื ืืขืื : Monitoring Performance By Using the Query Store. ืืืืืฅ ืื ืขื Best Practice with the Query Store
ืืกืืืื
Query Store ืืืคืฉืจ ืื ื ืืจื ื ืืกืคืช, ืืืชื ืืืฆืขืืช, ืืืืื ืื ืืฆื ืืืฆืืขื ืืฉืืืืชืืช ืืกืืืื ืฉืื ื. ืืืงืจืืกืืคื ืคืจืื ื ืื ื ืืืืืช ืชืืงืืจ ืืืืฆืขืืช ืงืื ืืืขืืื ืืืืฉืง ืืฉืชืืฉ ืืจืืจ. ืื ืืกืฃ ื ืืชื ื ืื ื ืืจื ืงืื ืืืฉืคืืข ืขื ืืืืฆืืขืื ืืืื ืขื ืืื ืืคืืืช ืชืืื ืืืช โ ืืืืฆืขืืช ืืืฉืง ืืืฉืชืืฉ ( ืืืขืื ืืจื ืงืื ืืื - ืื ื ืืืืืฅ ืงืืื ืืืืื ืืื ืืฉืชื ืชื ืืชืืื ืืช ืืจืง ืืืจ ืื ืืืืืื ืืื ืืืคืืช ืชืืื ืืช ืื ืื ืื ). ืืืืื ืืืฃ ืืจืืืช ืฉืืคืืจ ืืืืืื ื ืืืืจ ืืืืฆืืขืื ืฉื ืืฉืืืืชืืช ืืกืืกื ืื ืชืื ืื ื Sql Server 2016 ืืAzure.