首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除列时内存不足

删除列时内存不足
EN

Stack Overflow用户
提问于 2016-08-03 15:05:19
回答 1查看 234关注 0票数 1

我有一个托管在智能云上的数据库(https://www.clever-cloud.com/pricing - MySQL插件大小LM:内存1GB&2 vCPUS)。我有一个使用InnoDb引擎的表,有188,000行,大约是311MB。

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

2006年- MySQL服务器已经消失。

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

我已经看到,InnoDb引擎使用内存创建一个新表,在没有删除列的情况下复制数据,并切换旧表和新表来执行删除操作。

  • 我能做些什么来减少内存吗?
  • 是否存在使InnoDb使用磁盘而不是内存?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 15:25:26

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

任何使用ALGORITHM=COPY子句运行的ALTER操作都会阻止并发DML操作。仍然允许并发查询。也就是说,表复制操作总是至少包括LOCK=SHARED的并发限制(允许查询,而不是DML)。您可以通过指定LOCK=EXCLUSIVE来进一步限制此类操作的并发性,这可以防止DML和查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38747309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档