|
|
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)
|