Il pool di connessioni funziona correttamente per eseguire 60 query DB per caricare una pagina?

0

Usiamo Linq2Sql in un'applicazione ASP.NET. Sfortunatamente il caricamento entusiasta di Linq2Sql non è così potente come in Entity Framework, quindi molti dati devono essere caricati come pigri secondo necessità.

Prendendo in considerazione il pool di connessioni, è OK per una pagina web eseguire 60 query per caricare una pagina? L'esecuzione di una singola query di grandi dimensioni probabilmente non sarà molto meglio, poiché queste 60 query collegheranno tutte queste connessioni e non apriranno una nuova connessione ogni volta (cosa che realizzo è lenta).

Qualche idea?

    
posta willem 01.07.2012 - 12:27
fonte

3 risposte

1

Dall'esperienza con altri sistemi, direi che il pooling delle connessioni si avvierà e aprirai solo una connessione per tutte quelle query. Dovresti controllare questo però.

Questo non risolve comunque i problemi di prestazioni, anche supponendo che tutte queste query vengano eseguite in sequenza (e quindi riutilizzino una singola connessione) continuando a colpire il DB 60 volte. Questo mette un carico sulla singola risorsa condivisa che è il tuo DB. Se 100000 persone accedono alla tua pagina, questo è un sacco di contese sul tuo DB che indubbiamente causerà alcuni problemi. Quindi, in primo luogo, assicurati che la tua strategia di blocco dei DB sia buona, quindi le letture pure non bloccano tutto, quindi lavora per ridurre la complessità delle tue pagine.

    
risposta data 01.07.2012 - 16:29
fonte
6

Una cosa è ciò che serve per caricare la pagina una . Un'altra cosa è quello che serve per servire X utenti concorrenti al secondo (che è quello che il test di accettazione dovrebbe includere).

Molto probabilmente scoprirai che il problema della scalabilità metterà in ginocchio il database e lo farà molto rapidamente. In tal caso, hai tre opzioni:

  1. Utilizza meno query.
  2. Risposte alle query del database della cache.
  3. Metti un frontend come Varnish davanti all'applicazione e riscrivi l'applicazione per consentire a Varnish di nasconderlo il più possibile in modo trasparente.

La mia sensazione istintiva è che la

60 > pagina delle query di query diventerà un collo di bottiglia e che il tuo team dovrebbe configurare un sistema di test di carico che simuli gli utenti X che, ad es. potrebbe funzionare tutte le sere e farti sapere il prima possibile quando l'applicazione diventa troppo lenta per essere accettata.

    
risposta data 01.07.2012 - 12:48
fonte
0

Is it OK for a web page to execute 60 queries to load a page?

Direi che non è normale Perché ci sono 60 diverse query su 1 pagina? Anche se hai bisogno di 60 query diverse, probabilmente potresti raggrupparle in diversi set di risultati in cui ogni set di risultati utilizza la propria connessione e può essere eseguito in parallelo o Asynch. pattern (vedi Uso di Parallel Extensions per .NET 4 in app ASP.NET ) ma usare una connessione per query non è buono INMO.

Inoltre, potrebbe essere utile prendere in considerazione la riprogettazione dell'interfaccia in modo che utilizzi lo stile di drill-down in cui vengono mostrati solo i dati rilevanti quando necessario.

    
risposta data 01.07.2012 - 12:41
fonte

Leggi altre domande sui tag