proste pytanie, ale od jakiegoś czasu mnie to dręczy ...
czym jest „narzut” w MySQL i czy powinienem się martwić?
czy kliknięcie „optymalizuj tabelę” naprawia to naprawdę?
proste pytanie, ale od jakiegoś czasu mnie to dręczy ...
czym jest „narzut” w MySQL i czy powinienem się martwić?
czy kliknięcie „optymalizuj tabelę” naprawia to naprawdę?
Odpowiedzi:
Wydaje się, że narzut jest tymczasowy na dysku, którego baza danych używała do uruchamiania niektórych zapytań, więc powinieneś się martwić tylko wtedy, gdy zrobi się naprawdę dużo.
Możesz porównać „Optymalizację tabeli” z defragmentacją dysku twardego.
Cytuję:
Z czasem każda baza danych będzie wymagać jakiejś formy konserwacji, aby utrzymać ją na optymalnym poziomie wydajności. Czyszczenie usuniętych wierszy, ponowne ustalanie kolejności, kompresowanie, zarządzanie ścieżkami indeksów, defragmentacja itp. To tak zwana OPTYMALIZACJA w mysql i innych terminach w innych bazach danych. Na przykład IBM DB2 / 400 nazywa to REORGANIZE PHYSICAL FILE MEMBER.
To trochę jak wymiana oleju w samochodzie lub dostrajanie. Możesz pomyśleć, że naprawdę nie musisz, ale robiąc to, twój samochód działa znacznie lepiej, uzyskujesz lepszy przebieg na benzynie, itp. Samochód, który ma dużo przebiegów, wymaga częstszych regulacji. Baza danych, która jest intensywnie używana, wymaga tego samego. Jeśli wykonujesz dużo operacji UPDATE i / lub DELETE, a zwłaszcza jeśli twoje tabele mają kolumny o zmiennej długości (VARCHAR, TEXT, itp.), Musisz być na bieżąco.
Jeśli mówisz o rzeczy, która phpMyAdmin
wywołuje overhead
, to jest to rzeczywisty rozmiar pliku danych tabeli w stosunku do idealnego rozmiaru tego samego pliku danych (tak jakby był właśnie przywracany z kopii zapasowej).
Ze względu na wydajność MySQL
nie kompaktuje plików danych po usunięciu lub zaktualizowaniu wierszy.
Jest overhead
to złe w przypadku skanowania tabeli, tj. Gdy zapytanie musi obejmować wszystkie wartości tabeli, będzie musiało spojrzeć na bardziej puste miejsce.
Możesz się go pozbyć overhead
, uruchamiając OPTIMIZE TABLE
kompaktowanie tabeli i indeksów.
Narzut to Data_free tabeli, czyli liczba przydzielonych, ale nieużywanych bajtów. Możemy go znaleźć za pomocą polecenia SQL SHOW TABLE STATUS . Jest to wolne miejsce w przydzielonym rozmiarze dla twojego stołu.
Optymalizacja tabeli może być bardzo problematyczna. Na przykład jeśli tabela jest intensywnie używana w witrynie.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
Po usunięciu dużej części tabeli MyISAM lub ARCHIVE lub wprowadzeniu wielu zmian w tabeli MyISAM lub ARCHIVE z wierszami o zmiennej długości (tabele, które mają kolumny VARCHAR, VARBINARY, BLOB lub TEXT). Usunięte wiersze są utrzymywane na połączonej liście, a kolejne operacje WSTAWIANIA ponownie wykorzystują stare pozycje wierszy. <
Myślę, że potwierdziłem to zachowanie. I z pewnością byłoby to bardzo przydatne.