Dalam melihat daftar prosedur tersimpan yang membutuhkan waktu lama untuk dieksekusi, salah satu yang paling menyebabkan menunggu. Namun, sebagian besar dari penantian itu (81%) adalah ASYNC_NETWORK_IO dan saya tahu mengapa: prosedur tersimpan mentransfer sekitar 400 MB informasi.
Dalam dokumentasi, itu menyatakan bahwa penyebab ASYNC_NETWORK_IO adalah bahwa klien tidak dapat mengikuti banjir data dan itu mungkin benar. Saya tidak yakin bagaimana membuat klien mengikuti karena yang dilakukannya hanyalah memanggil prosedur yang tersimpan melalui ADO.NET dan kemudian hanya memproses dataset.
Jadi, mengingat informasi ini, haruskah saya khawatir tentang jenis tunggu ASYNC_NETWORK_IO untuk prosedur ini? Apakah ini sebenarnya berpengaruh pada kinerja server?
Informasi tambahan:
- Saya menggunakan paket layanan 2 dari SQL Server 2005.
- Aplikasi klien ada di kotak yang sama dengan SQL Server (saya tahu, saya tahu ... tapi saya tidak bisa berbuat apa-apa).
Jawaban:
Seperti yang Anda katakan, tipe tunggu ini menunjukkan bahwa aplikasi tidak mengikuti SQL Server. Sekarang maksudnya adalah, SQL Server tidak dapat mengirim data melalui jaringan secepat yang diinginkan.
Ada dua penyebab mendasar:
Jika aplikasi itu sendiri terlalu lambat tidak akan ada atau tidak ada dampak signifikan pada kinerja permintaan lainnya. Jika di sisi lain pipa terlalu kecil, permintaan lain tidak dapat mengirim hasilnya juga dan harus menunggu.
Namun dalam kasus terakhir Anda akan memiliki semua koneksi menunggu di ASYNC_NETWORK_IO. Anda harus bisa melihat dampak itu dengan jelas.
sumber
var dataSet = new DataSet();
var da = new SqlDataAdapter(command);
da.Fill(dataSet);
Jadi saya tidak yakin apa yang sebenarnya bisa lambat.