MySQLのデータベースサイズとディスク上の実際のサイズとの実質的な違い

dba.stackexchange https://dba.stackexchange.com/questions/11567

  •  16-10-2019
  •  | 
  •  

質問

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;

ディスクスペースを取り戻すには大きすぎる成長するテーブル。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top