2011-09-05 11 views
9

Eventuali duplicati:
Disadvantages of MARS (Multiple Active Result Sets)?svantaggi dell'utilizzo di MARS (Multiple Active Result Sets)

Sto sviluppando un'applicazione tale che devo utilizzare più DataReaders allo stesso tempo. Quando dico DataReaders multipli intendo DataReaders MULTIPLE ... ci sarebbe qualche richiesta allo stesso tempo. (Qualcosa intorno 10-50 o più)

Così uno scenario che mi sono imbattuto è stato quello di usa diverse stringhe di connessione .. ma implementando ciò mi sento imbarazzante !!!

Un altro metodo è usare MARS che ho trovato abbastanza decente. ma il mio dubbio è che devo prendere in considerazione o prendere qualsiasi precauzione quando lo realizzo o è qualcosa di vizioso aspettando che io accada :-)

dalla mia cosiddetta ricerca ciò che sono stato in grado di trovare è che usando MARS il server produce dati veloci, quindi l'app client deve ricevere i dati alla stessa velocità in cui entra. altrimenti il ​​buffer di archiviazione dei dati verrà riempito fino all'elaborazione da interrompere .. e sarà abilitato solo quando il buffer si svuota ..

mi sono perso da qualche parte qui intorno ....

anche io sto usando solo Sele ct dichiarazioni solo per questo reqiurement ..

quindi la mia domanda è che ci sono degli svantaggi usandoli ?? quanti dati possono essere memorizzati nel buffer dei dati del server in modo tale che l'elaborazione non si fermi ??

+1

Qual è la tua domanda? (Qualcosa che termina con un punto interrogativo, se questo ti aiuta a metterlo in parole) –

+0

Puoi anche quantificare "DATAREADERS MULTIPLI". Metterlo in lettere maiuscole non lo rende un numero. – Tony

+0

@Johnstone => ha completamente dimenticato di terminarlo con una domanda – Manek

risposta

1

Suggerisco di utilizzare più connessioni, se è veramente necessario leggere da 100 set di dati contemporaneamente. Non riesco a capire perché è necessario avere più datareader attivi su una singola connessione.

È più probabile che la query o l'attività che si sta tentando di ottenere possa essere eseguita senza la necessità di eseguire questa operazione parallela di grandi dimensioni. Se puoi essere più specifico con alcuni dettagli, forse possiamo elaborare alcuni buoni suggerimenti alternativi.

+0

@Johnstone => Ho provato molto a ottimizzare dal lato query e ora procedo con MARS. È qualcosa come ottenere un elenco da una tabellaA e ogni riga in TableA recupererà l'elenco da TableB e ogni riga in TableB dovrà recuperare un elenco da TableC e così via. Uff !! so che questo suona strano ma comunque grazie per il tempo che ci hai dedicato. volevo solo sapere quali dati potevano essere memorizzati nel buffer di dati. – Manek

+1

Sembra esattamente come fa un join. È probabile che tu possa fare ciò che vuoi con una singola query e sarà molto, molto più veloce di quello che stai facendo. –

+0

Ad esempio: 'SELECT * FROM TblA INNER JOIN TblB ON X = Y' fornisce tutte le righe da' TblA', e per ogni riga in 'TblB' dove viene soddisfatto il criterio' X = Y', un elenco di righe da ' TblB'. –