Ottimizzare un DB

di il
7 risposte

Ottimizzare un DB

Ciao a tutti, vorrei avere una vostra opinione riguardo una tematica.
La domanda che vorrei farvi è: è consigliabile una tantum fare uno shrink del database e ripristinare gli indici?
Non parlo di operazione pianificate di manuntenzione, semplicemente quando i programmi che ci girano sopra iniziano ad essere lenti e gli utenti a lamentarsi compattare il db.

Stiamo parlando di un sql server su windows server 2012, è un unico db piuttosto pesante.

A parte questo, che trucchetti avete nelle maniche per velocizzare un programma? A parte eliminare funzionalita come farebbero i miei colleghi.
Non mangatemi se dico fesserie, sono alle prime armi

7 Risposte

  • Re: Ottimizzare un DB

    Noi eseguiamo il reindex pianificato di tutti i database ogni settimana (domenica)
  • Re: Ottimizzare un DB

    Ho spostato la discussione nella sezione sql server.
    Lo shrink del database serve principalmente per compattarlo recuperando spazio su disco. Non è detto che migliori le prestazioni, in genere le peggiora in quanto il db per crescere dovrà nuovamente allocare spazio (cosa che aveva fatto già prima di essere stato sottoposto a shrink). Inoltre porta a una notevole frammentazione degli indici.

    Il rebuild degli indici pianificato può effettivamente giovare in quei database dove spesso vengono modificati importanti percentuali di dati indicizzati.

    Gestisco un sito di comparazione prezzi dove ogni giorno vengono aggiornate eliminate e inserite milioni di offerte. Tutte le notti viene fatto il rebuild degli indici di sql server e ad ogni sessione di aggregazione dati il reindex di Lucene. Senza questa attività le performance del sistema
    degradano in maniera considerevole.

    Nel tuo sistema dovresti verificare la buona progettazione del database e delle applicazioni che vi interagiscono. Successivamente si pianificando rebuild e ottimizzazioni automatiche.
  • Re: Ottimizzare un DB

    Grazie delle risposte.
    Non mi è chiaro come uno shrink possa peggiorare le prestazioni, posso capire se mi dite che non è utile, ma lo sconsigliate anche? Con la premessa che il cliente non ha problemi di soldi e può acquistare altro spazio su disco, lamenta solo una certa lentezza nel software.
    Ho pensato al db perché stiamo parlando di un gestionale a mio parere complesso, e migliorarlo in ogni sua funzione è improponibile, vedo più fattibile agire sul db.
  • Re: Ottimizzare un DB

    La lentezza può essere causata da diversi fattori, alcuni non correlati al database in sé stesso.
    Eccone alcune:

    - pc datati
    - HD lenti (pc)
    - accesso alla rete LAN (cat.5 / 6 / 6a, ...)
    - infrastruttura server (processori, storage, ecc...)
    - gestionale con personalizzazioni non ottimizzate.

    a livello di db, la più probabile è:
    - una non corretta definizione degli indici
  • Re: Ottimizzare un DB

    Io aggiungerei di porre attenzione a un dettaglio spesso ignorato: la selettività degli indici.
    non è affatto stabilito, a priori, che un indice sia proficuo, riducendo i tempi di esecuzione, e inoltre va stimato il costo di aggiornamento (che spesso è sensibile).
    quindi ci possono essere migliorie in lettura, ma normalmente al costo di scritture più lente.
    su SQL server non dico nulla per evitare le solite flamwar
  • Re: Ottimizzare un DB

    Capisco gibra quello che dici, ma il server non è della mia azienda così come i pc, noi siamo solo i fornitori di software.

    Grazie a tutti!
  • Re: Ottimizzare un DB

    Deb ha scritto:


    Capisco gibra quello che dici, ma il server non è della mia azienda così come i pc, noi siamo solo i fornitori di software.

    Grazie a tutti!
    Sia chiaro che è molto difficile fare delle analisi a distanza, è complesso farlo 'sul posto', figurati 'da remoto'...
    Per risolvere il problema è comunque necessaria l'analisi che vada per eliminazione ed esclusione dei vari 'attori' che interagiscono a partire dalla rete e via via 'a salire'.
Devi accedere o registrarti per scrivere nel forum
7 risposte