Kueri dapat selesai dalam milidetik dan tetap butuh menit untuk mencapai laptop melalui VPN. Server menulis baris ke buffer, koneksi membawanya, dan klien mengonsumsinya, dan tahap-tahap itu saling tumpang tindih alih-alih berjalan berurutan. Salah satunya bisa menjadi batas. Temukan tahap yang benar-benar menunggu sebelum mengubah bandwidth atau mengaktifkan kompresi.

Tiga Tahap, Satu Stopwatch

Pisahkan pengatur waktu menjadi dua angka yang berbeda arti: saat baris pertama tersedia dan saat baris terakhir selesai dikonsumsi. Grid yang melukis halaman pertama hanya membuktikan bahwa kueri sudah dimulai. Waktu hasil lengkap adalah yang dialami pengguna saat mengekspor atau menggulir sampai akhir.

Catat kedua angka bersama teks kueri, parameter, dan pengaturan koneksi. Tanpa konteks itu, perbandingannya adalah antara dua pekerjaan berbeda, bukan dua lokasi.

Baca Tunggu Sebelum Jaringan

SQL Server menulis baris hasil ke buffer keluaran untuk diambil klien, dan klien yang mengonsumsi lambat dapat membuat server menunggu pada pengiriman itu. Jenis tunggunya adalah ASYNC_NETWORK_IO, dan catatan pemecahan masalah Microsoft mencantumkan hasil besar dan pemrosesan di sisi klien di antara penyebabnya. Tunggu itu memberi tahu bahwa jalur pengiriman terblokir, bukan mengapa.

VPN lambat dapat berkontribusi, tetapi klien yang memformat setiap baris, menulis ke file, atau berhenti di antara batch juga bisa. Nama tunggu adalah penunjuk ke pengukuran berikutnya, bukan putusan tentang tautan.

SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type = 'ASYNC_NETWORK_IO';

Baca penghitung saat beban kerja terbatas berjalan, bukan setelah satu jam menganggur, karena penghitung kumulatif mencampur setiap sesi sejak instans dimulai. Bandingkan delta selama proses berjalan, bukan total seumur hidup. Delta yang tumbuh selama transfer mempersempit pertanyaan ke konsumsi atau pengiriman.

Letakkan Kedua Klien pada Jam yang Sama

Jalankan beban kerja terbatas dari klien dekat basis data dan dari klien jarak jauh. Pertahankan kueri, parameter, ukuran hasil, dan pengaturan koneksi identik. Gunakan pengukuran yang sama di kedua sisi, karena waktu eksekusi server, waktu tampilan grid, dan waktu ekspor adalah tiga jam berbeda. Membandingkan angka sisi server dengan pengatur waktu ekspor sisi klien menghasilkan kesimpulan yang tidak dapat diuji.

Ketika jalur tampak bertanggung jawab, minta pemilik jaringan memantau kehilangan, transmisi ulang, dan throughput yang dicapai untuk aliran spesifik itu selama transfer berjalan. Uji kecepatan umum mungkin memakai rute, titik akhir, atau pola konkurensi lain. Permintaan kecil yang berhasil tidak banyak bicara tentang transfer hasil yang berkelanjutan.

Kurangi Byte Sebelum Menyalahkan Jalur

Pemfilteran, agregasi, dan memilih hanya kolom yang diperlukan mengurangi volume transfer dan pekerjaan yang dilakukan klien pada setiap baris. Pertahankan hasil yang dimaksud, karena laporan mungkin memerlukan detail yang tidak dimiliki ringkasan di layar.

Untuk ekspor berulang, lokasi eksekusi yang disetujui dekat basis data dapat menulis keluaran terdefinisi yang kemudian dikirim sekali. Itu mengubah alur kerja dan kontrol aksesnya, dan bukan izin untuk meninggalkan dump tanpa batas di host bersama.

Kompresi bukan perbaikan bawaan. Dukungan dan keamanan bergantung pada protokol dan penerapan sebenarnya, dan aliran terkompresi yang didekompresi klien dengan lambat dapat memperburuk pengalaman. Ukur tahapnya dulu, lalu pilih perubahan yang didukung untuk tahap itu.

Artikel terkait