Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22757|Odpoveď: 0

[Zdroj] Rieši problém, že uložené procedúry sa vykonávajú rýchlo, ale volania programov sú pomalé

[Kopírovať odkaz]
Zverejnené 21. 5. 2018 13:55:48 | | |
Za posledné dva dni som narazil na problém, ktorý je dosť frustrujúci – uložená procedúra s približne 120 riadkami sa vykonáva v analyzátore dotazov SQL Server 2012,
Rýchlosť je veľmi ideálna a približne 500 dátových záznamov je možné filtrovať a zachytiť za menej ako 1 sekundu.
Avšak pri zavolaní v programovom kóde C# sa časový limit spojenia vyžiada. Nastavte Timeout príkazu na 300 a zobrazí sa približne 3 minúty.
Kód som kontroloval niekoľkokrát a nenašiel som žiadne chyby. Problém zostáva.

Analýza príčiny:
1. Pretože rýchlosť vykonávania v analyzátore dotazov je rýchla a množstvo dát nie je veľké.
2. Len volanie v programe je pomalé.
3. Nastavte parameter CommandTimeout a výsledok sa môže zobraziť, ale bude to trvať dlho.

Na záver, predbežne sa uzatvára, že problém spočíva v C# kóde. Ale po inšpekcii nebol žiadny zisk.

Pozrite si tieto informácie o Baidu.
Nakoniec som našiel podobný informačný príspevok na fóre CSDN. Jeden z používateľov internetu v odpovedi uviedol: "Je možné, že plán implementácie vypršal."
Naozaj ma to prebudilo vo sne.

Vykonajte okamžite na analyzátore dotazov:

Testoval som program znova, tentoraz to konečne fungovalo. Rýchlosť je veľmi uspokojivá.

Analýza príčiny:
Keďže uložené procedúry sú predkompilované, plán vykonávania sa generuje pri prvom vykonávaní a tento plán sa používa pri ďalších vykonaniach (pokiaľ nie je uložená procedúra špecifikovaná na rekompiláciu), namiesto generovania plánu vykonávania pri každom vykonaní.
Keď sa štruktúra objektu zapojená do uloženého postupu upraví alebo sa relevantné dáta výrazne zmenia, čo môže spôsobiť, že pôvodný plán nebude vhodný pre aktuálny stav (expirácia plánu vykonávania), uložená procedúra by sa mala znovu prekompilovať.

Nakoniec pripojte kód uloženej procedúry:







Predchádzajúci:Podeľte sa o jeden kód propagačnej stránky APP, ktorý je adaptívny, veľmi krásny a štedrý!
Budúci:C# Open Source Framework (reedícia)
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com