我运行以下查询来获取数据库大小:
SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;
我注意到一个数据库占用了8GB。所以我进入该数据库并开始截断一些表。当我重新运行上面的查询时,它说我正在清理的一个数据库下降到200MB。
然后我进入bash并做了df -h
,但我注意到我的磁盘使用率从95GB下降到93GB。因为MySQL命令似乎表明我已经摆脱了8GB的数据,所以我期待它降至87G。为什么会出现这种差异?
答案 0 :(得分:0)
创建表时,它存在于表空间 - 预分配(基本上是固定的起始大小)文件或文件集中。删除表中的数据对表空间的影响很小,它保持相同的大小。如果该表将在未来使用,摆脱现有的"空"表空间文件可能不是一个好主意。截断表会删除表中的所有行。
我没有尝试缩小表空间,但看看这个alter tablespace帮助: http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html
语法是:
ALTER TABLESPACE tablespace_name
{ADD|DROP} DATAFILE 'file_name'
[INITIAL_SIZE [=] size]
[WAIT]
ENGINE [=] engine_name
我猜你想要DROP一个数据文件。