sql >> Database >  >> RDS >> Mysql

Hoe MySQL/MariaDB-tabellen te optimaliseren

De opdrachten uit dit bericht werken op de MySQL- en MariaDB-server.

Het is een goed idee om van tijd tot tijd databaseonderhoud uit te voeren. Een ding is om te doen is om de tabellen te optimaliseren. We hebben twee opties:

1. OPTIMALISEER TABEL commando

Reorganiseert de fysieke opslag van tabelgegevens en bijbehorende indexgegevens, om de opslagruimte te verminderen en de I/O-efficiëntie bij het openen van de tabel te verbeteren. De exacte wijzigingen die aan elke tabel worden aangebracht, zijn afhankelijk van de opslagengine die door die tabel wordt gebruikt.

Zie hieronder hoe je het kunt gebruiken.

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

Als u de opdracht voor meerdere tabellen uit dezelfde database wilt uitvoeren, gebruikt u:

OPTIMIZE TABLE table1,table2,table3;

OPTIMIZE TABLE werkt met InnoDB-, MyISAM- en ARCHIVE-tabellen.

2. mysqlcheck commando

De mysqlcheck-client voert tafelonderhoud uit:het controleert, repareert, optimaliseert of analyseert tabellen.

Gebruik om één tabel te controleren:mysqlcheck db_name tbl_name
Om alle tabellen uit een database te controleren:mysqlcheck –databases db_name
Om de tabellen van alle databases op de server te controleren:mysqlcheck –all-databases

Merk op dat databasetabellen vergrendeld zijn terwijl mysqlcheck actief is. Er kunnen geen records worden ingevoegd of verwijderd uit de tabellen.

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

Gebruik om een ​​database te optimaliseren:

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

Om de hele database op de server te optimaliseren:

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

Bronnen:
OPTIMALISEREN TAFEL handleiding
mysqlcheck handleiding


  1. varchar2(n BYTE|CHAR) standaard -> CHAR of BYTE

  2. Membership.ValidateUser retourneert altijd false na upgrade naar VS 2010 / .NET 4.0

  3. Hoe mysqli voorbereide verklaringen gebruiken?

  4. Wat is sneller COALESCE OF ISNULL?