Ejecute OPTIMIZE TABLE para desfragmentar tablas para un mejor rendimiento

12

Estoy ejecutando el sistema operativo Linux de 64 bits. Mi sintonizador mysql dice las siguientes cosas:

-------- Estadísticas Generales ---------------------------------------- ----------
[-] Verificación de versión omitida para el script MySQLTuner
[OK] Actualmente ejecuta MySQL compatible versión 5.1.61-log
[OK] Operando en arquitectura de 64 bits

-------- Estadísticas del motor de almacenamiento --------------------------------------- ----
[-] Estado: -Archivo -BDB -Federado + InnoDB -ISAM -NDBCluster
[-] Datos en tablas MyISAM: 1G (Tablas: 1914)
[-] Datos en tablas InnoDB: 4M (Tablas: 199)
[!!] Tablas fragmentadas totales: 296

-------- Recomendaciones de seguridad ---------------------------------------- ---
[OK] Todos los usuarios de la base de datos tienen contraseñas asignadas

-------- Métricas de rendimiento ---------------------------------------- ---------
[-] Hasta: 6s (7K q [1K qps], 142 conexiones, TX: 8M, RX: 701K)
[-] Lecturas / Escrituras: 97% / 3%
[-] Buffers totales: 1.7G global + 13.2M por hilo (384 hilos máximo)
[OK] Uso máximo de memoria posible: 6.6G (42% de la RAM instalada)
[OK] Consultas lentas: 0% (0 / 7K)
[OK] Mayor uso de conexiones disponibles: 5% (20/384)
[OK] Tamaño del búfer clave / índices MyISAM totales: 1.5G / 2.7G
[OK] Tasa de acierto del búfer clave: 97.4% (553K en caché / 14K lecturas)
[OK] Eficiencia de la caché de consultas: 64,6% (4K en caché / 6K selecciones)
[OK] Consulta de ciruelas pasas por día: 0
[OK] Clasificaciones que requieren tablas temporales: 0% (2 clasificaciones temporales / 337 clasificaciones)
[OK] Tablas temporales creadas en disco: 8% (17 en disco / 198 en total)
[OK] Tasa de aciertos de caché de subprocesos: 85% (20 creados / 142 conexiones)
[OK] Tasa de aciertos de caché de tabla: 98% (438 abierto / 445 abierto)
[OK] Límite de archivo abierto utilizado: 10% (856 / 8K)
[OK] Bloqueos de tabla adquiridos inmediatamente: 99% (2K inmediatos / 2K bloqueos)
[OK] Tamaño de datos InnoDB / grupo de búferes: 4.2M / 8.0M


-------- Recomendaciones ----------------------------------------- ------------
Recomendaciones generales:
    Ejecute OPTIMIZE TABLE para desfragmentar tablas para un mejor rendimiento
    MySQL comenzó en las últimas 24 horas: las recomendaciones pueden ser inexactas

Sus recomendaciones son ejecutar OPTIMIZE TABLEpara desfragmentar tablas para un mejor rendimiento; Pero no sé cómo ejecutarlo a través de Putty.

¿Hay alguien que pueda darme el código? ¿Cómo lo ejecuto a través de Putty?

Barkat Ullah
fuente

Respuestas:

7

OPTIMIZE TABLE es una declaración SQL: ejecútela en un cliente MySQL.

En la línea de comando del servidor, debe tener instalado el cliente de línea de comando; puede conectarse a su base de datos en el cliente con mysql -u username -p.

Vea la documentación enOPTIMIZE TABLE para más información.

Shane Madden
fuente
Este sitio trata sobre preguntas formuladas por administradores de sistemas profesionales.
gparent
@gparent - ¿ehh eso significaba estar en la pregunta, no la respuesta perfectamente válida de Shane?
Mark Henderson el
2
@gparent Right, pero no creo que sea justo juzgar la profesionalidad de alguien basándose en conocer una declaración SQL cuando la ven. La investigación habría encontrado rápidamente la respuesta, pero ... no me gusta la idea de que esta comunidad rechace las preguntas por ser demasiado "obvio".
Shane Madden
Tienes razón, mi comentario no pertenece aquí en absoluto, creo que el autor publicó un comentario sobre la pregunta de Shane y luego lo eliminó, ya sea eso o realmente quise publicarlo en la pregunta de Barkat, pero generalmente agregaría más información si Ese fue el caso.
gparent
1
Sin embargo, no estoy de acuerdo contigo, hay un lugar donde tienes que trazar la línea. Creo que es justo decir que un profesional (preguntas frecuentes: en una capacidad profesional) que actualmente trabaja con bases de datos MySQL e intenta optimizarlas debería ser lo suficientemente competente para googlear el término y descubrir que es una consulta MySQL desde el primer resultado de búsqueda. Tal vez estoy esperando demasiado en cualquier empleado ..
2012
18

También puedes probar mysqlcheck -u username -p --auto-repair --optimize --all-databasesen la terminal.

En cuanto a ejecutar "optimizar tabla", puede iniciar MySQL de esta manera mysql -u username -py desde allí puede ejecutar comandos. Por lo general, el primer comando que uso es, show databases;pero primero deberías encontrar un tutorial de MySQL. El primero que apareció en Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Si estás usando masilla o no es irrelevante. Es posible que desee decir "desde la línea de comandos" en lugar de "a través de Putty".

PJ Brunet
fuente
2
Esta es una solución mucho mejor que la que fue aceptada. No es necesario enumerar todas las bases de datos y tablas antes de ejecutar los comandos, más la reparación automática.
Sammitch
1
También hazte un favor y haz una copia de seguridad de la base de datos antes de ejecutar todo esto. mysqldump -u username -p dbname > dbname.sqly gzip dbname.sqldebería hacerlo bien
Fiasco Labs
Fiasco, en centos al menos, el comando debería sermysqldump -u username -p db_name > dbname.sql
yitwail