Gestire un datasource molto corposo
cristian0579
cristian0579 non è online. Ultima attività: 22/05/2009 10.03.03cristian0579
il 22 luglio 2008 alle 15.16
168 messaggi dal 13 febbraio 2004
salve a tutti

ho uno scenario un pò tosto da gestire.

in pratica effettuo delle statistiche di vendita di articoli, su un db SQL2000 con una SP che effettua un group da una prima select di oltre 1 milione di righe.

il primo problema è il TimeOut di SQL, infatti la SP ci impiega 36secondi a estrapolare le righe, di conseguenza ho dovuto aumentarlo.

secondo problema è che ho dovuto anche attivare il caching del SQLdataSource , altrimenti ad ogni postback di paginazione, ci volevano 40 e passa secondi.

Ho impostato comunque un tempo di circa 5 minuti.

Nella stessa paginew però ho due calendar che selezionano il periodo di analisi.

di conseguenza in questo caso il Datasouce dovrebbe cambiare.

Come faccio a far scadere la chache?

grazie a tutti

PS. ogni tanto comunque va ugualmente in timeout, ma la durata va impostata solo nella connection string giusto?


Modificato da cristian0579 il 22 luglio 2008 15.17 -
Microsoft Most Valuable Professional
RE: Gestire un datasource molto corposo
Ricciolo
Ricciolo non è online. Ultima attività: 02/07/2009 11.58.20Ricciolo Top Poster
il 22 luglio 2008 alle 17.01
Per il timeout, ovviamente la prima è cosa è ottimizzare la query ma su questo devi vedere te. Nella connecion string aumenti il timeout di connessione, non quello di esecuzione. Per questo devi agirare sulla proprietà CommandTimeout del SqlCommand.
Per la cache, il motore crea una chiave in funzione dei vari parametri di cache. La invalida se cambi uno di questi parametri. Quindi a questo punto è meglio se abbandoni il SqlDataSource e fai te la chiamata alla SP, così gestisci te la cache con una tua chiave, andandola eventualmente a rimuoverla quando non ti serve più.

Ciao

Il mio blog
Homepage
RE: Gestire un datasource molto corposo
cristian0579
cristian0579 non è online. Ultima attività: 22/05/2009 10.03.03cristian0579
il 22 luglio 2008 alle 17.06
168 messaggi dal 13 febbraio 2004
si pensavo anche io di abbandonare il datasource

non mi è operò chiaro il concetto della chiave della cache, come faccio ad invalidarla?
Microsoft Most Valuable Professional
RE: Gestire un datasource molto corposo
Ricciolo
Ricciolo non è online. Ultima attività: 02/07/2009 11.58.20Ricciolo Top Poster
il 22 luglio 2008 alle 17.11
L'oggetto HttpRuntine.Cache ha i metodi Add/Insert e Remove per aggiungere o rimuovere elementi in cache in base ad una chiave. Tu genera la chiave in funzione di certi parametri e poi usa quei metodi per togliere e mettere

Ciao

Il mio blog
Homepage
RE: Gestire un datasource molto corposo
fabrica
fabrica non è online. Ultima attività: 05/07/2009 17.14.46fabrica Top Poster
il 22 luglio 2008 alle 17.48
www.fabricasoft.net | 1.488 messaggi dal 03 dicembre 2001
Ciao,

visto che i dati vengono "paginati" potresti risolvere tutto con un PagedDataSource. Dai un occhio qui: http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.pageddatasource(VS.80).aspx

Fabrizio Canevali

on "gli svizzeri sono indietro" ...
RE: Gestire un datasource molto corposo
Salvodif
Salvodif non è online. Ultima attività: 25/12/2008 11.57.09Salvodif
il 24 luglio 2008 alle 11.56
blogs.ugidotnet.org | 40 messaggi dal 07 gennaio 2008
Come dice Fabrizio Canevali,
visto che pagini, pagina :D

Cerca un pò su google, in pratica devi modificare la tua SP in modo tale da passargli la pagina attuale, la pagina dove stai andando (quando l'utente clicca sul numero pagina) e il numero di elementi da visualizzare nella pagina.

Così facendo farai delle select mirate, stresserai meno il db e viaggeranno meno dati.

Salvatore Di Fazio
http://blogs.ugidotnet.org/SalvoDiFazio
RE: Gestire un datasource molto corposo
cristian0579
cristian0579 non è online. Ultima attività: 22/05/2009 10.03.03cristian0579
il 24 luglio 2008 alle 12.03
168 messaggi dal 13 febbraio 2004
Salvodif ha scritto:
Come dice Fabrizio Canevali,
visto che pagini, pagina :D

Cerca un pò su google, in pratica devi modificare la tua SP in modo tale da passargli la pagina attuale, la pagina dove stai andando (quando l'utente clicca sul numero pagina) e il numero di elementi da visualizzare nella pagina.

Così facendo farai delle select mirate, stresserai meno il db e viaggeranno meno dati.



attualmente per questa griglia ho utilizzato un controllo di terze parti in particolare gli asp ajx controls della Teletik.

pensavo di usare la loro gaginazione.

PErò in effetti invece di usare la cache, visto che il db è SQL2000 e di conseguenza non se ne parla di inserirgli delle dipendenze in cache con i triger.

Forse spostare l'onere della paginazione al db è la soluzione migliore.

non mi sono mai trovato in questa situazione, se ho capito bene consigli alla quesry di utilizzare "TOP n righe" al binding della griglia e ai sucessivi eventi di paginazione

Ma come faccio?

grazie
RE: Gestire un datasource molto corposo
Salvodif
Salvodif non è online. Ultima attività: 25/12/2008 11.57.09Salvodif
il 24 luglio 2008 alle 12.06
blogs.ugidotnet.org | 40 messaggi dal 07 gennaio 2008
Come fai a far cosa?

Salvatore Di Fazio
http://blogs.ugidotnet.org/SalvoDiFazio

2 pagine: [1] 2 Avanti >>

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.

COMMUNITY
ULTIMI MESSAGGI
MEDIA
IN EVIDENZA
MISC
Powered by .db Forums "Caesar Reborn" v. 2009.6.9