2013-07-24 17 views
5

Ho un'applicazione che fa circa 20000 DATI OPERATIVI per ora DATA-OPERATION ha complessivamente 30 parametri (per tutte le 10 query). Alcuni sono di testo, altri sono numerici. Alcuni parametri di testo hanno una lunghezza di 10000 caratteri.Richieste multiple VS Stored procedure

Ogni DATI DI FUNZIONAMENTO non seguente:

  • Una singola DATI FUNZIONAMENTO, inserti/aggiornamenti tabelle multiple (circa 10) nel database.
  • Per ogni DATA-OPERATION, prendo una connessione,
  • Quindi utilizzo la nuova istruzione preparata per ogni query nel DATA-OPERATION.
  • L'istruzione preparata viene chiusa ogni volta che viene eseguita una query.
  • La connessione viene riutilizzata per tutte le 10 istruzioni preparate.
  • La connessione è chiusa quando DATA-OPERATION è completata.

Ora per eseguire questa scheda FUNZIONAMENTO,

  • 10 domande, 10 preparata economico (creare, eseguire, vicino), 1o n/w chiamate.
  • 1 connessione (Apri, Chiudi).

Personalmente penso che, se creo una stored procedure da più di 10 query, sarà una scelta migliore.

In caso di SP, DATA-operazione avrà:

  • 1 collegamento, 1 dichiarazione callable, 1 n/w colpo.

ho suggerito questo, ma mi è stato detto che

  • Questo potrebbe essere più tempo di query SQL-.
  • Inserirà ulteriore carico sul server DB.

Continuo a pensare che SP sia una scelta migliore. Per favore fatemi sapere i vostri input.

Il benchmarking è un'opzione. Dovrà cercare qualsiasi strumento che possa aiutare in questo. Inoltre, qualcuno può suggerire benchmark già disponibili per questo tipo di problema.

+0

Quanti parametri ci sono per un DATA-OPERATION? – eggyal

+2

"Questo potrebbe richiedere più tempo" dicono. Se questa è la loro unica preoccupazione, provate che hanno torto con un benchmark. – Joni

+1

Sì, le stored procedure sono una scelta migliore rispetto alla creazione di singole operazioni di dati –

risposta

4

Qualsiasi raccomandazione dipende parzialmente da dove risiede lo script che esegue le query. Se lo script che esegue le query si trova sullo stesso server dell'istanza MySQL, non si noterà molta differenza, ma ci sarà comunque un piccolo sovraccarico nell'esecuzione di query 200k rispetto a 1 stored procedure.

Il mio consiglio in entrambi i casi sarebbe quello di farlo come una stored procedure. Avresti bisogno di un paio di procedure.

  1. Una procedura che unisce le 10 dichiarazioni che si fanno per-operazione in 1 chiamata
  2. una procedura che può iterare su una tabella degli argomenti utilizzando un CURSOR per alimentare procedura 1

tuo processo sarebbe

  1. compilare una tabella con argomenti che sarebbe alimentato nella procedura 1 per procedura 2
  2. Esegui procedura 2

Questo offrirebbe vantaggi di prestazioni in quanto non v'è alcuna necessità di connettersi al server MySQL 20000 * 10 volte. Mentre il costo aggiuntivo per richiesta potrebbe essere piccolo, i millisecondi si sommano. Anche se il salvataggio è di 0,1 ms per richiesta, sono ancora 20 secondi salvati.

Un'altra opzione potrebbe essere quella di modificare le richieste per eseguire tutte le operazioni di dati 20k contemporaneamente (se possibile) regolando le 10 query per estrarre i dati dalla tabella di database citata in precedenza. La chiave di tutto questo è ottenere gli argomenti caricati in un singolo batch insert e quindi utilizzare le istruzioni sul server MySQL all'interno di una procedura per elaborarli senza ulteriori round trip.