L'utilizzo di più recordset in una richiesta di database sarà più efficiente?

2

Sto riprogettando un vecchio sito di e-commerce che è attualmente scritto in C # ASP.NET 2.0.

Poiché si tratta di un sito web a volume ragionevolmente alto e ha subito problemi di prestazioni, desidero svilupparlo nel modo più efficiente possibile.

Per ridurre al minimo gli accessi al database (utilizzando SQL Server 2012), poiché le prestazioni del database sono il solito collo di bottiglia nel sistema corrente, sto cercando di creare stored procedure che restituiscano tutto il necessario per la pagina corrente in una query come più recordset. p>

Ad esempio, la query sulla home page potrebbe restituire i nomi e i nomi dei file immagine banner promozionali, i nuovi prodotti a rilascio, i prodotti più venduti, ecc. La pagina prodotto potrebbe restituire i dettagli del prodotto, i prodotti correlati, ecc.

Non ricordo di aver visto questa tecnica usata spesso, se non del tutto. La restituzione di tutti i dati in una singola richiesta di database è più efficiente rispetto al recupero degli stessi dati in diverse richieste di database? Ci sono dei difetti nel fare questo?

    
posta johna 20.02.2014 - 09:00
fonte

2 risposte

1

Sì se:

  • ci sono molte query per pagina (la latenza sarà ridotta)
  • il tuo sito web e il tuo database sono su macchine diverse (la latenza della rete sarà ridotta)

No (non molto) se:

  • non ci sono molte query per pagina
  • il sito web e il database si trovano sullo stesso server

Quindi in pratica renderà più efficiente solo se la latenza è significativa .

    
risposta data 14.03.2014 - 11:18
fonte
0

La tua descrizione della home page sembra una pagina dashboard. La procedura migliore per alimentare una pagina dashboard è consentire l'inserimento dei dati con query eseguite in parallelo. Ciò consente di calibrare in modo indipendente le query con cattive prestazioni.

Ciò semplifica anche l'aggiunta di una nuova vista dati, se necessario, quando la home page si evolve.

Se tutte le viste verranno alimentate da un'unica fonte, la visualizzazione dei risultati verrà limitata quando la singola origine inizia a restituire i dati. Questa volta sarà almeno il tempo necessario per eseguire la query più lenta.

    
risposta data 21.05.2015 - 00:46
fonte

Leggi altre domande sui tag