Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 22757|Atsakyti: 0

[Šaltinis] Išsprendžia problemą, kad saugomos procedūros vykdomos greitai, bet programos iškvietimai lėti

[Kopijuoti nuorodą]
Paskelbta 2018-05-21 13:55:48 | | |
Per pastarąsias dvi dienas susidūriau su problema, kuri yra gana varginanti, saugoma maždaug 120 eilučių procedūra vykdoma SQL Server 2012 užklausų analizatoriuje,
Greitis yra labai idealus, o apie 500 duomenų įrašų galima filtruoti ir užfiksuoti greičiau nei per 1 sekundę.
Tačiau iškviečiant C# programos kodą, paraginamas ryšio skirtasis laikas. Nustatykite "CommandTimeout" į 300 ir tai užtruks apie 3 minutes.
Kelis kartus patikrinau kodą ir neradau klaidų. Problema išlieka.

Priežasties analizė:
1. Kadangi užklausų analizatoriaus vykdymo greitis yra greitas, o duomenų kiekis nėra didelis.
2. Tik skambutis programoje yra lėtas.
3. Nustatykite parametrą CommandTimeout ir rezultatas gali būti rodomas, tačiau tai užtruks ilgai.

Apibendrinant daroma preliminari išvada, kad problema slypi C# kode. Tačiau po patikrinimo nebuvo jokios naudos.

Patikrinkite šią informaciją Baidu.
Pagaliau radau panašų informacinį įrašą CSDN forume. Vienas iš internautų atsakyme sakė: "Gali būti, kad įgyvendinimo planas pasibaigė",
Tai tikrai pažadino mane sapne.

Nedelsdami atlikite užklausų analizatorių:

Dar kartą išbandžius programą, šį kartą ji pagaliau suveikė. Greitis yra labai patenkinamas.

Priežasties analizė:
Kadangi saugomos procedūros yra iš anksto kompiliuojamos, vykdymo planas generuojamas pirmojo vykdymo metu, ir šis vykdymo planas naudojamas vėlesniems vykdymams (nebent saugoma procedūra nurodyta perkompiliuoti), o ne generuoti vykdymo planą kiekvieną kartą, kai ji vykdoma.
Kai objekto struktūra, susijusi su saugoma procedūra, yra koreguojama arba susiję duomenys labai pasikeičia, todėl pradinis planas gali būti netinkamas dabartinei situacijai (vykdymo plano galiojimo laikas), saugoma procedūra turi būti kompiliuojama iš naujo.

Galiausiai pridėkite saugomos procedūros kodą:







Ankstesnis:Pasidalinkite vienu APP reklamos puslapio kodo šaltiniu, prisitaikančiu, labai gražiu ir dosniu!
Kitą:C# atvirojo kodo sistema (pakartotinis spausdinimas)
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com