Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zoptymalizować tabele MySQL/MariaDB

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest maksymalny rozmiar MySQL VARCHAR?

  2. PyInstaller, plik spec, ImportError:brak modułu o nazwie „blah”

  3. Jak działa funkcja UCASE() w MySQL

  4. JSON_SET() – Wstaw lub zaktualizuj wartości w dokumencie JSON w MySQL

  5. mysql_num_rows():podany argument nie jest prawidłowym zasobem wynikowym MySQL