Tôi muốn hiểu tại sao sẽ có sự khác biệt lớn như vậy khi thực hiện cùng một truy vấn trên UAT (chạy trong 3 giây) so với PROD (chạy trong 23 giây).
Cả UAT và PROD đều có dữ liệu và chỉ mục chính xác.
TRUY VẤN:
set statistics io on;
set statistics time on;
SELECT CONF_NO,
'DE',
'Duplicate Email Address ''' + RTRIM(EMAIL_ADDRESS) + ''' in Maintenance',
CONF_TARGET_NO
FROM CONF_TARGET ct
WHERE CONF_NO = 161
AND LEFT(INTERNET_USER_ID, 6) != 'ICONF-'
AND ( ( REGISTRATION_TYPE = 'I'
AND (SELECT COUNT(1)
FROM PORTFOLIO
WHERE EMAIL_ADDRESS = ct.EMAIL_ADDRESS
AND DEACTIVATED_YN = 'N') > 1 )
OR ( REGISTRATION_TYPE = 'K'
AND (SELECT COUNT(1)
FROM CAPITAL_MARKET
WHERE EMAIL_ADDRESS = ct.EMAIL_ADDRESS
AND DEACTIVATED_YN = 'N') > 1 ) )
TRÊN UAT:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 11 ms, elapsed time = 11 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
(3 row(s) affected)
Table 'Worktable'. Scan count 256, logical reads 1304616, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'PORTFOLIO'. Scan count 1, logical reads 84761, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'CAPITAL_MARKET'. Scan count 256, logical reads 9472, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'CONF_TARGET'. Scan count 1, logical reads 100, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 2418 ms, elapsed time = 2442 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Về sản xuất:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
(3 row(s) affected)
Table 'PORTFOLIO'. Scan count 256, logical reads 21698816, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'CAPITAL_MARKET'. Scan count 256, logical reads 9472, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'CONF_TARGET'. Scan count 1, logical reads 100, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 23937 ms, elapsed time = 23935 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Lưu ý rằng trên SẢN PHẨM truy vấn cho thấy một chỉ mục bị thiếu và điều đó có lợi như tôi đã kiểm tra, nhưng đó không phải là điểm thảo luận.
Tôi chỉ muốn hiểu rằng: TRÊN UAT - tại sao máy chủ sql tạo bảng worker và trên SẢN PHẨM thì không? Nó tạo ra một bộ đệm bảng trên UAT chứ không phải trên SẢN PHẨM. Ngoài ra, tại sao thời gian thực hiện lại khác nhau trên UAT so với SẢN PHẨM?
Chú thích :
Tôi đang chạy máy chủ sql 2008 R2 RTM trên cả hai máy chủ (sắp có bản vá với SP mới nhất).
UAT: Bộ nhớ tối đa 8GB. MaxDop, ái lực của bộ xử lý và các luồng công nhân tối đa là 0.
Logical to Physical Processor Map:
*------- Physical Processor 0
-*------ Physical Processor 1
--*----- Physical Processor 2
---*---- Physical Processor 3
----*--- Physical Processor 4
-----*-- Physical Processor 5
------*- Physical Processor 6
-------* Physical Processor 7
Logical Processor to Socket Map:
****---- Socket 0
----**** Socket 1
Logical Processor to NUMA Node Map:
******** NUMA Node 0
SẢN XUẤT: bộ nhớ tối đa 60GB. MaxDop, ái lực của bộ xử lý và các luồng công nhân tối đa là 0.
Logical to Physical Processor Map:
**-------------- Physical Processor 0 (Hyperthreaded)
--**------------ Physical Processor 1 (Hyperthreaded)
----**---------- Physical Processor 2 (Hyperthreaded)
------**-------- Physical Processor 3 (Hyperthreaded)
--------**------ Physical Processor 4 (Hyperthreaded)
----------**---- Physical Processor 5 (Hyperthreaded)
------------**-- Physical Processor 6 (Hyperthreaded)
--------------** Physical Processor 7 (Hyperthreaded)
Logical Processor to Socket Map:
********-------- Socket 0
--------******** Socket 1
Logical Processor to NUMA Node Map:
********-------- NUMA Node 0
--------******** NUMA Node 1
CẬP NHẬT:
Kế hoạch thực hiện UAT XML:
Kế hoạch thực hiện sản xuất XML:
XML Kế hoạch thực hiện UAT - với Kế hoạch được tạo ra fro SẢN PHẨM:
Cấu hình máy chủ:
SẢN XUẤT: PowerEdge R720xd - CPU Intel (R) Xeon (R) E5-2637 v2 @ 3.50GHz.
UAT: PowerEdge 2950 - CPU Xeon (R) Intel X5460 @ 3.16GHz
Tôi đã đăng tại answer.sqlperformance.com
CẬP NHẬT:
Cảm ơn @swasheck đã gợi ý
Thay đổi bộ nhớ tối đa trên SẢN PHẨM từ 60 GB thành 7680 MB, tôi có thể tạo cùng một gói trong SẢN PHẨM. Truy vấn hoàn thành cùng lúc với UAT.
Bây giờ tôi cần hiểu - TẠI SAO? Ngoài ra, bằng cách này, tôi sẽ không thể biện minh cho máy chủ quái vật này để thay thế máy chủ cũ!