Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Web Services, XML
Web Service e grandi moli di dati
lunedì 20 febbraio 2006 - 18.00
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
lun 20 feb 2006 - 18:00
Ciao,
mi è capitato questo problema: devo estrarre da una tabella circa 80000 record passando da un web service, e in produzione il numero di record potrebbe salire, e il mio asp_net working process viene ucciso dal OS perchè consuma troppe risorse, in pratica occupa più del 60% della memoria totale della macchina. Il pc sul quale è intallato il web server e il relativo web service è una macchina XP SP2 con 512 MB di RAM. Estraggo i record tutti insieme tramite un SqlDataAdapter e il relativo metodo Fill che riempie un dataset che voglio inviare hai client.
Di fronte ad una mole di dati così ampia è meglio leggere l'insieme di record a "pezzi" oppure sbaglio propio approccio?
Grazie a tutti anticipatamente
p.s.: Dimenticavo, effettuo una chiamata sincrona al web service.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 20 feb 2006 - 18:04
>Di fronte ad una mole di dati così ampia è meglio leggere l'insieme
>di record a "pezzi" oppure sbaglio propio approccio?
Ciao,
sicuramente in questo caso è consigliabile ricavare i dati chunk per chunk (blocco a blocco). Non so, tipo 5000 record alla volta.
Questo approccio incide sulle performance perchè se tu crei un DataSet sul server e con il DataAdapter fai un Fill i dati vanno a finire tutti nel DataSet e di conseguenza in memoria RAM e rallentano tutto oltre ad occupare tutta la memoria.
Se vuoi continuare così puoi modificare il 60% di memoria occupata del Worker Process se non erro nel machine.config che trovi sul tuo PC. Lo puoi spostare a 80,90% in modo che tutto funzioni in ogni caso correttamente.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 21 feb 2006 - 16:41
Ciao, grazie per il consiglio... ho sperimentato qualche tecnica, ma hio ancora dei dubbi:
Esperimenti
:
1) Collezzione di oggetti struttura, in pratica mi sono creato una classe che rispecchia il mio record e la valorizzo tramite un data reader, il limite massimo di record che riesco a recuperare è 50000 per volta...
2)scrivo i dati in un file di testo, un record per volta... tutto ok, ma un po lento. il file diventa di 16 MB all'incirca
3) paginazione dei dati, ma il calo di prestazioni è evidente anche qui
Mi chiedevo: sono io che continuo a sbagliare? come mai in memoria il mio recordset diventa di dimensioni incredibili, tali da far crollare il mio web service?
Probabilmente dovrei adottare altre tecniche, in effeti sto usando un web service perchè il programma dovrebbe funzionare indifferentemente sia su internet che su una intranet, solo che il calo di prestazioni all'interno di una lan è troppo grande... dici che mi converrebbe, almeno al'interno della lan staccarmi dai web service?
adima80
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 22 feb 2006 - 10:53
Ciao,
HO necessità di recuperare i record tutti insieme per effettuare delle stampe, stampe anche molto grosse che coinvolgono molte viste che si richiamano tra di loro. Alla fine ho optato per una soluzione mista, l'utente all'interno della lan userà chiamate dirette al db, mentre da internet userà il web service, per il web service adotterò delle tecniche di paginazione di fronte a grosse mole di dati, ed impedirò le stampe voluminose, che alla fine farò creare direttamente a sqlserver tramite reporting service e poi invierò tramite mail. Mi sembra una soluzione nn perfetta ma che almeno nn stravolge troppo l'architettura del progetto...
grazie comunque per l'attenzione.
Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !