1

最近,我检查了我在 phpMyAdmin(带有 WAMP)中使用的 SQL 数据库,它们都报告没有可用空间。这在以前不是真的,我不确定是什么导致它发生了变化。可用空间的缺乏使得对数据库的调用非常非常缓慢。我重新安装了 WAMP,为 phpMyAdmin 创建了一个新用户,并将数据库重新导入到新用户中,但无济于事。

这是我用来检查空间的查询和结果:

SELECT table_schema "beek", 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
LIMIT 0 , 30
比克
以 MB 为单位的数据库大小
可用空间 (MB)

------------------------------------------
比克

以 MB 为单位的数据库大小 4.11813927

可用空间 (MB) 0.00000000

-----------------------------------------
信息模式

以 MB 为单位的数据库大小 0.00976563

可用空间 (MB) 0.00000000

--------------------------------------
mysql

以 MB 为单位的数据库大小 0.76406479

可用空间 (MB) 0.00000000

-------------------------------------
性能模式

以 MB 为单位的数据库大小 0.00000000

可用空间 (MB) 0.00000000

------------------------------------------

有谁知道为什么这些数据库中的所有额外空间都消失了?

4

1 回答 1

3

InnoDB 表的“可用空间”报告为没有数据的范围的大小。

当一个表空间文件在物理上增长时,它会增长为一大块页面,称为范围。然后你逐渐插入数据来填充范围。

您之前可以在刚刚分配新范围但在插入数据之前查询 information_schema。然后,当您插入数据时,它会在范围内使用一些空间,并且不再被占用(即使它只是部分填充)。

当您执行大量 DELETE 操作时,也可以清空表空间文件中间的范围。但是随后的 INSERT 会重新使用该空闲空间。

无论哪种方式,零未占用范围都是正常的,这不是问题。如果文件需要物理增长,InnoDB 可以做到。

有关更多详细信息,请参阅:

于 2013-10-18T00:27:40.000 回答