Tìm hiểu về Query Store trong phân tích hiệu suất truy vấn trên SQL Server Trong bài viết này Stanford sẽ giới thiệu đến các bạn học quản trị sql tìm hiểu về Query Store cũng như các ứng dụng của nó trong việc phân tích hiệu suất truy vấn trong SQL Server. Query Store trong SQL Server là một tính năng mạnh mẽ giúp theo dõi, lưu trữ và phân tích hiệu suất truy vấn theo thời gian. Nó đặc biệt hữu ích trong việc khắc phục sự cố hiệu suất và tối ưu hóa truy vấn. Dưới đây là phần giới thiệu tổng quan và phân tích chi tiết từng phần của Query Store, kèm ví dụ minh họa cụ thể. Giới thiệu về Query Store Query Store được giới thiệu từ SQL Server 2016 trở đi. Nó hoạt động như một "hộp đen" ghi lại lịch sử thực thi truy vấn, kế hoạch thực thi (execution plans), và thống kê hiệu suất (runtime stats). Lợi ích: Theo dõi sự thay đổi của kế hoạch thực thi theo thời gian. Phân tích hiệu suất truy vấn. Buộc sử dụng một kế hoạch thực thi tốt (force plan). Hữu ích trong việc nâng cấp SQL Server hoặc thay đổi chỉ mục. Các thành phần chính của Query Store 1. Query Store Configuration Cấu hình bật/tắt và thiết lập lưu trữ. ALTER DATABASE [TenCSDL] SET QUERY_STORE = ON; GO ALTER DATABASE [TenCSDL] SET QUERY_STORE ( OPERATION_MODE = READ_WRITE, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30), DATA_FLUSH_INTERVAL_SECONDS = 900, INTERVAL_LENGTH_MINUTES = 60, MAX_STORAGE_SIZE_MB = 100, QUERY_CAPTURE_MODE = AUTO ); Giải thích: - STALE_QUERY_THRESHOLD_DAYS: số ngày giữ lại dữ liệu cũ. - INTERVAL_LENGTH_MINUTES: khoảng thời gian chia nhỏ để thống kê. - QUERY_CAPTURE_MODE: ALL, AUTO, hoặc NONE. 2. Query Store Catalog Views Các bảng hệ thống để truy vấn dữ liệu từ Query Store: sys.query_store_query: Thông tin truy vấn sys.query_store_plan: Kế hoạch thực thi sys.query_store_runtime_stats: Thống kê thời gian chạy sys.query_store_runtime_stats_interval: Khoảng thời gian thống kê Ví dụ: Truy vấn các truy vấn tốn thời gian nhất: SELECT TOP 10 qsqt.query_sql_text, qsp.plan_id, SUM(qsrs.avg_duration) AS TotalAvgDuration FROM sys.query_store_query_text qsqt JOIN sys.query_store_query qsq ON qsqt.query_text_id = qsq.query_text_id JOIN sys.query_store_plan qsp ON qsq.query_id = qsp.query_id JOIN sys.query_store_runtime_stats qsrs ON qsp.plan_id = qsrs.plan_id GROUP BY qsqt.query_sql_text, qsp.plan_id ORDER BY TotalAvgDuration DESC; 3. Force Plan (Buộc kế hoạch thực thi) Khi một truy vấn có nhiều kế hoạch thực thi, bạn có thể buộc SQL Server sử dụng kế hoạch tốt nhất. EXEC sp_query_store_force_plan @query_id = 123, @plan_id = 456; Hủy bỏ: EXEC sp_query_store_unforce_plan @query_id = 123, @plan_id = 456; 4. Xóa dữ liệu Query Store ALTER DATABASE [TenCSDL] SET QUERY_STORE CLEAR; Ví dụ: Các bước thực hiện sử dụng Query Store trong SQL Server - Bước 1: Bật Query Store cho database ALTER DATABASE AdventureWorks2019 SET QUERY_STORE = ON; - Bước 2: Thực thi một truy vấn nhiều lần SELECT * FROM Sales.SalesOrderHeader WHERE CustomerID = 11000; - Bước 3: Truy vấn dữ liệu từ Query Store SELECT txt.query_sql_text, rs.avg_duration, rs.execution_type_desc, rs.count_executions FROM sys.query_store_query_text txt JOIN sys.query_store_query q ON txt.query_text_id = q.query_text_id JOIN sys.query_store_plan p ON q.query_id = p.query_id JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id ORDER BY rs.avg_duration DESC; 4. Giao diện đồ họa (SSMS) Trong SQL Server Management Studio (SSMS): Mở database → Query Store → Chọn các báo cáo như: Top Resource Consuming Queries Regressed Queries Tracked Queries Như vậy qua bài viết này Stanford đã giúp các bạn học sql tìm hiểu về query store cũng như ứng dụng của nó trong phân tích hiệu suất truy vấn trên SQL Server. Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao có thể tham gia ngay khóa học sql cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé. ============================= ☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: 0963 723 236 - 0866 586 366 Website: https://stanford.com.vn Facebook: http://bit.ly/2FN0TYb Youtube: http://bit.ly/2TkKT7I Tags: query store trong sql server, sử dụng query store