Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 22757|Atbildi: 0

[Avots] Atrisina problēmu, ka saglabātās procedūras tiek izpildītas ātri, bet programmas izsaukumi ir lēni

[Kopēt saiti]
Publicēts 21.05.2018 13:55:48 | | |
Pēdējo divu dienu laikā esmu saskāries ar problēmu, kas ir diezgan nomākta, SQL Server 2012 vaicājumu analizatorā tiek izpildīta aptuveni 120 rindu saglabāta procedūra,
Ātrums ir ļoti ideāls, un aptuveni 500 datu ierakstus var filtrēt un uztvert mazāk nekā 1 sekundē.
Tomēr, izsaucot C# programmas kodu, tiek parādīts savienojuma taimauts. Iestatiet CommandTimeout uz 300, un tas aizņems apmēram 3 minūtes.
Es vairākas reizes pārbaudīju kodu un neatradu kļūdas. Problēma joprojām pastāv.

Cēloņu analīze:
1. Tā kā izpildes ātrums vaicājumu analizatorā ir ātrs un datu apjoms nav liels.
2. Tikai zvans programmā ir lēns.
3. Iestatiet parametru CommandTimeout, un rezultātu var parādīt, bet tas prasīs ilgu laiku.

Kopumā provizoriski tiek secināts, ka problēma ir C# kodā. Bet pēc pārbaudes nebija nekāda ieguvuma.

Pārbaudiet šo informāciju vietnē Baidu.
Beidzot atradu līdzīgu informatīvu ziņu CSDN forumā. Viens no interneta lietotājiem atbildē teica: "Iespējams, ka īstenošanas plāns ir beidzies",
Tas mani patiešām pamodināja sapnī.

Nekavējoties veiciet vaicājumu analizatoru:

Vēlreiz pārbaudot programmu, šoreiz tā beidzot darbojās. Ātrums ir ļoti apmierinošs.

Cēloņu analīze:
Tā kā saglabātās procedūras ir iepriekš kompilētas, izpildes plāns tiek ģenerēts pirmajā izpildē, un šis izpildes plāns tiek izmantots nākamajām izpildēm (ja vien saglabātā procedūra nav norādīta pārkompilācijai), nevis ģenerē izpildes plānu katru reizi, kad tā tiek izpildīta.
Ja saglabātajā procedūrā iesaistītā objekta struktūra tiek koriģēta vai saistītie dati būtiski mainās, kā rezultātā sākotnējais plāns var būt nepiemērots pašreizējam status quo (izpildes plāna derīguma termiņš), saglabātā procedūra ir jāpārkompilē.

Visbeidzot, pievienojiet saglabātās procedūras kodu:







Iepriekšējo:Kopīgojiet vienu APP reklāmas lapas koda avotu, adaptīvu, ļoti skaistu un dāsnu!
Nākamo:C# atvērtā koda ietvars (atkārtota izdruka)
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com