Domanda

Ho avuto un tavolo con oltre 70 milioni di dischi in un database SQL Server, ho lasciato cadere quel tavolo (una sola volta cosa) per liberare spazio sul disco, ma sembra che la dimensione non cambia molto. Io vedo che avrei potuto ridursi il db al minimo.

E 'questo il modo per farlo?

L'ultima volta che ho fatto uno strizzacervelli utilizzando SQL Server Management Studio, ci sono voluti un paio d'ore per essere completato. Esiste un modo più veloce?

entrare descrizione dell'immagine qui

È stato utile?

Soluzione

Eliminazione di una tabella consente di liberare lo spazio all'interno del database, ma non rilascerà la schiena spazio a Windows. Che richiede restringimento del file di database. Tuttavia non vogliamo che il file di database completo. Noi vogliamo un sacco di spazio libero in modo che come abbiamo caricare più dati che non devono crescere spesso il file di dati. Questo fa sì che la frammentazione dei file di dati sui dischi fisici.

Per quanto riguarda fare contrazione più veloce, non c'è alcun modo per renderlo più veloce. Shrinking il database richiede la lettura e riscrittura maggior parte dei dati all'interno del database in modo che tutto lo spazio bianco può essere rilasciato dal file di database indietro al sistema operativo. Tutto questo IO richiede tempo, e provoca un sacco di problemi di frammentazione.

Altri suggerimenti

Ti consigliamo di leggere su DBCC SHRINKFILE con molta attenzione.

http://technet.microsoft.com/en-us/library /ms189493.aspx

In generale, non si desidera ridurre il database per la dimensione più piccola possibile su disco. Vuoi lasciare SQL Server con un sacco di spazio in modo che esso non ha bisogno di auto crescere molto. La risposta qui ha un sacco di informazioni utili:

https://stackoverflow.com / domande / 4522719 / a-dbcc-shrinkdatabase-o-non-a-dbcc-SHRINKDATABASE-thats-the-domanda

Shrink è una procedura piuttosto costoso e potrebbe richiedere ore. Per utilizzare lo spazio in modo più efficiente è possibile trasferire le tabelle in un nuovo filegroup con indici cluster precreated e rilasciare precedente. Io personalmente preferisco questo perché è più facile fare questo "strizzacervelli" in più fasi e più predictable- quindi più facili da programma. Quando si avvia DBCC SHRINK non si sa quanto tempo ci vorrà.

Update (Grazie a mrdennny per la segnalazione): questo è un approccio molto specifico e può essere utilizzato solo se si dispone di un database di sola lettura (come data warehouse) perché durante la copia dei dati su un altro tavolo senza scrittura sono autorizzati a questo tavolo per coerenza. Per risparmiare tempo e ottenere prestazioni max di esso è possibile passare al modello di recupero del database e l'uso SEMPLICE TABLOCK suggerimento -. Questo permetterà sistema di utilizzare la registrazione minima e fare molto meno scritti in log delle transazioni

Leggi questo articolo: http: //itknowledgeexchange.techtarget.com/sql-server/deleting-lob-data-and-shrinking-the-database/

"La soluzione che abbiamo fornito era in realtà piuttosto semplice. Fare la cancellazione del database come normale. Poi il backup e ripristinare il database. Poi fare lo strizzacervelli, seguita dalla ricostruzione delle indici cluster al fine di risolvere il problema della frammentazione, che il ridursi introdurrà ".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top