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

Điều gì cần làm cho kiểu chờ ASYNC NETWORK IO?

Bạn đã từng thấy kiểu chờ đợi này trước đây, phải không? Chà, nó chắc chắn là một kiểu chờ đợi đã gây ra rất nhiều nhầm lẫn. Trọng tâm trước mắt thường được dành cho từ “NETWORK” nhưng nhiều khi nó không liên quan gì đến mạng!
Kiểu chờ ASYNC_NETWORK_IO thường sẽ mang lại hai loại hiện tượng, khối lượng công việc đầu tiên là phiên đang chờ ứng dụng khách tương ứng xác nhận / xử lý một tập hợp dữ liệu nhất định và cho SQL Server biết nó đã sẵn sàng xử lý / xác nhận thêm dữ liệu. Dấu hiệu thứ hai là có thể có sự cố hiệu suất trong mạng giữa phiên bản ứng dụng và cơ sở dữ liệu. hoàn thành. ASYNC_NETWORK_IO là một dấu hiệu cho thấy ứng dụng thiếu hiệu quả trong việc đọc dữ liệu mà nó yêu cầu từ cơ sở dữ liệu phụ trợ của nó. Mạng bên dưới cũng có thể có các vấn đề có thể tạo ra thời gian chờ lâu hơn trong khi dữ liệu được xử lý và các tín hiệu đang được gửi trở lại từ máy khách đến máy chủ.

Nguyên nhân có thể cho sự chờ đợi này bao gồm:

  • Mã ứng dụng không truy xuất dữ liệu chính xác
  • Khách hàng yêu cầu tập dữ liệu lớn
  • Quá trình lọc dữ liệu xảy ra ở phía máy khách hoặc ứng dụng
  • Các thiết bị mạng được định cấu hình kém như thẻ, thiết bị chuyển mạch, v.v.

Ở cấp độ cao, một DBA có thể muốn kiểm tra những điều sau:

  • Xem lại mã ứng dụng và đảm bảo ứng dụng đang đọc dữ liệu một cách chính xác / hiệu quả. Ví dụ:ứng dụng của bạn có đang kéo lại một số lượng lớn các hàng chỉ để xử lý một hàng tại một thời điểm không?
  • Lọc dữ liệu không cần thiết ở phía máy khách / ứng dụng? Giới hạn các hàng.

Nếu các mục ở trên được kiểm tra, nhưng vấn đề với ASYNC_NETWORK_IO vẫn còn, thì điều này có thể là do mạng. Dưới đây là một số điều bạn có thể xem xét:

  • Kiểm tra liên kết giao tiếp mạng giữa ứng dụng và phiên bản cơ sở dữ liệu phụ trợ và xác minh băng thông.
  • Sử dụng sys.dm_io_virtual_file_stats để kiểm tra mạng về độ trễ chung do tải hoặc khoảng cách
  • Kiểm tra cấu hình NIC trên máy chủ cơ sở dữ liệu để đảm bảo không có lỗi và / hoặc cài đặt nào bị thiếu.

LOẠI ASYNC_NETWORK_IO WAIT thực sự có thể là một vấn đề liên quan đến mạng, nhưng thường có thể là do ứng dụng khách không xử lý dữ liệu của nó một cách hiệu quả. Nếu trường hợp thứ hai thực sự là như vậy, thì đây là cơ hội để DBAS và Nhà phát triển làm việc cùng nhau để hiểu ứng dụng thực sự cần gì vì lợi ích tốt nhất cho hiệu suất của cơ sở dữ liệu phía sau. Đảm bảo rằng hầu hết việc lọc dữ liệu được thực hiện trong SQL Server là phương pháp hay nhất có thể đạt được thông qua các dạng xem hoặc cụ thể hơn khi có các điều kiện trong cú pháp giao dịch.

Mặc dù có nhiều cách để theo dõi và đo lường thời gian chờ ASYNC_NETWORK_IO thông qua việc sử dụng các DMV được lập danh mục và Sự kiện mở rộng trong SQL Server, chúng tôi khuyến khích cộng đồng DBA SQL Server của chúng tôi xem xét Đám mây Spotlight của Quest để mang lại hiệu quả trong việc xác định nguyên nhân gốc rễ của kiểu chờ tiêu dùng trong một khoảng thời gian lịch sử.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liệt kê các truy vấn đang chạy trên SQL Server

  2. Làm thế nào để đối phó với các tên cột SQL trông giống như các từ khóa SQL?

  3. Tập lệnh để lưu dữ liệu varbinary vào đĩa

  4. FLOOR () Ví dụ trong SQL Server

  5. Cửa hàng truy vấn SQL Server