Firwat eng geschwätzeg SQL-App iwwer eng VPN kräicht a wat een bündele soll
En Ecran, dee honnert ofhängeg Ufroe schéckt, bezuelt de Retour honnert Mol. Zielt d'Waarden, bündelt déi onofhängeg, a réckelt dann d'Ausféierung.
E Formulaire, deen an engem lokalen Netz a manner wéi enger Sekonn opgeet, brauch iwwer eng VPN fënnef Sekonnen, während eng Dateikopie op därselwechter Leitung mat voller Geschwindegkeet leeft. Den Ënnerscheed ass net d'Bandbreed. De Formulaire waart op eng Rei Äntwerten a bezuelt op all Schratt de ganzen Retour, während d'Dateikopie d'Byten duerchgehend am Floss hält. Zielt déi Waarden, ier Dir d'Zougangsleitung upackt.
D'Symptom ass en Ecran, net eng Ufro
All Ufro op deem Ecran kann séier sinn an den Ecran kann trotzdem lues sinn, well d'Total d'Summ vun de Waarden ass an net d'Summ vun den Ausféierungszäiten. Eng Ausso, déi an zwou Millisekonne leeft, kascht nach ëmmer e ganze Retour, wann de Client d'Resultat muss kréien, ier hien déi nächst schéckt. Op engem Wee mat véierzeg Millisekonne Latenz summéiere sech honnert ofhängeg Ufroe bis op ongeféier véier Sekonnen, ier iergendeng Render-Aarbecht geschitt. Dës Arithmetik ass e Modell vum Warden, keen Benchmark vun Ärer Leitung.
Dofir gesäit en Speedtest onschëlleg aus. Grouss Transferte moossen den Duerchfloss, e geschwätzege Formulaire moosst d'Latenz, an eng VPN kann an engem exzellent sinn an am aneren normal bleiwen. Den Ecran diagnostiquéiere heescht dofir den Ecran moossen an net d'Leitung.
Hält d'Enn-zu-Enn-Zäit vun enger Benotzeraktioun fest, ier Dir eppes ännert. Déi Zuel ass dee eenzegen Ausgangspunkt, deen Iech ka soen, ob eng spéider Korrektur funktionéiert huet.
Zielt déi sequenziell Waarden an enger Benotzeraktioun
Instrumentéiert de Client amplaz ze roden. An psql dréckt \timing on d'verlafend Zäit vun all Ausso aus, an EXPLAIN (ANALYZE, BUFFERS) weist, wéi vill vun där Zäit de Server tatsächlech an der Aarbecht verbruecht huet.
Den Ecart tëscht dësen zwou Zuelen ass Ären Netz- a Client-Overhead. Wann eng Ausso an zwou Millisekonne leeft an de Client sechzeg festhält, sinn déi reschtlech aachtfofzeg Rees a lokal Veraarbechtung, an keen Index hëlt se ewech. Widderhëlt dëse Verglach fir all Ausso, déi den Ecran schéckt, a summelt d'Ecarten an net d'Ausféierungszäiten.
Schreift d'Resultat als Zuel vu sequenzielle Waarden op. Dat ass déi Quantitéit, déi déi nächst zwou Sektioune kënnen reduzéieren, an et ass eng Zuel, iwwer déi een mat Beweiser diskutéiere kann.
Bündelt déi onofhängeg Ufroe, behält déi ofhängeg
Zwou Aussoen, déi net d'Resultat vuneneen liesen, kënne zesummen reesen an eng Kéier gesammelt ginn, wat zwou Waarden zu enger mécht. Zwou Aussoen, wou déi zweet de Wäert vun der éischter brauch, kënnen dat net, well d'Ofhängegkeet real ass a Bündelen ännere géif, wat de Programm mécht. Sortéiert d'Ufroe virum Ëmschreiwen an déi zwou Kéip, an d'Gréisst vun all Kéip seet Iech, wat méiglech ass.
Set-baséiert Aarbecht hëlt Waarden méi grëndlech ewech wéi Bündelen. Eng eenzeg Ufro, déi d'Zeile zréckgëtt, déi eng Schleif eenzel ofgeruff huet, eliminéiert d'Schleif souwéi d'Retouren. Kuckt d'éischt no der Schleif, well se meeschtens de gréissere Gewënn an déi méi einfach Ännerung fir ze iwwerpréiwen ass.
E Bündel muss nach ëmmer d'Feelerbehandlung an d'Transaktiounsgrenzen erhalen. Onverbonnen Aussoen an engem eenzegen String ze konkatenéieren ass keng sécher Optimiséierung, an e Bündel, deen eng feelgeschloen Ausso hannert enger erfollegräicher Soumission verstoppt, ass schléchter wéi d'Waarden, déi et gespuert huet.
Benotzt Verbindungen nei, ier Dir Bandbreed kaaft
Eng nei Verbindung kascht Nummauffléisung, en TCP-Handshake, TLS-Verhandlung an Authentifikatioun, an op engem Wee mat héijer Latenz ass jiddwereen dovun en anere Retour, ier déi éischt Ufro leeft. Verbindungspools existéieren, fir dës Käschten eemol pro Prozess ze bezuelen an net eemol pro Uruff.
An ADO.NET gëtt eng gepoolte Verbindung beim Zoumaache oder Dispose fir d'Neibenotzung zréckginn, amplaz eng nei physesch ze öffnen, dofir ass de Muster, dee wéi e Leck ausgesäit, dacks déi richteg Benotzung. Iwwerpréift, ob de Pool wierklech an Benotzung ass, amplaz et unzehuelen: logt d'Schafe vu physesche Verbindungen oder kuckt déi Sessionzuel um Server, während den Ecran leeft. D'SQL-Performanzguidance seet dat selwecht iwwer d'Reduzéiere vun Retouren an d'Bündele vu dacks ad hoc Ufroen, mat servicespezifesche Beispiller, déi Dir op Är eegen Ëmsetzung ëmsetze sollt.
Pooling hëlt d'Setup-Käschten ewech a léisst d'sequenziell Ufro-Waarden onberéiert. Et ass eng Viraussetzung fir eng propper Moossnam a keng Korrektur fir sech selwer.
Wéigt of, d'Ausféierung méi no bei den Daten ze réckelen
D'Applikatioun no bei der Datebank lafe loossen ersetzt vill remote Datebank-Austausch duerch eng eenzeg Fern-Display-Session. Fir eng geschwätzeg Belaaschtung kann dat eng grouss Ännerung sinn, an et ass souvill eng operationell Ännerung wéi eng Performanz-Ännerung: Sessionmanagement, Zougriffskontrolle, Softwaredeployment a Benotzererfarung réckelen all mat der Applikatioun.
Moosst déi tatsächlech Schnëttstell an d'Daten, déi se iwwerdréit, ier Dir unhëlt, datt eng Richtung méi séier ass. Eng Remote-Desktop-Session réckelt Pixel, an en Ecran mat dichter Grafik kann iwwer dee selwechte Wee méi schlecht performen wéi d'Ufroen, déi en ersat huet, besonnesch wann de Client duerchgehend nei zeechen.
Widderhëlt dann déi originell Aktioun a vergläicht dräi Zuelen: sequenziell Waarden, Resultatvolumen an Enn-zu-Enn-Fäerdegstellungszäit. Eng Verbesserung, déi déi gemoossen Benotzeraufgab ännert an dobäi Datekorrektheet an Zougriffspolitik erhält, ass déi, déi et wäert ass ze behalen.