Cuando verifico el tamaño de mis bases de datos en MySQL obtengo esto:
MariaDB [(none)]> SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema;
+--------------------+----------------------+------------------+
| Data Base Name | Data Base Size in MB | Free Space in MB |
+--------------------+----------------------+------------------+
| alfresco | 245.75000000 | 34.00000000 |
| drupal | 892.15625000 | 216.00000000 |
+--------------------+----------------------+------------------+
Cuando verifico el tamaño en el disco obtengo esto:
$ sudo du -h --max-depth=1 /var/lib/mysql/
317M /var/lib/mysql/alfresco
1.4G /var/lib/mysql/drupal
Si combino el espacio usado y el libre proporcionado por Maria DB y lo comparo con las cifras del disco, tengo lo siguiente:
alfresco: DB=279MB DISK=317MB (+14%)
drupal: DB=1100MB DISK=1433MB (+30%)
P: ¿Es normal tener tanta sobrecarga en el disco / ¿Hay algo que pueda hacer para reducirlo?
Para su información, pensé que la ejecución de una optimización mysql ayudaría ( usando ese comando ), redujo el tamaño de las bases de datos, pero no cambió el tamaño de los archivos en el disco.
Información adicional:
server: ubuntu server 10.04 LTS
DB server: MariaDB
DB engine: InnoDB v10 (for all tables)
Table collation: utf8_general_ci
Nb Drupal tables: 416 (0.80MB overhead per table)
Nb Alfresco tables: 84 (0.45MB overhead per table)
Respuestas:
Si está utilizando tablas InnoDB, el tamaño de sus archivos ibdata crecerá con el tiempo. Entonces, si emite una
DELETE
declaración, el tamaño de su base de datos se reducirá, pero el archivo ibdata seguirá siendo el mismo (no se reducirá).Si no está utilizando la
innodb_file_per_table
opción, la única forma de recuperar el espacio es volcando la base de datos y restaurando desde el archivo de volcado.Sin embargo, si está utilizando
innodb_file_per_table
, puede emitir unen tablas que crecen demasiado para reclamar el espacio en disco.
fuente
AlTER TABLE foo ENGINE=InnoDB
sininnodb_file_per_table=1
no encogerá la ibdata.