Debe ir con innodb_file_per_table y necesita hacer algo de limpieza con la infraestructura actual de InnoDB.
He visto a muchos clientes de alojamiento de bases de datos configurar MySQL y dejar InnoDB en su estado predeterminado. Esto hace que el espacio de tabla del sistema (mejor conocido como ibdata1) crezca enormemente.
Incluso si cambió a innodb_file_per_table, el archivo .ibd tendría que extraerse de ibdata1 e ibdata nunca se reducirá. Por ejemplo, si tiene una tabla llamada mydb.mytable que está dentro de ibdata1 que ocupa 2GB, para extraerla debe hacer lo siguiente:
PASO 01) Agregue esto a /etc/my.cnf
[mysqld]
innodb_file_per_table
PASO 02) service mysql restart
PASO 03) ALTER TABLE mydb.mytable ENGINE=InnoDB;
Eso hará que el archivo /var/lib/mysql/mydb/mytable.ibd
Desafortunadamente, los 2 GB de espacio que ocupaba la mesa antes del cambio no se pueden reclamar. Escribí publicaciones anteriores sobre cómo y por qué limpiar la infraestructura de InnoDB:
Una vez que realice este cambio importante, no olvide aumentar innodb_open_files (por defecto 300) . De lo contrario, el acceso al disco es muy limitado.
Con respecto a las combinaciones, asegúrese de tener índices adecuados que admitan los criterios de combinación.
ACTUALIZACIÓN 2012-04-02 11:30 EDT
El uso de innodb_file_per_table en una instalación nueva hace que ibdata1 crezca muy lentamente porque todo DDL se realiza de forma externa a ibdata. Puede reducir cualquier tabla InnoDB como mencioné antes de esta manera:
ALTER TABLE mydb.mytable ENGINE=InnoDB;
ACTUALIZACIÓN 2012-04-02 16:50 EDT
Cuando se trata de copias de seguridad, tenga mucho cuidado al hacer copias de archivos .ibd. ¿Por qué?
Dentro de cada archivo .ibd hay un valor especial conocido como tablespace_id. Hay una lista de valores de tablespace_id en ibdata1. Si alguna vez realiza el mantenimiento de la tabla que requiere soltar y volver a crear la tabla, tablespace_id será diferente. Hacer una copia de dicho archivo .ibd solo se puede volver a integrar en la base de datos para su uso si también realiza una copia de ibdata1. Eso pone en peligro el tablespace_id de todas las otras tablas de InnoDB. En vista de esto, es preferible que realice copias de seguridad de mysqldump porque mysqldump son copias lógicas de los datos. En otras palabras, la copia de seguridad es independiente del punto en el tiempo de ibdata1 y puede volver a cargarla sin problemas de operatividad.