MySQLのデータベースサイズとディスク上の実際のサイズとの実質的な違い
質問
MySQLの下でデータベースのサイズを確認すると、これがわかります。
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 |
+--------------------+----------------------+------------------+
ディスクのサイズをチェックすると、これがわかります。
$ sudo du -h --max-depth=1 /var/lib/mysql/
317M /var/lib/mysql/alfresco
1.4G /var/lib/mysql/drupal
Maria DBによって提供された使用済みと自由スペースの両方を組み合わせて、ディスクの数値と比較すると、次のようなものがあります。
alfresco: DB=279MB DISK=317MB (+14%)
drupal: DB=1100MB DISK=1433MB (+30%)
Q:ディスクにそれほど頭上にあるのは普通ですか?それを減らすためにできることはありますか?
参考までに、私はmysql otimizeを実行することが役立つと思いました(そのコマンドを使用します)、データベースのサイズを削減しましたが、ディスク上のファイルのサイズは変更されませんでした。
追加情報:
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)
解決
INNODBテーブルを使用している場合、IBDATAファイルのサイズは時間とともに成長します。だから、あなたが発行した場合 DELETE
ステートメント、データベースサイズは縮小しますが、IBDATAファイルは同じままです(減少しません)。
使用していない場合 innodb_file_per_table
オプション、スペースを取り戻す唯一の方法は、データベースをダンプしてダンプファイルから復元することです。
ただし、使用している場合 innodb_file_per_table
, 、発行することができます
ALTER TABLE foo ENGINE=InnoDB;
ディスクスペースを取り戻すには大きすぎる成長するテーブル。
所属していません dba.stackexchange