¿Hay algún comando para optimizar todas las tablas de MySQL una por una automáticamente?


8

Ejecuto debajo de la instrucción de línea de comando para optimizar una tabla: optimize table tablename;

¿Hay algún comando o declaración que pueda optimizar todas las tablas una por una de la base de datos seleccionada?

Respuestas:



4

Puede usar el esquema de información para generar las declaraciones que necesita:

SELECT Concat('OPTIMIZE TABLE ',TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES 
   WHERE table_schema='yourdb';

1

Puede escribirlo y colocar todas las tablas en una sola línea.

TODAS LAS TABLAS EN LA BASE DE DATOS ACTUAL

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQL_DATA=mydb
TBLLIST=""
COMMA=""
SQL="SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE()"
for TBL in `mysql ${MYSQL_CONN} -D${MYSQL_DATA} -ANe"${SQL}"`
do
    TBLLIST="${TBLLIST}${COMMA}${TBL}"
    COMMA=","
done
SQL="OPTIMIZE TABLE ${TBLLIST};"
mysql ${MYSQL_CONN} -D${MYSQL_DATA} -ANe"${SQL}"

TODAS LAS TABLAS EN TODAS LAS BASES DE DATOS DEL USUARIO

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
TBLLIST=""
COMMA=""
SQL="SELECT CONCAT(table_schema,'.',table_name) FROM information_schema.tables WHERE"
SQL="${SQL} table_schema NOT IN ('information_schema','mysql','performance_schema')"
for DBTB in `mysql ${MYSQL_CONN} -ANe"${SQL}"`
do
    TBLLIST="${TBLLIST}${COMMA}${DBTB}"
    COMMA=","
done
SQL="OPTIMIZE TABLE ${TBLLIST};"
set -x
mysql ${MYSQL_CONN} -ANe"${SQL}"

DARLE UNA OPORTUNIDAD !!!


Esto parece llevar mucho tiempo en mi servidor y no puedo ver un progreso. ¿Puedes agregar alguna salida que tabla está optimizada en el bucle?
— rubo77

Adapte su script para optimizar todas las bases de datos para que se ejecute una por una: stackoverflow.com/a/33541722/1069083
— rubo77
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.