Làm thế nào để DTU trong các lớp hiệu suất Tiêu chuẩn và Cao cấp trong SQL Azure so sánh?


8

Gần đây chúng tôi đã quan sát thấy sự suy giảm hiệu suất nghiêm trọng trong cơ sở dữ liệu SQL Azure chạy trong lớp hiệu suất Standard3 - việc sử dụng CPU đã tăng từ mười phần trăm đến năm mươi phần trăm đến gần một trăm phần trăm chỉ trong một giờ. Vì vậy, chúng tôi đã thay đổi lớp hiệu suất thành Premium2 và việc sử dụng CPU ngay lập tức giảm xuống còn khoảng tám phần trăm.

Standard3 được yêu cầu cung cấp 100 DTU và Premium2 được yêu cầu cung cấp 250 DTU. Điều đó có nghĩa là tám phần trăm của P2 chỉ là hai mươi DTU, rất xa so với việc sử dụng tất cả 100 DTU trong Standard3.

Là những DTU khác nhau? Mặt khác, làm thế nào để giảm mức sử dụng đột ngột này khi chuyển từ tầng hiệu suất 100 DTU sang tầng hiệu suất 250 DTU?


Tôi quan tâm đến trải nghiệm của bạn với vấn đề đó. Tôi có thể nói rằng những DTU đó có hiệu lực khác nhau, nhưng nó thực sự phụ thuộc vào những gì bạn làm với DB của bạn. Ví dụ, trong môi trường của tôi, chúng tôi có một DB tiêu chuẩn đang gặp khó khăn một chút vì nó làm rất nhiều công việc đòi hỏi nhiều CPU và tôi chắc chắn rằng chúng tôi có thể hưởng lợi rất nhiều từ việc sử dụng Premium ngay cả khi tổng số DTU nhỏ hơn bây giờ chúng ta đã ở trong lớp tiêu chuẩn.
Etienne

1
@Etienne TL; DR Premium nhanh hơn nhiều so với Standard, đặc biệt nếu bạn ghi vào cơ sở dữ liệu. Ví dụ, một CHỌN rất lớn gây ra quét chỉ mục đầy đủ có thể dễ dàng tạm dừng hầu hết các lần ghi trên Standard nhưng những lần ghi đó sẽ chỉ làm chậm một chút trên Premium. YMMV và bạn nên theo dõi những gì đang diễn ra trong cơ sở dữ liệu của mình để xem bạn có thích những gì bạn thấy không và nếu bạn muốn trả nhiều tiền hơn.
sharptooth

Câu trả lời:


6

Tôi cũng bối rối tương tự khi nhìn vào giá cả cho hai tầng đó. 100 DTU trên chi phí tiêu chuẩn $ 150 / tháng và 125 DTU trên Premium có giá $ 465 / tháng, tôi đã tìm ra điều gì đó khác phải giải thích cho sự chênh lệch đó. Tôi nghĩ rằng dòng này từ https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-dtu#ch rủi-a-service-tier-in-the-dtu-b theo mô hình mua hàng phải giải thích sự khác biệt:

                            | Standard                   | Premium
IO throughput (approximate) | 2.5 IOPS per DTU           | 48 IOPS per DTU
IO latency (approximate)    | 5 ms (read), 10 ms (write) | 2 ms (read/write)

Vì vậy, có vẻ như DTU cao cấp thực sự có giá trị gấp 19 lần so với DTU tiêu chuẩn


1
Tôi tìm thấy thông tin ở trên tại liên kết này docs.microsoft.com/en-us/azure/sql-database/. Hy vọng rằng nó sẽ di chuyển trở lại.
David Yates

Cảm ơn David! Tôi đã cập nhật liên kết trong bình luận, và vâng, hy vọng họ không di chuyển lại :)
UnionP

5

Peformance của cơ sở dữ liệu Azure được biểu thị theo DTUS, có nghĩa là số lượng giao dịch có thể hoàn thành mỗi giây. Ngoài ra, nó cũng giới hạn số lượng bộ nhớ tối đa, cpu, IO cơ sở dữ liệu của bạn sẽ nhận được .. vui lòng xem bên dưới bảng để biết thêm chi tiết và chú ý đến phần yêu cầu phiên ..

nhập mô tả hình ảnh ở đây

Tôi hy vọng hình ảnh trên làm rõ về sự khác biệt giữa các tầng cơ sở dữ liệu khác nhau. Dưới đây là những gì Tài liệu Azure nói khi sử dụng các tầng cơ sở dữ liệu khác nhau ..

nhập mô tả hình ảnh ở đây

Bất cứ khi nào bạn muốn ước tính hiệu suất của cơ sở dữ liệu Azure, bạn sẽ muốn kiểm tra bên dưới DMVS, nơi cung cấp thêm chi tiết về việc sử dụng DTU được thể hiện dưới dạng IO, nhật ký, Bộ nhớ, CPU ..

- DMV này chứa dữ liệu chỉ trong một giờ, nhưng được chụp cứ sau 15 giây

SELECT  
    AVG(avg_cpu_percent) AS 'Average CPU Utilization In Percent', 
    MAX(avg_cpu_percent) AS 'Maximum CPU Utilization In Percent', 
    AVG(avg_data_io_percent) AS 'Average Data IO In Percent', 
    MAX(avg_data_io_percent) AS 'Maximum Data IO In Percent', 
    AVG(avg_log_write_percent) AS 'Average Log Write Utilization In Percent', 
    MAX(avg_log_write_percent) AS 'Maximum Log Write Utilization In Percent', 
    AVG(avg_memory_usage_percent) AS 'Average Memory Usage In Percent', 
    MAX(avg_memory_usage_percent) AS 'Maximum Memory Usage In Percent' 
FROM sys.dm_db_resource_stats; 

- DMV này chứa dữ liệu trong 14 ngày với khoảng thời gian chụp là 5 phút

SELECT start_time, end_time,    
  (SELECT Max(v)    
   FROM (VALUES (avg_cpu_percent), (avg_physical_data_read_percent), (avg_log_write_percent)) AS value(v)) AS [avg_DTU_percent]  
FROM sys.resource_stats 
WHERE database_name = '<your db name>' 
ORDER BY end_time DESC; 

Bất cứ khi nào bạn thấy số liệu DTU luôn ở mức 90%, đó là chỉ số của cổ chai và nó có thể được khắc phục theo cách tương tự, chúng tôi sẽ khắc phục sự cố của chúng tôi trên các máy chủ cũ.

Ví dụ, bạn đang thấy CPU ổn định ở mức 90% trong một khoảng thời gian từ dữ liệu được ghi qua DMV, bạn có thể bắt đầu với việc thu thập các truy vấn gây ra CPU cao, xem chúng có thể được điều chỉnh để tiêu thụ ít cpu hơn không..Khi tất cả những nỗ lực điều chỉnh của bạn đã cạn kiệt, sau đó bạn có thể cần nâng cấp lên cấp cao hơn

Tài liệu tham khảo: https://azure.microsoft.com/en-in/documentation/articles/sql-database-performance-guidance/#monitoring-resource-use-with-sysresourrouats


Tôi đã nhìn thấy bảng này. Nó không giải thích làm thế nào tôi avg_cpu_percentgiảm từ 100 phần trăm xuống 8 phần trăm sau khi chuyển từ S3 sang P2.
sharptooth

Hãy tưởng tượng theo thuật ngữ như trên máy chủ sql Prem có ram 2GB và khi bạn chạy các truy vấn chiếm nhiều bộ nhớ, một số có thể chờ cấp bộ nhớ..như bạn sẽ thấy số liệu bộ nhớ cao mọi lúc. Khi bạn tăng bộ nhớ, bạn sẽ thấy điều này giảm dần
TheGameiswar

Tôi ổn khi thấy nó thấp hơn, nhưng nó đã tăng từ 100 phần trăm đến 8 phần trăm - thấp hơn hơn mười lần.
sharptooth

Chi tiết cập nhật của từng tài nguyên tầng, xem docs.microsoft.com/en-us/azure/sql-database/ chủ
Michael Freidgeim

3

Lần này, lý do là SQL Azure thay đổi ý định sử dụng chỉ mục nào cho truy vấn chạy thường xuyên. SQL Azure đôi khi quyết định rằng việc thay đổi một chỉ mục được sử dụng có thể là một ý tưởng tốt (dựa trên các số liệu được thu thập). Tại thời điểm sự cố được quan sát, cơ chế này thiếu xác thực - một khi truy vấn được chuyển sang chỉ mục khác, công cụ cơ sở dữ liệu sẽ không xác thực có cải tiến thực sự. Không có ý tưởng nếu điều này thay đổi kể từ thời điểm đó. Cách để giải quyết tình huống này là sử dụng WITH INDEXgợi ý.

Cải thiện hiệu suất mà chúng tôi quan sát không phải là do tự thay đổi tầng hiệu suất, ngay khi Standard thay đổi thành Premium, có lẽ đã có sự thay đổi về phần cứng và do đó, số liệu thống kê cơ sở dữ liệu đã bị xóa và công cụ cơ sở dữ liệu lại xem xét lại các kế hoạch truy vấn và khi chúng tôi chuyển sang Premium động cơ chỉ cần thiết lập lại kế hoạch cũ, đó là lý do tại sao chúng tôi đã cải thiện hiệu suất thời gian đó.


1
Để thực hiện chuyển sang một tầng khác trong khi giảm thiểu thời gian chết, Azure về cơ bản sao chép cơ sở dữ liệu sang một máy chủ đang phục vụ loại tải đó và chuyển qua một lần hoàn thành (một lượng nhỏ thời gian chết ở cuối quá trình là khi nó đang hoạt động giao dịch sao chép các bản cập nhật cuối cùng và chuyển đổi). Điều này có thể dẫn đến cập nhật số liệu thống kê mà trong trường hợp của bạn đã giúp trình hoạch định truy vấn thực hiện việc giải thích tốt hơn.
David Spillett

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.