Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22757|Vastaus: 0

[Lähde] Ratkaisee ongelman, että tallennetut proseduurit suoritetaan nopeasti, mutta ohjelmakutsut ovat hitaita

[Kopioi linkki]
Julkaistu 21.5.2018 13.55.48 | | |
Viimeisen kahden päivän aikana olen kohdannut ongelman, joka on melko turhauttava: SQL Server 2012:n kyselyanalysaattorissa suoritetaan noin 120 rivin tallennettu proseduuri,
Nopeus on erittäin ihanteellinen, ja noin 500 datatietuetta voidaan suodattaa ja tallentaa alle sekunnissa.
Kuitenkin, kun C#-ohjelmakoodissa kutsutaan, yhteysaikakatkaisu käynnistyy. Aseta CommandTimeout-arvo 300:aan, ja sen näyttäminen kestää noin 3 minuuttia.
Tarkistin koodin useita kertoja, enkä löytänyt virheitä. Ongelma on edelleen olemassa.

Syyanalyysi:
1. Koska kyselyanalysaattorin suoritusnopeus on nopea ja datamäärä ei ole suuri.
2. Vain ohjelmassa soittaminen on hidasta.
3. Aseta CommandTimeout-parametri, ja tulos näkyy, mutta se vie kauan.

Yhteenvetona voidaan alustavasti todeta, että ongelma on C#-koodissa. Mutta tarkastuksen jälkeen ei tullut mitään hyötyä.

Tarkista tämä tieto Baidusta.
Löysin vihdoin vastaavan tietopostauksen CSDN-foorumilta. Yksi nettikäyttäjistä vastasi: "On mahdollista, että toteutussuunnitelma on vanhentunut",
Se todella herätti minut unessani.

Suorita välittömästi kyselyanalysaattorilla:

Testasin ohjelmaa uudelleen, tällä kertaa se toimi vihdoin. Nopeus on erittäin tyydyttävä.

Syyanalyysi:
Koska tallennetut proseduurit ovat valmiiksi käännettyjä, suoritussuunnitelma luodaan ensimmäisellä suorituksella, ja tätä suoritussuunnitelmaa käytetään myöhemmissä suorituksissa (ellei tallennettua proseduuria ole määritelty uudelleenkäännettäväksi), sen sijaan että suoritussuunnitelma luotaisiin joka kerta kun se suoritetaan.
Kun tallennetun proseduurin objektirakennetta säädetään tai siihen liittyvä data muuttuu merkittävästi, mikä voi johtaa alkuperäisen suunnitelman sopimattomuuteen nykyiseen tilanteeseen (suoritussuunnitelman vanheneminen), tallennettu menettely tulee kääntää uudelleen.

Lopuksi liitä tallennetun proseduurin koodi:







Edellinen:Jaa yksi APP-kampanjasivun koodilähde, mukautuva, erittäin kaunis ja antelias!
Seuraava:C# Avoimen lähdekoodin kehys (uudelleenpainos)
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com