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ę?
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łujeoverhead
, 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ącOPTIMIZE TABLE
kompaktowanie tabeli i indeksów.źródło
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.
źródło
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
Myślę, że potwierdziłem to zachowanie. I z pewnością byłoby to bardzo przydatne.
źródło