Dari rantai komentar, sepertinya Anda mengartikan ASYNC_NETWORK_IO
menunggu untuk berarti bahwa masalahnya terkait dengan jaringan. (Biasanya) tidak.
Seperti @MartinSmith mengisyaratkan (dua kali) penjelasan yang paling mungkin untuk itu adalah SSMS atau aplikasi yang Anda gunakan tidak mengkonsumsi hasil secepat SQL Server melayani mereka. Ikuti salah satu metode yang disarankan untuk menghapus konsumsi baris dari pengukuran Anda dan Anda akan mendapatkan gambar (r) sebenarnya dari throughput IO maksimum:
Jika Anda belum melakukannya, Anda harus DBCC DROPCLEANBUFFERS
memastikan bahwa data benar-benar dibaca dari disk daripada buffer cache. Peringatan biasa "saat tes saja, jangan lakukan ini di lingkungan aktif yang aktif" dll berlaku.
Menghormati beberapa komentar Anda yang lain:
Saat menjalankan kueri yang mengembalikan 9 juta baris penggunaan CPU akan tetap sekitar 13% dengan 9% disebabkan oleh sqlserver ... bukankah mengembalikan hasil lebih cepat dari 3 menit jika semua data dalam RAM?
Apa sebenarnya yang kami uji di sini, bagaimana dan mengapa? Jika permintaan 9 juta baris Anda adalah selain dari SELECT * FROM dbo.SomeTable
maka ada 1001 faktor yang ikut dimainkan, selain hanya throughput IO mentah.
Anda Intel i7-3820 adalah prosesor 4-core. Jika kueri pengujian Anda tidak menghasilkan rencana paralel, saya akan terkejut jika Anda dapat menggunakan lebih dari 20% pemanfaatan CPU dari sistem.
3 menit untuk mengembalikan 9 juta baris sangat mencurigakan dan menyarankan kami tidak mendapatkan gambaran lengkap tentang pengujian Anda. Dugaan saya adalah ini adalah kasus rencana kueri sub-optimal (non-paralel), diisi penuh dengan loop operator menarik jutaan baris yaitu bukan hanya satu tabel SELECT
untuk memverifikasi konsumsi IO.
Saya menyarankan:
SELECT *
untuk menguji hanya IO melalui SQL Server.
- Pertanyaan baru dengan rencana eksekusi permintaan Anda jika Anda ingin menggali mengapa itu tidak memenuhi IO.