Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89

    [VB.NET/MYSQL] Gestione della Connessione

    Salve a tutti.

    Ho sviluppato diverso tempo fa una classe per la gestione del DB MYSQL grazie alla quale ho realizzato svariati progetti.
    Quando viene creata un istanza della classe, viene automaticamente aperta una connessione al DB in base ai parametri forniti al momento della configurazione.

    Gestendo in questo modo però ogni volta che si fa un istanza della classe

    codice:
    GestoreSQL as new ClasseMYSQL
    si va a creare una nuova connessione al Database, dato che il costruttore avvia il metodo ApriConnessione questo comporta che ogni volta che viene creata un istanza della classe, al termine del lavoro con la stessa, la connessione deve essere terminata e l'oggetto distrutto ( o si rischia di superare il limite delle connessioni consentite )

    Secondo me questo porta ad un abbassamento delle prestazioni in quanto l'apertura della connessione richiede sicuramente del tempo.

    La domanda è :

    Valutando quanto scritto sopra è più corretto aprire la connessione 1 sola volta ed utilizzarla per tutto il corso dell'applicazione ?

    Per esempio potrei creare un istanza dell'oggetto all'interno del FORM ed utilizzarla in tutte le SUB.

    Oppure ci sono delle controindicazioni anche in questo ?

    Scusate se la domanda sembra stupida ma anche sul caro vecchio Google non si trovano molte informazioni in merito.


  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Non so se sia meglio ma io di norma creo una variabile pubblica per la mia connessione e mi connetto una volta sola e lascio aperta la connessione sinchè non chiudo il programma ed uso sempre quella!

  3. #3
    Ciao, si può anche creare una variabile pubblica, comunque sia la connessione va aperta nel momento che ti serve e chiusa subito dopo aver completato le operazioni sul db.
    Jupynet

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Come mai Jupinet?

  5. #5
    Originariamente inviato da Veronica80
    Come mai Jupinet?
    Ciao, tutti i manuali e articoli su ADO.NET, consigliano di aprire la connessione il più tardi possibile e chiuderla prima possibile.
    Detto questo, che senso ha tenere la connessione al database sempre aperta? Se l'utente apre il programma e va in pausa pranzo?
    Con il modello ADO.NET e le sue evoluzioni la connessione viene aperta prima di interagire con il database e viene chiusa subito dopo, non per niente hanno creato il dataset disconnesso da qualsiasi tipo di connessione.
    Forse sbaglio io, ma sicuramente hai un minor spreco di risorse, e una maggior sicurezza del db...
    Jupynet

  6. #6
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    Si, effettivamente anche io penso che sia conveniente aprire e chiudere la connessione immediatamente, spiego meglio il mio problema.

    Ho un programma dove è possibile selezionare dei prodotti e aggiungerli nella tabella del preventivo, per fare questo ho utilizzato appunto un DATATABLE disconnesso, dove al momento della chiusura del form trasporto con una query e un ciclo tutti i dati all'interno del database vero e proprio, però quello che mi scoccia è che quando devo avviare il programma e devo effettuare il login l'apertura della connessione si ruba quei 3 - 5 secondi che mi danno sui nervi !
    Ho notato però che è diventato così lento dall'ultimo aggiornamento del .Net/Connector di MySQL...

    In ogni caso grazie a tutti per i consigli

  7. #7
    A meno che non ci sia un problema di rete, la sola connessione (senza interrogazioni) non porta via tutto quel tempo.. sono più propenso al fatto che possa dipendere dall'aggiornamento che hai fatto, oppure dal tipo di interrogazione che fai al db..
    Jupynet

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    La connessione va aperta e chiusa solo in funzione di scenari specifici, come nelle applicazioni distribuite.
    Ad esempio, se stiamo sviluppando un'applicazione WEB è sicuramente raccomandata la chiusura immediata della connessione.


    Ma in un contesto aziendale in una rete LAN è assurdo continuare ad aprire e chiudere connessioni ad ogni pié sospinto.
    Prendiamo ad esempio un gestionale aziendale in cui vi è un continuo susseguirsi di creazione, modifica e consultazione dei record. Sarebbe una follia continuare a chiedere e aprire connessioni.

  9. #9
    Utente di HTML.it L'avatar di Typo
    Registrato dal
    Apr 2012
    Messaggi
    89
    Ma in un contesto aziendale in una rete LAN è assurdo continuare ad aprire e chiudere connessioni ad ogni pié sospinto.
    Hai perfettamente ragione, il mio progetto verrà applicato in ambito aziendale ed è utilizzato da diverse persone contemporaneamente a volte anche per ore e ore senza sosta. Motivo per cui all'epoca dell'analisi del progetto ho pensato di gestire l'intera applicazione utilizzando DataTable, fatta eccezione per operazioni dirette, come un inserimento singolo.

    Praticamente la persona che utilizza il software lavora per tutto il ciclo della sua sessione ( che mediamente dura 5 - 10 minuti ) all'interno di un DataTable, al momento della chiusura della sessione, o della richiesta del salvataggio da parte dell'utente provvedo allo spostamento dei dati dal DataTable al Database vero e proprio.

    Tutto sta nel capire da quale parte sia lo spreco di risorse più grande... Lasciando sempre aperta la connessione fin quando è singola non credo ci siano moltissimi problemi, ma quando si affronta una realtà con 5 - 15 client sempre connessi continuamente non so quanto questo possa giovare al server che ospita il DB.

    Mentre chiudendola e riaprendola continuamente in base alle necessità ci potrebbe essere un effettivo calo di prestazioni dovuto al tempo necessario per l'apertura ma ancora non riesco a rilevarlo.

    Non rimane che fare delle prove su vecchi processori con normali HDD, dato il fatto che al momento la mia applicazione sta girando su dual-core sistematicamente accompagnati da SSD


    Grazie.

  10. #10
    Originariamente inviato da gibra
    .....
    Ma in un contesto aziendale in una rete LAN è assurdo continuare ad aprire e chiudere connessioni ad ogni pié sospinto.
    Soprattutto in questo contesto, e con molti utenti (con pochi non cambia niente), penso che sia meglio aprire e chiudere...
    Prendiamo ad esempio un gestionale aziendale in cui vi è un continuo susseguirsi di creazione, modifica e consultazione dei record. Sarebbe una follia continuare a chiedere e aprire connessioni.
    Non penso si possa dire come "verità assoluta"!
    Forse sbaglio io, ma con tutti i libri che ho letto, nessuno consiglia tale procedura... e facendo delle prove, non noto nessun miglioramento di velocità o altro..
    Ripeto, forse mi sbaglio e benvengano altre opinioni, però, senza nulla togliere a quanto dici, mi piacerebbe leggere anche qualche articolo in merito.
    Jupynet

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.