|
|
Objavljeno na 21. 05. 2018 13:55:48
|
|
|

V zadnjih dveh dneh sem naletel na precej frustrirajočo težavo, saj se v analizatorju poizvedb SQL Server 2012 izvede shranjena procedura s približno 120 vrsticami, Hitrost je zelo idealna, približno 500 podatkovnih zapisov pa je mogoče filtrirati in zajeti v manj kot eni sekundi. Vendar pa se ob klicu v programski kodi C# sproži časovna omejitev povezave. Nastavi CommandTimeout na 300 in prikaz traja približno 3 minute. Kodo sem preveril večkrat in nisem našel nobenih napak. Težava ostaja.
Analiza vzrokov: 1. Ker je hitrost izvajanja v analizatorju poizvedb hitra in količina podatkov ni velika. 2. Samo klic v programu je počasen. 3. Nastavite parameter CommandTimeout in rezultat se lahko prikaže, vendar bo trajalo dolgo.
Povzemimo, da je predhodno zaključeno, da je težava v C# kodi. A po pregledu ni bilo nobene koristi.
Preverite te informacije o Baidu. Končno sem našel podoben informativni prispevek na forumu CSDN. Eden od uporabnikov interneta je v odgovoru dejal: "Možno je, da je načrt izvajanja potekel," Res me je prebudilo v sanjah.
Izvedite takoj na analizatorju poizvedb:
Program sem ponovno preizkusil in tokrat je končno deloval. Hitrost je zelo zadovoljiva.
Analiza vzrokov: Ker so shranjene procedure predhodno prevedene, se načrt izvajanja ustvari že ob prvem izvajanju, ta načrt pa se uporabi pri naslednjih izvedbah (razen če je shranjena procedura določena za ponovno prevajanje), namesto da bi se načrt izvajanja generiral vsakič, ko se izvede. Ko se struktura objekta v shranjeni proceduri prilagodi ali se povezani podatki bistveno spremenijo, kar lahko povzroči, da prvotni načrt ni primeren za trenutno stanje (potek načrta izvajanja), je treba shranjeno proceduro ponovno prevesti.
Na koncu priložite kodo za shranjeno proceduro:
|
Prejšnji:Delite eno samo APP promocijsko stran s kodo, prilagodljivo, zelo lepo in radodarno!Naslednji:C# Odprtokodni okvir (ponatis)
|