Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 22757|Risposta: 0

[Fonte] Risolve il problema che le stored procedure vengono eseguite rapidamente, ma le chiamate al programma sono lente

[Copiato link]
Pubblicato su 21/05/2018 13:55:48 | | |
Negli ultimi due giorni ho incontrato un problema piuttosto frustrante: una procedura memorizzata di circa 120 righe viene eseguita nell'analizzatore di query di SQL Server 2012,
La velocità è molto ideale, e circa 500 record di dati possono essere filtrati e catturati in meno di 1 secondo.
Tuttavia, quando viene chiamato il codice del programma C#, viene richiesto il timeout della connessione. Imposta il CommandTimeout a 300 e ci vorranno circa 3 minuti per essere visualizzato.
Ho controllato il codice più volte e non ho trovato errori. Il problema rimane.

Analisi della causa:
1. Perché la velocità di esecuzione nell'analizzatore di query è elevata e la quantità di dati non è elevata.
2. Solo la chiamata del programma è lenta.
3. Imposta il parametro CommandTimeout e il risultato può essere visualizzato, ma ci vorrà molto tempo.

In sintesi, si conclude preliminarmente che il problema risiede nel codice C#. Ma non c'era alcun vantaggio dopo l'ispezione.

Controlla queste informazioni su Baidu.
Finalmente ho trovato un post informativo simile sul forum CSDN. Uno degli internauti ha risposto: "È possibile che il piano di implementazione sia scaduto",
Mi ha davvero svegliato nel sogno.

Esegui immediatamente sull'analizzatore di query:

Testando di nuovo il programma, questa volta finalmente funzionò. La velocità è molto soddisfacente.

Analisi della causa:
Poiché le stored procedure sono precompilate, un piano di esecuzione viene generato alla prima esecuzione, e questo piano di esecuzione viene utilizzato nelle esecuzioni successive (a meno che la stored procedure non sia specificata per essere ricompilata), invece di generare un piano di esecuzione ogni volta che viene eseguita.
Quando la struttura dell'oggetto coinvolta nella stored procedure viene modificata, o i dati correlati cambiano significativamente, il che può rendere il piano originale inadatto allo status quo attuale (scadenza del piano di esecuzione), la stored procedure dovrebbe essere ricompilata.

Infine, allega il codice per la procedura memorizzata:







Precedente:Condividi un unico codice di pagina promozionale APP, adattivo, molto bello e generoso!
Prossimo:Framework Open Source C# (Ristampa)
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com