Hasil SQL Besar melalui VPN: Di Mana Baris Menunggu
Hasil SQL besar menunggu di tiga tempat: penimbal pelayan, laluan VPN dan klien. Ukur setiap peringkat sebelum menukar lebar jalur atau menghidupkan pemampatan.
Pertanyaan boleh selesai dalam milisaat dan masih mengambil masa beberapa minit untuk sampai ke komputer riba melalui VPN. Pelayan menulis baris ke dalam penimbal, sambungan membawanya dan klien menggunakannya, dan peringkat ini bertindih dan bukannya berjalan berturutan. Mana-mana satu daripadanya boleh menjadi had. Cari peringkat yang benar-benar menunggu sebelum menukar lebar jalur atau menghidupkan pemampatan.
Tiga Peringkat, Satu Jam Randik
Bahagikan pemasa kepada dua nombor yang berbeza makna: saat baris pertama tersedia dan saat baris terakhir telah digunakan. Grid yang melukis halaman pertama hanya membuktikan pertanyaan telah bermula. Masa hasil lengkap ialah apa yang dialami pengguna apabila mengeksport atau menatal ke hujung.
Catat kedua-dua nombor bersama teks pertanyaan, parameter dan tetapan sambungan. Tanpa konteks itu, perbandingan ialah antara dua kerja berbeza, bukan dua lokasi.
Baca Tunggu Sebelum Rangkaian
SQL Server menulis baris hasil ke dalam penimbal output untuk diambil klien, dan klien yang menggunakan perlahan boleh membuatkan pelayan menunggu pada penghantaran itu. Jenis tunggu ialah ASYNC_NETWORK_IO, dan nota penyelesaian masalah Microsoft menyenaraikan hasil besar dan pemprosesan di pihak klien antara puncanya. Tunggu itu memberitahu laluan penghantaran tersekat, bukan mengapa.
VPN perlahan boleh menyumbang, tetapi klien yang memformat setiap baris, menulis ke fail atau berhenti antara kelompok juga boleh. Nama tunggu ialah penunjuk kepada ukuran seterusnya, bukan keputusan tentang pautan.
SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type = 'ASYNC_NETWORK_IO';
Baca pembilang semasa beban kerja terhad berjalan, bukan selepas sejam melahu, kerana pembilang kumulatif mencampurkan setiap sesi sejak contoh dimulakan. Bandingkan delta sepanjang larian dan bukan jumlah seumur hidup. Delta yang membesar semasa pemindahan menyempitkan soalan kepada penggunaan atau penghantaran.
Letakkan Kedua-dua Klien pada Jam yang Sama
Jalankan beban kerja terhad dari klien berhampiran pangkalan data dan dari klien jauh. Kekalkan pertanyaan, parameter, saiz hasil dan tetapan sambungan supaya sama. Gunakan ukuran yang sama pada kedua-dua belah, kerana masa pelaksanaan pelayan, masa paparan grid dan masa eksport ialah tiga jam berbeza. Membandingkan nombor sebelah pelayan dengan pemasa eksport sebelah klien menghasilkan kesimpulan yang tidak boleh diuji.
Apabila laluan kelihatan bertanggungjawab, minta pemilik rangkaian memantau kehilangan, penghantaran semula dan daya pengeluaran yang dicapai untuk aliran khusus itu semasa pemindahan berjalan. Ujian kelajuan umum mungkin menggunakan laluan, titik akhir atau corak keselarian lain. Permintaan kecil yang berjaya tidak banyak bercakap tentang pemindahan hasil yang berterusan.
Kurangkan Bait Sebelum Menyalahkan Laluan
Penapisan, pengagregatan dan pemilihan hanya lajur yang diperlukan mengurangkan jumlah pemindahan dan kerja yang dilakukan klien pada setiap baris. Kekalkan hasil yang dimaksudkan, kerana laporan mungkin memerlukan perincian yang tiada dalam ringkasan di skrin.
Untuk eksport berulang, lokasi pelaksanaan yang diluluskan berhampiran pangkalan data boleh menulis output yang ditentukan yang kemudian dihantar sekali. Itu mengubah aliran kerja dan kawalan aksesnya, dan ia bukan kebenaran untuk meninggalkan dump tanpa had pada hos kongsi.
Pemampatan bukan pembaikan lalai. Sokongan dan keselamatan bergantung pada protokol dan penggunaan sebenar, dan aliran termampat yang dinyahmampat perlahan oleh klien boleh memburukkan pengalaman. Ukur peringkat dahulu, kemudian pilih perubahan yang disokong untuk peringkat itu.