我们有一个应用程序,我们每隔几秒接收一次信息,我们将这些信息记录在一个称为事件的表中,该表目前重达 240 GB,这是迄今为止我们拥有的最大的。
前段时间我们删除了记录以保留特定日期的记录。不久前我们发现存储数据库的服务器正在填满磁盘,删除数百万条记录后,磁盘空间保持不变。
在网上搜索我们发现执行以下查询 ALTER TABLE tablename ENGINE = Innodb; 将释放已删除记录的已用空间。
但是我们遇到的问题是,由于我们有大于200G的表,所以该命令执行时间较长,导致新信息因阻塞而无法及时插入。
我们找到的选项如下:
有没有更优化的方法来释放空间,而不必取消我们的服务并且不会丢失信息?或者如果必须在最短的时间内完成?
此查询 ALTER TABLE tablename ENGINE = Innodb 知道它是否锁定表。
生产中的环境信息: Ubuntu Ubuntu 16.04.3 LTS mysql Distribution 10.1.21-MariaDB 所有表的类型均为 Engine = Inodb
非常感谢