gpt4 book ai didi

mysql - 删除列时内存不足

转载 作者:行者123 更新时间:2023-11-30 22:14:54 25 4
gpt4 key购买 nike

我在 Clever-Cloud 上托管了一个数据库(https://www.clever-cloud.com/pricing - MySQL 插件大小 LM:内存 1 GB 和 2 个 vCPUS)。我有一个使用 InnoDb 引擎的表,其中包含 188 000 行,大约 311 MB。

当我尝试删除表中的一列(此列上没有索引)时,我在 phpMyAdmin 中遇到以下错误:

2006 - MySQL 服务器消失了

错误时MySQL的日志:https://gist.github.com/urcadox/038c180cefdcba20e1052e7418a43324

我读到InnoDb引擎使用内存创建一个新表,复制没有删除列的数据并切换旧表和新表以执行删除操作。

  • 我可以做些什么来减少内存使用量吗?
  • 有没有办法让 InnoDb 使用磁盘而不是内存?

谢谢!

最佳答案

为什么不在表更改查询中尝试使用 ALGORITHM=COPY?它是 ALTER TABLE syntax 的一部分它强制复制表而不是就地修改。它的内存使用率可能会更低。但某些警告适用

Any ALTER TABLE operation run with the ALGORITHM=COPY clause prevents concurrent DML operations. Concurrent queries are still allowed. That is, a table-copying operation always includes at least the concurrency restrictions of LOCK=SHARED (allow queries but not DML). You can further restrict concurrency for such operations by specifying LOCK=EXCLUSIVE, which prevents DML and queries.

关于mysql - 删除列时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com