Quando verifico o tamanho dos meus bancos de dados no MySQL, recebo isto:
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 |
+--------------------+----------------------+------------------+
Quando verifico o tamanho no disco, recebo isto:
$ sudo du -h --max-depth=1 /var/lib/mysql/
317M /var/lib/mysql/alfresco
1.4G /var/lib/mysql/drupal
Se eu combinar o espaço usado e livre fornecido por Maria DB e compará-lo com os números do disco, tenho o seguinte:
alfresco: DB=279MB DISK=317MB (+14%)
drupal: DB=1100MB DISK=1433MB (+30%)
P: É normal ter tanta sobrecarga no disco/Há algo que eu possa fazer para reduzi-la?
Para sua informação, pensei que executar uma otimização mysql ajudaria ( usando esse comando ), reduziu o tamanho dos bancos de dados, mas não alterou o tamanho dos arquivos no disco.
Informação 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)
Se você estiver usando tabelas InnoDB, o tamanho de seus arquivos ibdata aumentará com o tempo. Portanto, se você emitir uma
DELETE
instrução, o tamanho do seu banco de dados será reduzido, mas o arquivo ibdata permanecerá o mesmo (não reduzido).Se você não estiver usando
innodb_file_per_table
a opção, a única maneira de recuperar o espaço é despejando o banco de dados e restaurando a partir do dumpfile.No entanto, se você estiver usando
innodb_file_per_table
, poderá emitir umem tabelas que crescem muito para recuperar o espaço em disco.