2012-02-19 8 views
10

W mojej bazy danych MySQL widzę te statystyki:Jak zmniejszyć obciążenie serwera MySQL, jak wyświetla się w phpMyAdmin?

Type Usage 
Data 16,384 Bytes 
Index 32,768 Bytes 
Overhead 405,0 MB 
Effective -424,624,128 Bytes 
Total 49,152 Bytes 

Kiedy próbuję polecenia check table, ALTER TABLE 'mytable' ENGINE = INNODB, OPTIMIZE TABLE, nic nie dzieje się z głową.

Dlaczego nic się nie dzieje, czy powinienem się martwić i kiedy powinienem się martwić? Widziałem inne pytania, które stwierdzają, że "martw się, gdy obciążenie jest zbyt duże". Co jest za duże?

+2

Myślę, że uruchomienie TABELI OPTYMALIZACJI powinno naprawić narzut. I nie jestem pewien, ale myślę, że nie dotyczy to InnoDB. Wydaje się to być duplikatem http://stackoverflow.com/questions/565997/in-mysql-what-does-overhead-mean-what-is-bad-af-it-andhow-to-fix-it – Abhay

+0

Co to pytanie ma wspólnego z phpMyAdmin? – Mchl

+0

@Mchl Polecenia są wykonywalne w phpMyAdmin. – nhaarman

Odpowiedz

11

Obciążenie w PHPMyAdmin jest obliczane przez kolumnę "Data_free" zwróconą przez SHOW STAŁY STATUS. Zostało to wyjaśnione w dokumentacji MySQL: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html

Data_free: Liczba przydzielonych, ale nieużywanych bajtów.

Począwszy od MySQL 5.1.24, informacja ta zostanie również pokazany na tabelach InnoDB (poprzednio było to wartości Komentarz). Tabele InnoDB zgłaszają wolne miejsce w obszarze tabel, do którego należy tabela. W przypadku tabeli znajdującej się we współużytkowanym obszarze tabel jest to wolne miejsce udostępnionego obszaru tabel . Jeśli używasz wielu obszarów tabel, a tabela ma swój własny obszar tabel, wolne miejsce jest przeznaczone tylko dla tej tabeli. Wolna przestrzeń oznacza liczbę całkowicie wolnych 1MB, minus margines bezpieczeństwa . Nawet jeśli wolna przestrzeń zostanie wyświetlona jako 0, możliwe będzie wstawienie wierszy , o ile nie trzeba przydzielać nowych zakresów.

Jednak dla InnoDB to jest ważne „tabel InnoDB zgłosić wolną przestrzeń tabel, do której należy tabela. Na stole znajduje się w udostępnionym tabel, to wolna przestrzeń z udostępnionego tabel.”. Tak więc przy typowej konfiguracji InnoDB ("innondb_file_per_table" nie jest ustawiona) otrzymasz wolne miejsce dla wszystkich tabel, a nie dla pojedynczej tabeli. Prawdopodobnie dlatego phpMyAdmin ignoruje/odrzuca informacje lub w tabeli Optimize nic się nie dzieje.

Powinieneś przeczytać ten post, który jasno wyjaśnia, jak zoptymalizować tabelę w innodb.

7

Run:

OPTIMIZE TABLE table_name; 

Na każdym stole, który chcesz naprawić - powinno to zmniejszyć obciążenie. Inną opcją jest użycie tego polecenia:

/usr/bin/mysqlcheck --auto-repair --check --optimize --all-databases 

Spowoduje to sprawdzenie, naprawę i optymalizację wszystkich tabel we wszystkich bazach danych.

Powiązane problemy