Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22757|Svare: 0

[Kilde] Løser problemet med at lagrede prosedyrer utføres raskt, men programkall er trege

[Kopier lenke]
Publisert på 21.05.2018 13:55:48 | | |
De siste to dagene har jeg støtt på et problem som er ganske frustrerende, en lagret prosedyre på omtrent 120 linjer kjøres i spørringsanalysatoren til SQL Server 2012.
Hastigheten er svært ideell, og omtrent 500 dataposter kan filtreres og fanges opp på under 1 sekund.
Men når den kalles i C#-programkoden, blir tilkoblingstidsavbruddet bedt om. Sett CommandTimeout til 300, og det vil ta omtrent 3 minutter å vise den.
Jeg sjekket koden flere ganger og fant ingen feil. Problemet gjenstår.

Årsaksanalyse:
1. Fordi kjørehastigheten i spørringsanalysatoren er høy og datamengden ikke er stor.
2. Bare det å ringe inn programmet er tregt.
3. Sett CommandTimeout-parameteren, og resultatet kan vises, men det vil ta lang tid.

Oppsummert konkluderes det foreløpig at problemet ligger i C#-koden. Men det var ingen gevinst etter inspeksjonen.

Sjekk denne informasjonen på Baidu.
Fant endelig et lignende informasjonsinnlegg på CSDN-forumet. En av nettbrukerne svarte i svaret: «Det er mulig at gjennomføringsplanen har utløpt».
Det vekket meg virkelig i drømmen.

Utfør umiddelbart på spørringsanalysatoren:

Da jeg testet programmet igjen, fungerte det endelig denne gangen. Hastigheten er svært tilfredsstillende.

Årsaksanalyse:
Siden lagrede prosedyrer er forhåndskompilert, genereres en utførelsesplan ved første utførelse, og denne utførelsesplanen brukes ved påfølgende utførelser (med mindre den lagrede prosedyren er spesifisert for å kompileres på nytt), i stedet for å generere en utførelsesplan hver gang den kjøres.
Når objektstrukturen som er involvert i den lagrede prosedyren justeres, eller de relaterte dataene endres betydelig, noe som kan gjøre den opprinnelige planen uegnet for dagens status quo (utløpsplanutløp), bør den lagrede prosedyren kompileres på nytt.

Til slutt, legg ved koden for den lagrede prosedyren:







Foregående:Del en enkelt APP-kampanjesidekode som kilde, adaptiv, veldig vakker og generøs!
Neste:C# Open Source-rammeverk (Gjenutgivelse)
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com