MySQL tiene un comando OPTIMIZE TABLE que se puede usar para recuperar espacio no utilizado en una instalación de MySQL. ¿Hay alguna forma (comando incorporado o procedimiento almacenado común) para ejecutar esta optimización para cada tabla en la base de datos y / o instalación del servidor, o es algo que tendría que escribir usted mismo?
245
OPTIMIZE TABLE
fue útil para MyISAM. Ahora que ese motor se va, la necesidadOPTIMIZE TABLE
se va, especialmente la necesidad de optimizar periódicamente todas las tablas.Respuestas:
Puede
mysqlcheck
hacerlo para hacerlo en la línea de comando.Una base de datos:
Todas las bases de datos:
fuente
mysqlcheck -u [username] -p[password] -o [database name]
OPTIMIZE TABLE
comando: dev.mysql.com/doc/refman/5.5/en/optimize-table.html . Por ejemplo, optimice una tabla como esta:OPTIMIZE TABLE <your_schema>.<your_table>;
optimice todas las tablas en un esquema dado como este:select concat('OPTIMIZE NO_WRITE_TO_BINLOG TABLE ',table_schema,'.',table_name,';') into outfile '/tmp/optimize_all_tables.sql' from information_schema.tables where table_schema = 'pabeta' and table_type = 'base table'; source /tmp/optimize_all_tables.sql;
Hice este script 'simple':
Para ejecutarlo, simplemente péguelo en cualquier IDE de SQL conectado a su base de datos.
Aviso: este código NO funcionará en phpmyadmin.
Cómo funciona
Ejecuta una
show tables
declaración y la almacena en una declaración preparada. Luego ejecuta aoptimize table
en el conjunto seleccionado.Puede controlar qué tablas optimizar mediante la configuración de un valor diferente en la var
@tables_like
(por ejemplo:)set @tables_like = '%test%';
.fuente
bd
partir del código de error @b: 1064. Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de 'NULL' en la línea 1El siguiente ejemplo de script php puede ayudarlo a optimizar todas las tablas en su base de datos
fuente
Realice todos los procedimientos necesarios para arreglar todas las tablas en todas las bases de datos con un simple script de shell:
fuente
para todas las bases de datos:
Para una optimización de base de datos:
fuente
mysqlcheck -Aos
no requiere usuario + contraseña.Desde phpMyAdmin y otras fuentes puede usar:
Luego puede copiar y pegar el resultado en una nueva consulta o ejecutarlo desde su propia fuente. Si no ve la declaración completa:
fuente
Si desea analizar, reparar y optimizar todas las tablas en todas las bases de datos en su servidor MySQL, puede hacerlo de una sola vez desde la línea de comandos. Sin embargo, necesitarás root para hacer eso.
Una vez que ejecute eso, se le pedirá que ingrese su contraseña de root de MySQL. Después de eso, comenzará y verá resultados a medida que suceda.
Salida de ejemplo:
Si no conoce la contraseña raíz y está utilizando WHM, puede cambiarla desde WHM yendo a: Inicio> Servicios SQL> Contraseña raíz MySQL
fuente
Desde la línea de comando:
luego escriba la contraseña
fuente
Puede optimizar / verificar y reparar todas las tablas de la base de datos, utilizando el cliente mysql.
Primero, debe obtener todas las listas de tablas, separadas con ',':
Ahora, cuando tenga todas las listas de tablas para la optimización:
fuente
El
MySQL Administrator
(parte de las herramientas de la GUI de MySQL) puede hacerlo por usted a nivel de base de datos.Simplemente seleccione su esquema y presione el
Maintenance
botón en la esquina inferior derecha.Como las herramientas de la GUI han alcanzado el estado de fin de vida, son difíciles de encontrar en la página mysql. Los encontré a través de Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
No sé si el nuevo MySQL Workbench también puede hacer eso.
Y puede usar la
mysqlcheck
herramienta de línea de comandos que también debería poder hacerlo.fuente
Si está accediendo a la base de datos directamente, puede escribir la siguiente consulta:
fuente
Este script bash aceptará la contraseña de root como opción y la optimizará una por una, con salida de estado:
fuente
Un script bash de inicio para enumerar y ejecutar una herramienta contra los DB ...
fuente
mis 2cents: comience con la tabla con mayor fragmentación
fuente