mysql - 如何减少超过 20GB 的 MySQL 表的大小,尽管它是空的?
解决方案
如果表是ENGINE=InnoDB
,则:
研究innodb_file_per_table
变量。
如果是OFF
在创建表时,则该表位于文件中ibdata1
,该文件会增长但不会缩小。唯一的治疗方法是几个相当激烈的步骤。但它不一定是“坏的”;INSERTs
into table 将填充该空闲空间。
如果是ON
在创建表时,则数据(零行)和索引(也是空的)位于一个 20GB 的文件中,其名称以.ibd
. 简单地做ALTER TABLE table_name ENGINE=InnoDB;
,或者,等价地,OPTIMIZE TABLE table_name;
这个任务会重复吗?如果是这样,让我们讨论如何进行“大删除”,或者如果您有时间序列,则使用分区,或者如何通过创建新表来替换所有数据,然后使用RENAME
.
如果 MyISAM
- 您应该更改为 InnoDB。
- 只需这样做
OPTIMIZE TABLE tablename;
以释放空间。
推荐阅读
- html - 如何压缩其中的 div 和文本并使其保持响应?
- javascript - 三.js无限循环崩溃
- typescript - 货币符号未对齐
- mysql - MySQL 通过 Python 模块安装与否?
- azure-functions - 使用 Nuget 包中的 QueueTrigger 将数据发送到 Azure Functions
- laravel - 在我的所有视图中,Laravel 提供程序都无法访问提供程序中的数据
- python - Python 中的 Round() 有什么替代方法吗?
- pycharm - PyCharm Professional 2020.2 - 缺少“运行任何东西”选项?
- python-3.x - 如何像在命令行上一样在 VSCode 中运行单个测试?
- node.js - 未设置安全 cookie