Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Domanda sul Dataset

  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    Domanda sul Dataset

    Quando viene liberata la memoria che occupa un dataset sul server ?

  2. #2
    Quando nessuna altra parte del tuo codice fa piu' riferimento ad esso, il garbage collector lo timbra come prossimo alla morte e al passaggio successivo lo elimina del tutto.
    Saluti a tutti
    Riccardo

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da riccardone
    Quando nessuna altra parte del tuo codice fa piu' riferimento ad esso, il garbage collector lo timbra come prossimo alla morte e al passaggio successivo lo elimina del tutto.

    C'e' un timeout oltre il quale lo spazzino interviene ?

  4. #4
    Non so bene cosa intendi per timeout cmq in linea di principio lo sviluppatore dovrebbe disinteressarsi (a parte per ragioni di studio) del garbage collector.
    Naturalmente discorso diverso vale per le risorse occupate. Infatti un dataset e' un oggetto che non occupa risorse e quindi viene distrutto automaticamente dal gc come detto sopra. Se invece parliamo di occupazione di risorse come ad es. un oggetto connection, e' il programmatore a doversi preoccupare manualmente della sua chiusura.
    Saluti a tutti
    Riccardo

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Sto sviluppando una parte di una applicazione che fa un uso intenso dei dataset, e siccome non la vedo proprio "performante" ... cominciavo a chiedermi per quanto tempo risiedessero in memoria e se fosse possibile gestire questa permanenza.
    Ma a quanto mi dici, non credo di poter fare meglio del FW

    Mi sa che cmq i motivi dei rallentamenti sono da tutt'altra parte.

    thx

  6. #6
    Originariamente inviato da djciko
    ...uso intenso dei dataset...
    Personalmente e' piuttosto raro che ricorro ad un dataset e il piu' delle volte utilizzo direttamente oggetti datatable. Questo perche' il dataset č un oggetto inutilmente pesante quando non e' necessario ricorrere ad alcune delle funzionalitą offerte solo da lui (es. operazioni con xml, datarelations, merge). Un altro motivo di rallentamento che potrebbe "nascondersi" dietro all' ...uso intenso... e' quello di caricare troppi records nel dataset, fare un databind con un datagrid e far andare avanti e indietro allegramente la pagina (viewstate compreso) tra client e server. Ma queste sono solo supposizioni
    Saluti a tutti
    Riccardo

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    In realtą uso anche io i relativi (dei dataset creati) datatable, ed ho anche provato a "Cacheizzare" il tutto:

    codice:
    		Dim dsXLS As New DataSet 
    		Dim dtXLS as DataTable
    		dtXLS = Cache("dtXLS")
    		If dtXLS is Nothing then
    			Try
    				..creo il dataset e..
    				dtXLS = dsXLS.tables(0)
    				Cache("dtXLS") = dtXLS 
    			Catch
    				..errore
    			End try
    		End if
    ...e ciclando poi sulle righe del dataTable (dalla cache) faccio altri accessi al DB che riempiono altri DataSet, ma il problema alla fine, analizzando bene č..il DB ! (ancora in fase progettazione).

    Non ci sono PostBacks e passeggiate nella History, nč DataGrids.

    La veritą č soltanto che sto facendo una operazione troppo pesante per il povero DBServer dell'azienda


  8. #8
    Originariamente inviato da djciko
    In realtą uso anche io i relativi (dei dataset creati) datatable
    Sei obbligato ad usare i relativi datatable. Per accedere ai dati in una datatable in un dataset finisci sempre per riferirti appunto alla datatable. Il passaggio inutile e' quello di istanziare un dataset (a meno che non ci siano ragioni particolari come quelle che ho portato come esempio nel post precedente).
    Non ci sono PostBacks e passeggiate nella History, nč DataGrids.
    non ho parlato di history ma di viewstate che consiste in uno spazio di memoria (sotto forma di dati criptati nel codice della pagina html) che fa sempre avanti e indietro tra client e server e che e' impostato a true per default su ogni controllo asp.net che metti sulla pagina. Quindi se hai anche una dropdown con 1000 righe che tiene un centinaio di k di spazio, se quella dropdown ha anche il viewstate attivato raddoppi la quantita' (100 k x 2) di byte che fa avanti e indietro tra client e server.
    ed ho anche provato a "Cacheizzare" il tutto
    quello che hai fatto (a torto o a ragione) č di parcheggiare nella cache degli oggetti (es. la datatable). Da quel momento in poi se hai rallentamente (e non hai errori nel codice) questi non sono piu' dovuti al db (visto che i dati li prendi dalla cache).
    Una alternativa e' quella di usare la capacita' delle pagine aspx di risiedere completamente in cache. Ci dovrebbe essere un articolo su freeasp che tratta proprio di questo.
    Saluti a tutti
    Riccardo

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Da quel momento in poi se hai rallentamenti (e non hai errori nel codice) questi non sono piu' dovuti al db (visto che i dati li prendi dalla cache).
    Invece purtroppo si perchč l'accesso principale č chachizzato ma i successivi no (tocco 5 tabelle, e nel ciclo sul set di dati principale (quello in cache, preso da un foglio Excel, per giunta) per ogni riga (alle volte sono anche nell'ordine delle 14.000) effettuo 4 select ed una eventuale insert per ogni gruppo di 2.
    E' qualcosa sul DBServer che si č appesantito...
    Ho provato a cambiare macchina (copiando il db in locale in MSDE) e va come dovrebbe andare.

    Mi interesserņ a cio' che dici di una intera pagina, cmq.
    THX


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.