Dimensione massima database SQL Server 2014 Express

di il
14 risposte

Dimensione massima database SQL Server 2014 Express

Buongiorno, ho letto dalla documentazione che la dimensione massima di un database SQL Server 2022 EXPRESS è 10GB.

Ho misurato la dimensione del mio database mediante il comando:

USE WEBLICProd;  
GO  
EXEC sp_spaceused;  
GO

Come prima domanda chiedo inanzitutto se questo comando misura la dimensione esatta del database.

Vi allego invece un primo screenshot con la misura ottenuta dal comando sul mio database, secondo il parere di voi esperti la dimensione nel mio caso è 3.9GB, per cui sono quasi a metà della dimensione massima gestibile ?

Ho effettuato una misurazione dopo l'esecuzione del seguente comando:

USE WEBLICProd;  
GO
DBCC SHRINKDATABASE (WEBLICProd, 10);
GO

Il secondo screenshot con la misura ottenuta dopo il comando di compattazione, interpreto correttamente che la dimensione del database si è ridotta a 12,25MB ?

Come seconda domanda: questo comando è corretto se si vuole compattare e ridurre la dimensione, per un domani non arrivare alla soglia dei 10GB ?

14 Risposte

  • Re: Dimensione massima database SQL Server 2014 Express

    Sì, va bene.

    Evidentemente il DB esegue molti inserimenti, cancellazioni.

    Lo SHRINK va bene ma, come ti dicevo nell'altra discussione, peggiora gli indici e quindi devi ricostruirli.

  • Re: Dimensione massima database SQL Server 2014 Express

    04/07/2024 - oregon ha scritto:


    Sì, va bene.

    Evidentemente il DB esegue molti inserimenti, cancellazioni.

    Lo SHRINK va bene ma, come ti dicevo nell'altra discussione, peggiora gli indici e quindi devi ricostruirli.

    Si, ma io non volevo eseguire la compattazione.

    Mi domandavo solo quale accorgimento in SQL Express prendere onde evitare di raggiungere la dimensione massima consentita.

    Che consiglio mi dai ?

    Cosa intendi poi per ricostruire gli indici ? E' un operazione che viene fatta in automatico ?

  • Re: Dimensione massima database SQL Server 2014 Express

    Guarda … in realtà lo SHRINK del DATABASE non è consigliato, proprio per la questione della frammentazione degli indici.

    Dovrebbe essere fatto raramente, quindi ti consiglio di non farlo a meno che non si stia raggiungendo la quota massima dei 10 G (ed eri lontano).

    Semmai fai lo SHRINK del LOG se questo cresce molto.

    Per la gesione degli indici leggi questo

    https://learn.microsoft.com/en-us/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-ver16

  • Re: Dimensione massima database SQL Server 2014 Express

    04/07/2024 - oregon ha scritto:


    Guarda … in realtà lo SHRINK del DATABASE non è consigliato, proprio per la questione della frammentazione degli indici.

    Dovrebbe essere fatto raramente, quindi ti consiglio di non farlo a meno che non si stia raggiungendo la quota massima dei 10 G (ed eri lontano).

    Semmai fai lo SHRINK del LOG se questo cresce molto.

    Per la gesione degli indici leggi questo

    https://learn.microsoft.com/en-us/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-ver16

    siccome sono nuovo, la ricostruzione degli indici l'ho fatta così:

    E' corretto ?

    Eseguendo come mai mi si riduce la size del database (vedi la prima immagine in questa discussione) ?

  • Re: Dimensione massima database SQL Server 2014 Express

    Quale ricostruzione di indici?

    Hai fatto lo shrink del file di log ma non hai toccato gli indici

  • Re: Dimensione massima database SQL Server 2014 Express

    04/07/2024 - oregon ha scritto:


    Quale ricostruzione di indici?

    Hai fatto lo shrink del file di log ma non hai toccato gli indici

    al momento ho effettuato come da figura lo shrink del log, è corretto ?

    Chiedevo se è normale che ha ridotto la dimensione del DB.

  • Re: Dimensione massima database SQL Server 2014 Express

    Salve,

    lo shrink dei db, come gia' @Oregon, non e' un'attivita' da effettuarsi in maniera compulsiva...
    tendenzialmente andrebbe eventualmente eseguita dopo la cancellazione massiva di dati oppure drop completo di tabelle, al fine di effettivamente rilasciare lo spazio "libero" non utilizzato...

    Trivialmente, l'allocazione di pagine di dati all'interno del file dati avviene in maniera autogestita nei binary trees utilizzando come "parametri" le impostazioni di FILLFACTOR e PAD_INDEX dell'indice clustered (per la leaf page dei dati) o comunque anche per le pagine degli indici...
    Quando, ad opera di un'INSERT/UPDATE l'inserimento di una nuova riga all'interno di una pagina, avviene il superamento delle soglie di cui sopra, verra' eseguito uno page split, che sposta meta' delle righe in una nuova pagina, con aggiornamento dei bookmarks di concatenazione per permettere la corretta navigazione. Questo NON indica frammentazione, ma solo che possono esserci pagine non riempite "completamente", atte ad ospitare eventuali nuove righe, e questo fa si che la dimensione del database aumenti... L'impostazione di aumento di dimensione definisce di quanto il file aumentera' per ogni blocco di aumento, fino a soddisfare l'esigenza di spazio richiesta. Questo, sempre se e' impostata per la base dati l'opzione di autogrowth.
    In caso contrario, verra' generato un errore di impossibilita' di aggiungere nuove pagine di dati all'interno del db. Questo avviene anche al tentativo di superamento della soglia di 10gb del/dei file di dati nella versione Express di SQL Server.
    L'allocazione di nuovo spazio tende a privilegiare la preparazione di pagine "contigue" per l'assegnazione alle tabelle (ma comunque porta un certo grado di frammentazione nelle operazioni di I/O) questo per alleviare le attivita' che il subcomponente SQL-IO di SQL Server deve effettuare per il caricamento dei dati, che vengono effettuati in blocchi contigui di memoria, considerando che la lettura da effettuarsi sara' sempre a livello di pagina, che essa sia mezza piena o meno....

    La dimensione del/dei transaction log files non viene computata nel calcolo della soglia massima per SQLExpress, come neanche gli evantuali file stream associati al database.

    Tornando allo shrink, sempre @Oregon indica correttamente che l'attivita' tende a muovere le pagine di dati all'interno del file mdf, causando quindi non una "vera frammentazione", ma comunque l'overhead in termini I/O di caricamento delle pagine da disco.

    – 
    Andrea

  • Re: Dimensione massima database SQL Server 2014 Express

    Concordo con quanto hanno  scritto e ben spiegato @asql e @oregon

    Te la butto lì: piuttosto che usare SQL server express 2014 (tra l'altro vecchiotto) con i limiti che ha, perché non migri su MySQL o PostgreSQL?

  • Re: Dimensione massima database SQL Server 2014 Express

    04/07/2024 - Toki ha scritto:


    Concordo con quanto hanno  scritto e ben spiegato da @asql e @oregon

    Te la butto lì: piuttosto che usare SQL server express 2014 (tra l'altro vecchiotto) con i limiti che ha, perché non migri su MySQL o PostgreSQL?

    perchè mi consigli MySQL ? Dovrei rivedere molto nella mi web app (scritta in C# MVC).

    Non è meglio SQL Server Express ultima versione, se non erro 2024 ?

    Tu mi hai scritto che concordi con quanto già suggerito, ma non vorrei aver capito male ma nessuno ha risposto al mio quesito: ho fatto lo shrink solo del log (ho allegato l'immagine che mostra come l'ho fatto), ma ho notato che la dimensione del DB si è notevolmente ridotta (vedi sempre immagine allegata). Nessuno mi ha risposto il perchè ? 

  • Re: Dimensione massima database SQL Server 2014 Express

    Salve,

    non comprendo bene cosa “intendi”… l'operazione di shrink riduce il db come da impostazioni che hai effettuato, sempre che riesca ovviamente a liberare pagine (vuote) e restituirle al file system.

    Avendolo in effetti fatto, cioe' liberando pagine vuote e restituendo lo spazio al file system, significa che ovviamente l'attivita' era possibile.

    quindi non comprendo la domanda :D

    puoi per favore approfondire?

    un saluto,
    – 
    Andrea

  • Re: Dimensione massima database SQL Server 2014 Express

    05/07/2024 - 7409 ha scritto:


    perchè mi consigli MySQL ? Dovrei rivedere molto nella mi web app (scritta in C# MVC).

    Perché SQL Express è troppo limitato, motivo per cui ti stai arrovellando nelle attività di shrink dei files del database. Attività che si fa raramente e per certi contesti.

    Ti ho fornito un'alternativa, ma c'è ne sono altre.

    Se si tratta di un'applicazione in hosting, potresti inoltre valutare col tuo provider la licenza commerciale SQL Server Web Edition, che ha costi ragionevoli.

  • Re: Dimensione massima database SQL Server 2014 Express

    05/07/2024 - asql ha scritto:


    Salve,

    non comprendo bene cosa “intendi”… l'operazione di shrink riduce il db come da impostazioni che hai effettuato, sempre che riesca ovviamente a liberare pagine (vuote) e restituirle al file system.

    Avendolo in effetti fatto, cioe' liberando pagine vuote e restituendo lo spazio al file system, significa che ovviamente l'attivita' era possibile.

    quindi non comprendo la domanda :D

    puoi per favore approfondire?

    un saluto,
    – 
    Andrea

    Ho eseguito lo shrink del log (che è enorme) mi è stato suggerito qualche post fa.

    Eseguito così:

    la domanda era:

    prima di eseguire quanto sopra la dimensione del database era la seguente:

    dopo l'esecuzione dello shrink del log la dimensione è risultata la seguente:

    la domanda era, è normale che lo shrink sul log ha ridotto anche la dimensione del database ?

  • Re: Dimensione massima database SQL Server 2014 Express

    05/07/2024 - Toki ha scritto:


    05/07/2024 - 7409 ha scritto:


    perchè mi consigli MySQL ? Dovrei rivedere molto nella mi web app (scritta in C# MVC).

    Perché SQL Express è troppo limitato, motivo per cui ti stai arrovellando nelle attività di shrink dei files del database. Attività che si fa raramente e per certi contesti.

    Ti ho fornito un'alternativa, ma c'è ne sono altre.

    Se si tratta di un'applicazione in hosting, potresti inoltre valutare col tuo provider la licenza commerciale SQL Server Web Edition, che ha costi ragionevoli.

    MongoDB invece come alterarnativa a SQL Server Express ?

  • Re: Dimensione massima database SQL Server 2014 Express

    05/07/2024 - 7409 ha scritto:

    la domanda era, è normale che lo shrink sul log ha ridotto anche la dimensione del database ?

    DBCC SHRINKDATABASE (WEBLICProd, 10);

    NON fa lo shrink del solo t-tlog (https://learn.microsoft.com/it-it/sql/t-sql/database-console-commands/dbcc-shrinkdatabase-transact-sql?view=sql-server-ver16)
    ma di tutto il db, file dati + t-log

    salutoni romagnoli,
    – 
    Andrea

Devi accedere o registrarti per scrivere nel forum
14 risposte