sql >> Databáze >  >> RDS >> Mysql

Jak optimalizovat tabulky MySQL/MariaDB

Příkazy z tohoto příspěvku budou fungovat na serveru MySQL a MariaDB.

Čas od času je dobré provádět údržbu databáze. Jedna věc je optimalizovat tabulky. Máme dvě možnosti:

1. OPTIMALIZOVAT TABULKU příkaz

Reorganizuje fyzické úložiště tabulkových dat a souvisejících indexových dat, aby se snížil úložný prostor a zlepšila se efektivita I/O při přístupu k tabulce. Přesné změny provedené v každé tabulce závisí na úložném modulu používaném danou tabulkou.

Viz níže, jak jej používat.

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 [~]#

Pokud chcete spustit příkaz pro více tabulek ze stejné databáze, použijte:

OPTIMIZE TABLE table1,table2,table3;

OPTIMIZE TABLE funguje s tabulkami InnoDB, MyISAM a ARCHIVE.

2. mysqlcheck příkaz

Klient mysqlcheck provádí údržbu tabulek:kontroluje, opravuje, optimalizuje nebo analyzuje tabulky.

Pro kontrolu jedné tabulky použijte:mysqlcheck db_name tbl_name
Chcete-li zkontrolovat všechny tabulky z databáze:mysqlcheck –databases db_name
Chcete-li zkontrolovat tabulky ze všech databází na serveru:mysqlcheck –all-databases

Všimněte si, že databázové tabulky jsou uzamčeny zatímco mysqlcheck běží. Z tabulek nelze vkládat ani mazat žádné záznamy.

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 [~]# 

Pro optimalizaci databáze použijte:

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 [~]#

Pro optimalizaci celé databáze na serveru použijte:

root@web [~]# mysqlcheck -o -A

Zdroje:
Návod na OPTIMALIZUJÍCÍ TABULKU
manuál mysqlcheck


  1. Metoda SqlDataAdapter.Fill je pomalá

  2. Chyba zadání klauzule FROM v Postgresu v dotazu s klauzulí WITH

  3. 10 nejčastějších dotazů o sledování výkonu serveru SQL Server

  4. Nelze se připojit k Postgres DB kvůli typu ověřování 10 není podporováno