2009-07-20 18 views
11

Esiste anche la necessità di compattare periodicamente i database SQL CE? L'auto restringimento è sufficiente? La nostra dimensione media del database è di circa 100 Mb, con utenti di grandi dimensioni che raggiungono 400-500 Mb (ma quelli sono molto rari). Se dobbiamo compattare manualmente, come possiamo dire quando dovremmo? C'è un modo per dire a livello di programmazione il livello di frammentazione o la percentuale di spazio sprecato? In caso contrario, quale altra soglia possiamo usare?Quante volte si deve compattare un database SQL CE?

La versione precedente del prodotto è stata creata su un (gasp) database MS Access, pertanto è stato necessario compattare periodicamente solo per mantenerlo funzionante.

+0

Potresti avere più fortuna a fare questa domanda su http://serverfault.com/ – andychase

risposta

8

Immagino che, se è possibile impostare il database in modo che si riduca e riparazioni automaticamente secondo necessità, è dannatamente accurato. È per questo che c'è una carenza di letteratura sulle migliori pratiche; c'è un'ipotesi prevalente che "funziona". Quindi qualsiasi guida che otterrete in quest'area sarà vaga.

Ecco una (parziale) citazione da un webcast a http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

Mantenere i tuoi SQL Server Express edizioni è abbastanza simile alla gestione qualsiasi altro database multi-utente, il che significa che abbiamo la possibilità di entrare e trattare con gruppi di file, possiamo trattare con opzioni di backup e modelli di recupero e cosa no. [Ma] quando ci occupiamo di con edizioni compatte o SQL Service CE, non abbiamo quasi altrettante opzioni . In realtà, le uniche opzioni che abbiamo è il modo in cui vogliamo trattare con ridurre e riparare.

Ecco un altro da MSDN all'indirizzo http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

noti che danno buoni dettagli circa l'architettura del database, ma l'ancora non danno un programma di manutenzione. Il loro consiglio: farlo quando il database inizia a rallentare. Nota anche che questo consiglio è circa 2005, e le cose sono migliorate da allora; cioè le procedure di manutenzione sono state ora automatizzate.

mantenere la casa (o database) in modo
Un altro fattore importante nel prestazioni dei grandi database in SQL Server CE 2.0 è l'organizzazione di la struttura del database stesso. Poiché l'applicazione modifica il contenuto del database , i record diventano più distribuiti casualmente all'interno della struttura del file di database . Questo fattore è particolarmente vero dopo un numero grande di inserimenti ed eliminazioni . Per garantire l'accesso ottimale al database, compattare il database dopo qualsiasi modifica sostanziale al contenuto. .

Oltre a recuperare inutilizzato spazio, l'esecuzione di una compatta sul database ha due impatti notevoli sulla prestazioni: in primo luogo, memorizza tutti i record della tabella in ordine di loro chiave primaria ; in secondo luogo, aggiorna le statistiche utilizzate dal processore della query .

L'ordinazione dei record con la chiave primaria può migliorare notevolmente l'accesso alla chiave primaria . Ciò è dovuto alla natura orientata alla pagina di SQL Server CE (e alla maggior parte degli altri database). Piuttosto rispetto al caricamento di singoli record dal il database in memoria, SQL Server CE carica blocchi di record chiamati pagine . Quando i record del database sono raggruppati in ordine per chiave primaria, caricamento della pagina contenente un record carica automaticamente tali record con valori di chiave primaria simili a . Per la maggior parte applicazioni, questo si traduce in ciò che è indicato come un buon "tasso di successo", che significa che quando l'applicazione va per accedere successive del database record, v'è una forte probabilità che la pagina che contiene i record è già in memoria e può essere direttamente accessibile. Quando i record sono distribuiti più in modo casuale, come spesso accade dopo un gran numero di inserti e cancella, c'è un povero tasso di successo richiede SQL Server CE per recuperare più pagine dal file di database per accedere lo stesso numero di record.

Le statistiche del processore di query influenzano il modo in cui il processore di query determina il metodo migliore per il rilevamento di record . Decisioni come se utilizzare una chiave o effettuare una scansione sequenziale per individuare un particolare record sono tutte influenzate dalle statistiche del processore della query . Man mano che le statistiche diventano obsolete, aumenta la probabilità che il processore della query possa prendere una decisione non ottimale . L'esecuzione di un compact aggiorna queste statistiche.

Sono solidale con la vostra esperienza con i database di Access. Tuttavia, penso che troverete che la vostra esperienza con SQL Server CE ha poca somiglianza.

Problemi correlati