2009-07-20 8 views
11

Czy istnieje potrzeba okresowego kompaktowania baz danych SQL CE? Czy automatyczne kurczenie się wystarczy? Nasz średni rozmiar bazy danych wynosi około 100 MB, a duże użytkownicy trafiają 400-500 MB (ale są to bardzo rzadkie przypadki). Jeśli musimy ręcznie skompaktować, jak możemy powiedzieć, kiedy powinniśmy? Czy istnieje sposób, aby programowo określić poziom fragmentacji lub procent zmarnowanej przestrzeni? Jeśli nie, to jaki inny próg możemy użyć?Jak często należy kompaktować bazę danych SQL CE?

Poprzednia wersja produktu została zbudowana na (sondowania) bazy danych MS Access, więc musieliśmy okresowo kompaktować tylko po to, aby działało.

+0

Możesz mieć więcej szczęścia zadając to pytanie na http://serverfault.com/ – andychase

Odpowiedz

8

Wyobrażam sobie, że jeśli możesz skonfigurować bazę danych tak, aby automatycznie kurczyła się i naprawiała w razie potrzeby, to jest bardzo dokładne. Dlatego brakuje literatury na temat najlepszych praktyk; istnieje przeważające założenie, że "po prostu działa". Więc wszelkie wskazówki, które otrzymasz w tej dziedzinie, będą niejasne.

Oto (częściowe) cytat z webcast na http://www.microsoft.com/web/library/Details.aspx?id=sql-server-2008-compact-express-depoly-manage

konserwacji SQL Server Express Editions jest dość podobna do zarządzania żadnej innej bazy danych dla wielu użytkowników, co oznacza, że mają możliwość wejdź i uzyskaj ofertę z grupami plików, możemy zaoferować z opcjami kopii zapasowych i odzyskiwaniem modeli i nie. [Ale] kiedy mamy do czynienia z wersją kompaktową lub usługą SQL CE, nie mamy prawie tylu opcji co . Naprawdę jedynymi opcjami, które mamy , jest sposób, w jaki chcemy radzić sobie z zmniejszaniem i naprawą.

Oto kolejny jeden z MSDN w http://msdn.microsoft.com/en-us/library/ms838028.aspx#youcantakeitwithyou_sqlserverce_topic4

Zauważ, że dają one dobre szczegółów na temat architektury bazy danych, ale wciąż nie dają harmonogram konserwacji. Ich porady: zrobić, gdy baza danych zaczyna się powoli. Należy również pamiętać, że ta porada jest ważna około 2005 roku i od tego czasu sytuacja się poprawiła; tj. procedury konserwacji zostały teraz zautomatyzowane.

Keep Your House (lub bazy danych) w celu
Innym ważnym czynnikiem w wykonywaniu dużych baz danych w SQL Server CE 2.0 jest organizacja sama struktura bazy danych. Ponieważ aplikacja modyfikuje zawartość bazy danych, rekordy stają się bardziej losowo rozmieszczone w strukturze plików bazy danych w strukturze pliku . Ten współczynnik jest szczególnie ważny po dużej liczbie wstawień i usunięć. Aby zapewnić optymalny dostęp do bazy danych, zwinąć bazę danych po każdej znaczącą zmianę zawartości.

Oprócz odzyskania niewykorzystanej przestrzeń, wykonując wypraski na bazie ma dwa znaczące oddziaływanie na wydajności: po pierwsze, że przechowuje wszystkie rekordy tabeli w kolejności ich klucza podstawowego; po drugie, aktualizuje statystyki używane przez procesor zapytania .

Zamawianie rekordów według klucza podstawowego może znacząco poprawić klucz podstawowy dostęp. Dzieje się tak ze względu na stronę SQL Server CE (i większość innych baz danych). Zamiast ładowania pojedynczych rekordów z bazy danych do pamięci, SQL Server CE ładuje bloki rekordów o nazwach stron. Gdy rekordy bazy danych są zgrupowane w kolejności według klucza podstawowego, ładowanie strony zawierającej jeden rekord automatycznie ładuje te rekordy z podobnych wartości klucza podstawowego. Dla większości aplikacjach powoduje to co określany jako dobry „trafień” co oznacza, że ​​gdy aplikacja idzie dostęp do kolejnych baz rekordy, istnieje duże prawdopodobieństwo że strona zawierająca te rekordy jest już w pamięci i można uzyskać bezpośredni dostęp do . Gdy rekordy są bardziej losowo rozmieszczone, jak często dzieje się po dużej liczbie wkładkami i usuwa, jest biedny stopa hitem wymagająca SQL Server CE do odzyskać więcej stron z pliku bazy danych dostęp do takiej samej liczby dokumentacja.

Statystyki procesora zapytań wpływają na to, w jaki sposób procesor kwerendy określa najlepszą metodę dla wyszukiwania rekordów. Na decyzje takie jak , czy użyć klucza, czy wykonać sekwencyjny skan , aby znaleźć konkretny rekord , mają wpływ statystyki procesora zapytania . Ponieważ statystyki stają się nieaktualne, zwiększa się prawdopodobieństwo, że procesor z zapytaniem może podjąć decyzję o mniejszej niż optymalna . Wykonanie kompaktowego odświeża te statystyki.

Sympatyzuję z Państwa doświadczeniami z bazami danych Access. Jednak sądzę, że przekonasz się, że twoje doświadczenia z SQL Server CE są mało podobne.

Powiązane problemy