Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да оптимизираме MySQL/MariaDB таблици

Командите от тази публикация ще работят на MySQL и MariaDB сървър.

Добра идея е да извършвате поддръжка на база данни от време на време. Едно нещо е да оптимизирате таблиците. Имаме две опции:

1. ОПТИМИЗИРАНЕ НА ТАБЛИЦАта команда

Реорганизира физическото съхранение на табличните данни и свързаните с тях индексни данни, за да намали пространството за съхранение и да подобри I/O ефективността при достъп до таблицата. Точните промени, направени във всяка таблица, зависят от механизма за съхранение, използван от тази таблица.

Вижте по-долу как да го използвате.

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

Ако искате да изпълните командата за множество таблици от една и съща база данни, използвайте:

OPTIMIZE TABLE table1,table2,table3;

OPTIMIZE TABLE работи с таблици InnoDB, MyISAM и ARCHIVE.

2. mysqlcheck команда

Клиентът mysqlcheck извършва поддръжка на таблици:проверява, поправя, оптимизира или анализира таблици.

За да проверите една таблица, използвайте:mysqlcheck db_name tbl_name
За да проверите всички таблици от база данни:mysqlcheck –databases db_name
За да проверите таблиците от всички бази данни на сървъра:mysqlcheck –all-databases

Забележете, че таблиците на базата данни са заключени докато mysqlcheck работи. Не могат да се вмъкват или изтриват записи от таблиците.

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

За да оптимизирате база данни, използвайте:

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

За да оптимизирате цялата база данни на сървъра, използвайте:

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

Ресурси:
Ръководство за OPTIMIZE TABLE
ръководство за 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. Присъединяване към MySQL срещу ИЗПОЛЗВАНЕ?

  2. PHP MYSQL UPDATE ако съществува или INSERT, ако не?

  3. mySQL конвертира varchar към дата

  4. ИЗБЕРЕТЕ * ОТ множество таблици. MySQL

  5. Как мога да направя SQL сравнение на низове, чувствителни към главни букви в MySQL?