Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 22757|Válasz: 0

[Forrás] Megoldja azt a problémát, hogy a tárolt eljárások gyorsan futnak, de a programhívások lassúak

[Linket másol]
Közzétéve 2018. 05. 21. 13:55:48 | | |
Az elmúlt két napban egy meglehetősen frusztráló problémába ütköztem: egy körülbelül 120 sorból álló tárolt eljárást futtattak az SQL Server 2012 lekérdezési analizátorában,
A sebesség nagyon ideális, és körülbelül 500 adatrekordot lehet szűrni és rögzíteni kevesebb mint 1 másodperc alatt.
Azonban amikor a C# programkódot hívják, a kapcsolat időtúllépése jelentkezik. Állítsd be a CommandTime-outot 300-ra, és körülbelül 3 perc alatt jelenik meg.
Többször is ellenőriztem a kódot, és nem találtam hibát. A probléma továbbra is fennáll.

Ok-elemzés:
1. Mert a lekérdezés-analizátor végrehajtási sebessége gyors, és az adatmennyiség nem nagy.
2. Csak a programban történő hívás lassú.
3. Állítsd be a CommandTimeout paramétert, és az eredmény megjeleníthető, de ez sokáig tart.

Összefoglalva, előzetesen arra a következtetésre jutottunk, hogy a probléma a C# kódban rejlik. De az ellenőrzés után nem volt nyereség.

Nézd meg ezeket az információkat a Baidu-n.
Végre találtam egy hasonló információs bejegyzést a CSDN fórumon. Az egyik netikus válaszában azt mondta: "Lehetséges, hogy a végrehajtási terv lejárt."
Igazán felébresztett az álmomban.

Azonnal végezze el a lekérdezési analizátoron:

Újra teszteltem a programot, ezúttal végre működött. A sebesség nagyon kielégítő.

Ok-elemzés:
Mivel a tárolt eljárások előre fordítottak, az első végrehajtáskor egy végrehajtási tervet generálnak, és ezt a végrehajtási tervet használják a későbbi végrehajtásoknál (hacsak a tárolt eljárás újrafordítása nem történik), ahelyett, hogy minden végrehajtáskor generálnának végrehajtási tervet.
Amikor a tárolt eljárásban részt vevő objektumstruktúrát módosítják, vagy a kapcsolódó adatok jelentősen megváltoznak, ami miatt az eredeti terv nem lesz alkalmas a jelenlegi állapotra (végrehajtási terv lejárta), a tárolt eljárást újra kell fordítani.

Végül csatoljuk a tárolt eljárás kódját:







Előző:Oszd meg egyetlen APP promóciós oldal kódforrását, adaptív, nagyon szép és nagylelkű!
Következő:C# Nyílt Forráskódú Keretrendszer (Újranyomás)
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com