„Czego operacje kompaktowe i naprawy zrobić do MDB?”
Po pierwsze, nie martw się naprawą. Fakt, że wciąż istnieją polecenia, które mają na celu wykonanie samodzielnej naprawy, jest dziedzictwem dawnych czasów. To zachowanie tej komendy zostało znacznie zmienione, zaczynając od Jet 3.51 i tak pozostało. Oznacza to, że naprawa nigdy nie zostanie wykonana, chyba że Jet/ACE stwierdzi, że jest to konieczne. Kiedy robisz kompakt, testuje, czy naprawa jest potrzebna i wykonuje ją przed kompaktem.
Co więc robi?
Kompaktowy/naprawia plik danych, eliminując wszelkie nieużywane strony danych, zapisując tabele i indeksy na sąsiadujących stronach danych i zgłaszając wszystkie zapisane pliki QueryDef do ponownego kompilowania przy następnym uruchomieniu. Aktualizuje również niektóre metadane dla tabel oraz inne metadane i wewnętrzne struktury w nagłówku pliku.
Wszystkie bazy danych mają jakąś formę "kompaktowej" operacji, ponieważ są zoptymalizowane pod kątem wydajności. Miejsce na dysku jest tanie, więc zamiast pisać rzeczy, aby efektywnie korzystać z pamięci, piszą do pierwszej dostępnej przestrzeni. Tak więc w Jet/ACE, jeśli zaktualizujesz rekord, rekord zostanie zapisany na stronie oryginalnych danych tylko wtedy, gdy nowe dane mieszczą się na stronie oryginalnych danych. Jeśli nie, oryginalna strona danych zostanie oznaczona jako nieużywana, a rekord zostanie przepisany na zupełnie nową stronę danych. W ten sposób plik może zostać wewnętrznie pofragmentowany, a użyte i nieużywane strony danych są mieszane w całym pliku.
Kompaktowy porządek wszystko porządnie i pozbywa się luzu. Przepisuje również tabele danych w podstawowej kolejności klawiszy (klastry Jet/ACE w PK, ale jest to jedyny indeks, na którym można się skupić). Indeksy są również przepisywane w tym momencie, ponieważ z czasem stają się one również fragmentowane przy użyciu.
Kompakt to operacja, która powinna być częścią regularnej konserwacji dowolnego pliku Jet/ACE, ale nie powinieneś robić tego często. Jeśli występują regularne znaczne nadwyżki, sugeruje to, że możesz niewłaściwie korzystać z bazy danych zaplecza poprzez przechowywanie/usuwanie tymczasowych danych. Jeśli aplikacja dodaje rekordy i usuwa je w ramach zwykłych operacji, masz problem z projektowaniem, który spowoduje regularne rozrost pliku danych.
Aby naprawić ten błąd, przenieś tabele tymczasowe na inny samodzielny dysk MDB/ACCDB, tak aby odtwarzanie nie spowodowało rozrostu głównego pliku danych.
W innej notce, która nie ma zastosowania w tym kontekście, przednia część bload na różne sposoby z powodu natury tego, co jest w nich przechowywane. Ponieważ to pytanie dotyczy MDB/ACCDB używanego przez VB, nie będę wdawał się w szczegóły, ale wystarczy powiedzieć, że zagęszczanie przedniej części jest czymś, co jest niezbędne podczas programowania, ale bardzo rzadko w zastosowaniach produkcyjnych. Jedynym powodem kompaktowania frontendu produkcyjnego jest aktualizacja metadanych i rekompilacja zapisanych w nim zapytań.
i jeśli używasz SQL Server backend, ten krok jest kompletną stratą czasu? –
Tak, jeśli SQL Server jest używany z tyłu, prawie nic nie stanie się z twoją bazą danych na kompaktowej operacji. –