Polecenia z tego posta będą działać na serwerach MySQL i MariaDB.
Dobrym pomysłem jest przeprowadzanie od czasu do czasu konserwacji bazy danych. Jedną rzeczą jest zoptymalizowanie tabel. Mamy dwie opcje:
1. OPTYMALIZUJ TABELĘ polecenie
Reorganizuje fizyczne przechowywanie danych tabeli i powiązanych danych indeksowych w celu zmniejszenia miejsca w pamięci i poprawy wydajności we/wy podczas uzyskiwania dostępu do tabeli. Dokładne zmiany wprowadzone w każdej tabeli zależą od silnika pamięci używanego przez tę tabelę.
Zobacz poniżej, jak z niego korzystać.
root@web [~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3670
Server version: 10.1.22-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use roundcube
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [roundcube]> OPTIMIZE TABLE cache;
+-----------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-----------------+----------+----------+-------------------------------------------------------------------+
| roundcube.cache | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| roundcube.cache | optimize | status | OK |
+-----------------+----------+----------+-------------------------------------------------------------------+
2 rows in set (0.04 sec)
MariaDB [roundcube]> quit
Bye
root@web [~]#
Jeśli chcesz uruchomić polecenie dla wielu tabel z tej samej bazy danych, użyj:
OPTIMIZE TABLE table1,table2,table3;
OPTIMIZE TABLE działa z tabelami InnoDB, MyISAM i ARCHIVE.
2. mysqlcheck polecenie
Klient mysqlcheck wykonuje konserwację tabel:sprawdza, naprawia, optymalizuje lub analizuje tabele.
Aby sprawdzić jedną tabelę, użyj:mysqlcheck nazwa_bazy_danych nazwa_tabeli
Aby sprawdzić wszystkie tabele z bazy danych:mysqlcheck –databases nazwa_bazy
Aby sprawdzić tabele ze wszystkich baz danych na serwerze:mysqlcheck –all-databases
Zauważ, że tabele bazy danych są zablokowane podczas działania mysqlcheck. Żadne rekordy nie mogą być wstawiane ani usuwane z tabel.
root@web [~]# mysqlcheck roundcube
roundcube.cache OK
roundcube.cache_index OK
roundcube.cache_messages OK
roundcube.cache_shared OK
roundcube.cache_thread OK
roundcube.contactgroupmembers OK
roundcube.contactgroups OK
roundcube.contacts OK
roundcube.cp_schema_version OK
roundcube.dictionary OK
roundcube.identities OK
roundcube.searches OK
roundcube.session OK
roundcube.system OK
roundcube.users OK
root@web [~]#
Aby zoptymalizować bazę danych, użyj:
root@web [~]# mysqlcheck -o roundcube
roundcube.cache
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.cache_index
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.cache_messages
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.cache_shared
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.cache_thread
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.contactgroupmembers
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.contactgroups
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.contacts
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.cp_schema_version Table is already up to date
roundcube.dictionary
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.identities
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.searches
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.session
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.system
note : Table does not support optimize, doing recreate + analyze instead
status : OK
roundcube.users
note : Table does not support optimize, doing recreate + analyze instead
status : OK
root@web [~]#
Aby zoptymalizować całą bazę danych na serwerze, użyj:
root@web [~]# mysqlcheck -o -A
Zasoby:
Instrukcja OPTYMALIZACJI TABELI
instrukcja mysqlcheck