VPN orqali katta SQL natijasi: satrlar qayerda kutadi
Katta SQL natijasi uch joyda kutadi: server buferlari, VPN yo‘li va mijoz. Tarmoqli kenglikni o‘zgartirish yoki siqishni yoqishdan oldin har bir bosqichni o‘lchang.
So‘rovlar millisekundlarda tugashi mumkin, ammo VPN orqali noutbukka yetib borish uchun daqiqalar kerak bo‘ladi. Server satrlarni buferlarga yozadi, ulanish ularni tashiydi, mijoz ularni iste’mol qiladi va bu bosqichlar ketma-ket emas, bir-birini qoplaydi. Ulardan har biri cheklov bo‘lishi mumkin. Tarmoqli kenglikni o‘zgartirish yoki siqishni yoqishdan oldin haqiqatan kutayotgan bosqichni toping.
Uch bosqich, bitta sekundomer
Taymerni har xil ma’no beruvchi ikki raqamga ajrating: birinchi satr mavjud bo‘lgan lahza va oxirgi satr iste’mol qilingan lahza. Birinchi sahifani chizuvchi jadval faqat so‘rov boshlanganini isbotlaydi. To‘liq natija vaqti foydalanuvchi eksport qilganda yoki oxirigacha aylantirganda boshdan kechiradigan vaqtdir.
Ikkala raqamni so‘rov matni, parametrlar va ulanish sozlamalari bilan birga yozib oling. Bu kontekstsiz taqqoslash ikki xil ish orasida bo‘ladi, ikki joy orasida emas.
Tarmoqdan oldin kutishni o‘qing
SQL Server natija satrlarini mijoz olishi uchun chiqish buferlariga yozadi va sekin iste’mol qiluvchi mijoz serverni shu yuborishda kutishga majbur qilishi mumkin. Kutish turi ASYNC_NETWORK_IO va Microsoftning muammolarni bartaraf etish eslatmasi sabablar qatorida katta natijalar va mijoz tomonidagi ishlov berishni sanaydi. Kutish yuborish yo‘li to‘sib qo‘yilganini aytadi, nima uchun ekanini emas.
Sekin VPN hissa qo‘shishi mumkin, lekin har bir satrni formatlaydigan, faylga yozadigan yoki to‘plamlar orasida to‘xtaydigan mijoz ham hissa qo‘shadi. Kutish nomi keyingi o‘lchovga ko‘rsatkich, ulanish haqida hukm emas.
SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type = 'ASYNC_NETWORK_IO';
Hisoblagichni cheklangan yuklama ishlayotganda o‘qing, bo‘sh soatdan keyin emas, chunki jamlangan hisoblagichlar instansiya ishga tushganidan buyon har bir sessiyani aralashtiradi. Umr bo‘yi jamlama o‘rniga ish davomidagi deltani taqqoslang. Uzatish vaqtida o‘sayotgan delta savolni iste’mol yoki yetkazib berishgacha toraytiradi.
Ikkala mijozni bir soatga qo‘ying
Cheklangan yuklamani ma’lumotlar bazasiga yaqin mijozdan va uzoq mijozdan ishga tushiring. So‘rov, parametrlar, natija hajmi va ulanish sozlamalarini bir xil saqlang. Ikki tomonda bir xil o‘lchovdan foydalaning, chunki serverning bajarish vaqti, jadvalni ko‘rsatish vaqti va eksport vaqti uch xil soatdir. Server tomondagi raqamni mijoz tomondagi eksport taymeri bilan taqqoslash tekshirib bo‘lmaydigan xulosa beradi.
Yo‘l aybdor bo‘lib ko‘rinsa, tarmoq egasidan uzatish davom etayotganda aynan shu oqim uchun yo‘qotish, qayta yuborish va erishilgan o‘tkazuvchanlikni kuzatishni so‘rang. Umumiy tezlik testi boshqa marshrut, oxirgi nuqta yoki parallellik shaklidan foydalanishi mumkin. Kichik muvaffaqiyatli so‘rov barqaror natija uzatish haqida kam gapiradi.
Yo‘lni ayblashdan oldin baytlarni kamaytiring
Filtrlash, jamlash va faqat kerakli ustunlarni tanlash uzatish hajmini va mijozning har bir satr bilan bajaradigan ishini kamaytiradi. Ko‘zlangan natijani saqlang, chunki hisobot ekrandagi xulosada yo‘q tafsilotni talab qilishi mumkin.
Takrorlanadigan eksportlar uchun ma’lumotlar bazasiga yaqin tasdiqlangan bajarish joyi belgilangan chiqishni yozib, keyin uni bir marta yetkazib berishi mumkin. Bu ish jarayonini va uning kirish nazoratini o‘zgartiradi va umumiy xostda cheklanmagan dump qoldirishga ruxsat emas.
Siqish standart tuzatish emas. Qo‘llab-quvvatlash va xavfsizlik haqiqiy protokol va joylashtirishga bog‘liq, mijoz sekin ochadigan siqilgan oqim tajribani yomonlashtirishi mumkin. Avval bosqichni o‘lchang, keyin shu bosqich uchun qo‘llab-quvvatlanadigan o‘zgarishni tanlang.