Anda pernah melihat tipe menunggu ini sebelumnya, bukan? Yah, itu pasti tipe menunggu yang menyebabkan banyak kebingungan. Fokus langsung umumnya diberikan pada kata "JARINGAN" tetapi lebih sering daripada tidak itu tidak ada hubungannya dengan jaringan!
Jenis tunggu ASYNC_NETWORK_IO biasanya akan menghasilkan dua jenis gejala, yang pertama adalah beban kerja sesi menunggu aplikasi klien yang sesuai untuk mengakui/memproses kumpulan data yang diberikan dan memberi tahu SQL Server bahwa itu siap untuk memproses/mengakui lebih banyak data. Gejala kedua adalah bahwa mungkin ada masalah kinerja di jaringan antara aplikasi dan contoh database. Di balik layar, SQL Server menyimpan data dalam buffer output sampai pengakuan diterima dari klien menentukan apakah konsumsi data menyelesaikan. ASYNC_NETWORK_IO adalah tanda bahwa aplikasi kurang efisien dalam membaca data yang diperlukan dari database backendnya. Jaringan yang mendasarinya mungkin juga mengalami masalah yang dapat menghasilkan waktu tunggu yang lebih lama saat data diproses, dan sinyal dikirim kembali dari klien ke server.
Kemungkinan penyebab penantian ini meliputi:
- Kode aplikasi tidak mengambil data dengan benar
- Set data besar diminta oleh klien
- Pemfilteran data yang berlebihan terjadi di sisi klien atau aplikasi
- Perangkat jaringan yang dikonfigurasi dengan buruk seperti kartu, sakelar, dll.
Pada tingkat tinggi, DBA mungkin ingin memeriksa hal-hal berikut:
- Tinjau kode aplikasi dan pastikan aplikasi membaca data dengan benar/efisien. Misalnya, apakah aplikasi Anda menarik kembali sejumlah besar baris hanya untuk memproses satu baris dalam satu waktu?
- Pemfilteran data yang tidak perlu di sisi klien/aplikasi? Batasi baris.
Jika item di atas keluar, tetapi masalah dengan ASYNC_NETWORK_IO tetap ada, ini mungkin karena jaringan. Berikut adalah beberapa hal yang dapat Anda lihat:
- Periksa link komunikasi jaringan antara aplikasi dan database backend instance dan verifikasi bandwidth.
- Gunakan sys.dm_io_virtual_file_stats untuk menguji jaringan untuk latensi umum karena beban atau jarak
- Periksa konfigurasi NIC pada server database untuk memastikan tidak ada kesalahan dan/atau pengaturan yang hilang.
ASYNC_NETWORK_IO WAIT TYPE mungkin memang merupakan masalah terkait jaringan, tetapi sering kali mungkin karena aplikasi klien yang tidak memproses datanya secara efisien. Jika yang terakhir memang demikian, maka ini adalah kesempatan bagi DBAS dan Pengembang untuk bekerja sama untuk memahami apa yang benar-benar dibutuhkan aplikasi demi kepentingan terbaik kinerja database back-end. Memastikan bahwa sebagian besar pemfilteran data dilakukan dalam SQL Server adalah praktik terbaik yang dapat dicapai melalui tampilan atau lebih spesifik di mana kondisi dalam sintaks transaksi.
Meskipun ada banyak cara untuk memantau dan mengukur ASYNC_NETWORK_IO menunggu melalui penggunaan DMV katalog dan Acara yang Diperpanjang di SQL Server, kami mendorong komunitas kami dari SQL Server DBA untuk melihat Quest's Spotlight Cloud yang memberikan efisiensi dalam menentukan akar penyebab jenis menunggu konsumsi selama periode waktu historis.