2009-02-19 11 views

Respuesta

134

Parece que la sobrecarga es el espacio de disco temporal que la base de datos utiliza para ejecutar algunas de las consultas, por lo que solo debe preocuparse si esto se pone realmente alto.

Puede comparar 'Optimizar la tabla' con la desfragmentación de su disco duro.

cito:

Cada base de datos, con el tiempo, requieren algún tipo de mantenimiento para mantenerlo a una actuación nivel óptimo . Depurar filas eliminadas, resecuenciar, comprimir, administrar rutas de índice, desfragmentar, etc. es lo que se conoce como OPTIMIZATION en mysql y otros términos en otras bases de datos. Por ejemplo, IBM DB2/400 lo llama REORGANIZAR MIEMBRO DE ARCHIVO FÍSICO.

Es como cambiar el aceite en su automóvil o hacer una puesta a punto. Puede pensar que realmente no tiene que hacerlo, pero por haciendo que su auto funcione mucho mejor, obtiene mejor millaje de gasolina, etc. Un auto que obtiene mucho kilometraje requiere puesta a punto con mayor frecuencia. Una base de datos que usa mucho requiere lo mismo. Si que está haciendo una gran cantidad de actualizar y/o operaciones DELETE, y especialmente si sus tablas tienen longitud variable columnas (VARCHAR, TEXT, etc.), es necesario para mantener 'er puesto a punto.

+1

@Jasper ¿Las tablas están completamente bloqueadas (no se puede leer/escribir) durante la duración de la optimización? – Pacerier

+4

¿De dónde proviene esa cita? Estoy encontrando muchos resultados en Google. –

+0

¿cómo sabemos cuál es la causa de la sobrecarga una y otra vez? – mahen3d

75

Si estamos hablando de lo que phpMyAdmin llamadas overhead, entonces es el tamaño real de una tabla de archivo de datos en relación con el tamaño ideal del mismo archivo de datos (como si simplemente cuando restaurado a partir de copia de seguridad).

Por razones de rendimiento, MySQL no compacta los archivos de datos después de que elimina o actualiza las filas.

Este overhead es malo para la exploración de tabla, i. mi. cuando su consulta necesita ejecutarse en todos los valores de la tabla, tendrá que mirar más espacio vacío.

Puede deshacerse del overhead ejecutando OPTIMIZE TABLE que compactará su tabla e índices.

+6

El tamaño documentación de MySQL dice "OPTIMIZE TABLE se debe utilizar si ha eliminado una gran parte de la mesa o si se han realizado muchos cambios en una tabla con filas de longitud variable", esto es mi caso, gracias :) – boclodoa

7

Overhead es Data_free de una tabla, es decir El número de bytes asignados pero no utilizados. Podemos encontrarlo mediante el comando SQL SHOW TABLE STATUS. Es el espacio libre en el tamaño asignado para su mesa.

1

Optimizar la tabla puede ser muy problemático. Por ejemplo, si la tabla se usa mucho en un sitio.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

Después de eliminar una gran parte de una tabla MyISAM o archivo, o hacer muchos cambios a una tabla MyISAM o archivo con registros de longitud variable (tablas que tienen VARCHAR, BLOB, o TEXT columnas). Las filas eliminadas se mantienen en una lista vinculada y las operaciones subsiguientes de INSERT reutilizan las posiciones de fila antiguas. <

Creo que he confirmado este comportamiento. Y sin duda sería muy útil.

Cuestiones relacionadas