Thống kê thời gian

Cải thiện hiệu năng truy vấn trong SQL Server

Dean Smith

Founder, Atamai Analytics

SQL Server Management Studio

 

Màn hình khởi động SQL Server Management Studio

Cải thiện hiệu năng truy vấn trong SQL Server

STATISTICS TIME trong SSMS

SELECT UNStatisticalRegion, 
        CountryName,
        Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                    FROM Cities 
                    WHERE Pop2017 > 1000000);

STATISTICS TIME - lệnh báo cáo số mili-giây cần để phân tích cú pháp, biên dịch và thực thi truy vấn.

SQL Server parse and compile time: 
   CPU time = 16 ms, elapsed time = 21 ms.

(88 rows affected)

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

SQL Server Execution Times

 SQL Server Execution Times:
   CPU time = 390 ms,  elapsed time = 382 ms.
  • CPU time: thời gian CPU xử lý truy vấn
  • Elapsed time: tổng thời lượng truy vấn
Cải thiện hiệu năng truy vấn trong SQL Server

Ví dụ: truy vấn 1

SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
Cải thiện hiệu năng truy vấn trong SQL Server

Ví dụ: truy vấn 1

SET STATISTICS TIME ON
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName -- 1st sub-query
        FROM Cities) 
            AND Capital IN 
                (SELECT CityName -- 2nd sub-query
                 FROM Cities 
                 WHERE Pop2017 > 1000000); 
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

Ví dụ: truy vấn 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);


SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

Ví dụ: truy vấn 2

SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SET STATISTICS TIME OFF
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

So sánh truy vấn

  • Truy vấn đầu tiên có hai truy vấn con
SELECT UNStatisticalRegion, 
       CountryName,
       Capital
FROM Nations
WHERE Capital IN 
        (SELECT CityName 
        FROM Cities)
            AND Capital IN 
                (SELECT CityName 
                 FROM Cities 
                 WHERE Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 391 ms,  elapsed time = 381 ms.
  • Truy vấn thứ hai dùng EXISTS
SELECT UNStatisticalRegion, 
       CountryName,
       Capital 
FROM Nations n
WHERE EXISTS 
    (SELECT 1 
     FROM  Cities c 
     WHERE n.Capital = c.CityName
        AND Pop2017 > 1000000);
SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 2 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

Thời gian thực thi vs. thời gian CPU

Elapsed time

  • Có thể biến động khi phân tích thống kê thời gian truy vấn
  • Là thước đo tốt nhất cho truy vấn chạy nhanh nhất

CPU time

  • Nên thay đổi ít khi phân tích thống kê thời gian truy vấn
  • Có thể không hữu ích nếu bộ xử lý chạy song song
Cải thiện hiệu năng truy vấn trong SQL Server

Lấy giá trị trung bình

  • Đừng dựa vào một phép đo, hãy lấy trung bình.
elapsed time = 2032 ms.

elapsed time = 2060 ms.

elapsed time = 1915 ms.

elapsed time = 4009 ms.

elapsed time = 3511 ms.

Average elapsed time = 2705 ms.
Cải thiện hiệu năng truy vấn trong SQL Server

Ayo berlatih!

Cải thiện hiệu năng truy vấn trong SQL Server

Preparing Video For Download...