Suuri SQL-tulos VPN:n yli: missä rivit odottavat
Suuri SQL-tulos odottaa kolmessa paikassa: palvelimen puskureissa, VPN-reitillä ja asiakkaassa. Mittaa jokainen vaihe ennen kuin muutat kaistanleveyttä tai otat pakkauksen käyttöön.
Kyselyt voivat valmistua millisekunneissa ja viedä silti minuutteja saapua kannettavaan tietokoneeseen VPN:n yli. Palvelin kirjoittaa rivit puskureihin, yhteys kuljettaa ne ja asiakas kuluttaa ne, ja nämä vaiheet limittyvät sen sijaan että ne suoritettaisiin peräkkäin. Mikä tahansa niistä voi muodostua rajaksi. Selvitä vaihe, joka todella odottaa, ennen kuin muutat kaistanleveyttä tai otat pakkauksen käyttöön.
Kolme vaihetta, yksi sekuntikello
Jaa ajastin kahteen eri merkitystä kantavaan lukuun: hetkeen, jolloin ensimmäinen rivi on saatavilla, ja hetkeen, jolloin viimeinen rivi on kulutettu. Ruudukko, joka maalaa ensimmäisen sivun, todistaa vain sen, että kysely alkoi. Koko tuloksen aika on se, mitä käyttäjä kokee viedessään tai vierittäessään loppuun.
Kirjaa molemmat luvut kyselyn tekstin, parametrien ja yhteysasetusten kanssa. Ilman tätä kontekstia vertailu on kahden eri työn, ei kahden sijainnin välillä.
Lue odotus ennen verkkoa
SQL Server kirjoittaa tulosrivit tulostepuskureihin, joista asiakas ne hakee, ja hitaasti kuluttava asiakas voi saada palvelimen odottamaan lähetystä. Odotuksen tyyppi on ASYNC_NETWORK_IO, ja Microsoftin vianmääritysmuistiinpano luettelee syiksi suuret tulokset ja asiakaspään käsittelyn. Odotus kertoo, että lähetyspolku on estetty, ei sitä miksi.
Hidas VPN voi vaikuttaa, mutta niin voi asiakas, joka muotoilee jokaisen rivin, kirjoittaa tiedostoon tai pitää taukoja erien välillä. Odotuksen nimi on osoitin seuraavaan mittaukseen, ei tuomio yhteydestä.
SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats
WHERE wait_type = 'ASYNC_NETWORK_IO';
Lue laskuria rajatun työkuorman aikana, älä tyhjän tunnin jälkeen, koska kumulatiiviset laskurit sekoittavat jokaisen istunnon instanssin käynnistymisestä lähtien. Vertaa erotusta ajon aikana, älä koko elinkaaren summaa. Siirron aikana kasvava erotus rajaa kysymyksen kulutukseen tai toimitukseen.
Aseta molemmat asiakkaat samaan kelloon
Aja rajattu työkuorma tietokannan lähellä olevalta asiakkaalta ja etäasiakkaalta. Pidä kysely, parametrit, tuloksen koko ja yhteysasetukset samoina. Käytä samaa mittausta molemmilla puolilla, koska palvelimen suoritusaika, ruudukon näyttöaika ja vientiaika ovat kolme eri kelloa. Palvelinpuolen luvun vertaaminen asiakaspuolen vientiajastimeen tuottaa johtopäätöksen, jota ei voi testata.
Kun polku näyttää vastuulliselta, pyydä verkon omistajaa seuraamaan häviöitä, uudelleenlähetyksiä ja saavutettua siirtonopeutta juuri sillä virralla siirron aikana. Yleinen nopeustesti voi käyttää toista reittiä, päätepistettä tai rinnakkaisuusmallia. Pieni onnistunut pyyntö kertoo vähän pitkäkestoisesta tulosiirrosta.
Leikkaa tavuja ennen kuin syytät polkua
Suodatus, aggregointi ja vain tarvittavien sarakkeiden valinta vähentävät sekä siirtomäärää että työtä, jonka asiakas tekee kullakin rivillä. Säilytä aiottu tulos, koska raportti voi tarvita yksityiskohtaa, jota näytön yhteenvedossa ei ole.
Toistettavissa vienneissä tietokannan lähellä oleva hyväksytty suorituspaikka voi kirjoittaa määritellyn tulosteen, joka toimitetaan sitten kerran. Se muuttaa työnkulkua ja sen käyttöoikeuksien valvontaa, eikä se ole lupa jättää rajoittamatonta dumppia jaetulle isännälle.
Pakkaus ei ole oletuskorjaus. Tuki ja turvallisuus riippuvat todellisesta protokollasta ja käyttöönotosta, ja pakattu virta, jonka asiakas purkaa hitaasti, voi huonontaa kokemusta. Mittaa ensin vaihe ja valitse sitten tuettu muutos sille vaiheelle.