Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ĐẶT SỐ KHOẢN BẬT có thực sự tạo ra sự khác biệt về hiệu suất nhiều như vậy không

Có những trường hợp bắt buộc phải BẬT TÀI KHOẢN. Khi thiết kế tầng giữa hiệu suất cao dựa trên xử lý không đồng bộ tận dụng nhóm luồng thông qua các phương thức BeginExecuteXXX của SqlClient, có một vấn đề rất nghiêm trọng với số lượng hàng. Các phương thức BeginExecute hoàn tất ngay sau lần đầu tiên gói phản hồi được trả lại bởi máy chủ. Nhưng khi một EndExecuteXXX được gọi, điều này sẽ hoàn thành đối với các yêu cầu không phải truy vấn khi cuộc gọi hoàn tất. Mỗi phản hồi số lượng hàng là một phản hồi. Khi xử lý các quy trình phức tạp thậm chí ở mức độ vừa phải, số hàng đầu tiên có thể quay trở lại sau 5-10 mili giây, trong khi cuộc gọi hoàn tất trong 300-500 mili giây. Thay vì yêu cầu không đồng bộ đã gửi gọi lại sau 500 mili giây, nó sẽ gọi lại sau 5 mili giây và sau đó gọi lại khối trong EndExecuteXXX trong 495 mili giây. Kết quả là các cuộc gọi không đồng bộ hoàn thành sớm và chặn một luồng khỏi nhóm luồng trong các cuộc gọi EndExecuteNonQuery. Điều này dẫn đến chết đói ThreadPool. Tôi đã thấy các hệ thống hiệu suất cao cải thiện thông lượng từ hàng trăm cuộc gọi mỗi giây lên hàng nghìn cuộc gọi mỗi giây chỉ bằng cách thêm ĐẶT SỐ BẬT, trong các tình huống cụ thể.

Cho rằng đối với các cuộc gọi không đồng bộ ở cấp độ trung bình xử lý quy mô cao / thông lượng cao là cách duy nhất để thực hiện, NOCOUNT là một yêu cầu bắt buộc khá nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn DateTime chỉ vào năm trong SQL Server

  2. Chuyển đổi ‘datetime’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)

  3. Khung thực thể và quan hệ (1 đến nhiều) - (nhiều đến 1) (1 - * * - 1)

  4. Công cụ miễn phí để so sánh hai Cơ sở dữ liệu SQL Server là gì?

  5. Gán kết quả của sql động cho biến