gpt4 book ai didi

mysql - 运行 ALTER 添加新列时 tmp 表不增长

转载 作者:行者123 更新时间:2023-11-29 11:25:04 27 4
gpt4 key购买 nike

我有一个大约 25 GB 的表,我必须向其中添加一列。

我运行一个脚本,当我执行它时,我可以在数据目录中看到临时表,但它仍然停留在大约 480K。我可以在进程列表中看到 ALTER 正在运行并且没有任何问题。

如果我在长时间事件后终止脚本,那么在 processlist 中,查询将保持“已终止”状态,并且 tmp 文件将开始增长,直到查询被完全终止(即,从“已终止”状态进入进程列表完全从进程列表中消失)。

当我运行以下命令时(在终止查询之前):

select * from global_temporary_tables\G

它也不显示任何正在添加的行。

还有什么我可以做的吗?

最佳答案

首先,您的“ps”输出报告可能显示的内容与任何内容无关。不要依赖“ps”所说的内容:它包含过时的数据。

如果进程已被终止(SIGKILL,而不是 SIGTERM),我向您保证它不再向任何地方传送任何输出。如果它是 SIGTERMed,则取决于您附加的信号处理程序。我大胆猜测您还没有注册任何信号处理程序。

大多数生产 DBMS 都以 block 的形式设置存储。获得X量的空间,其中可能包含允许添加行和/或列的“闲置”空间(我并不是说这两种机制是相同的)。仅仅因为某些东西没有以你可以感知的方式成长并不意味着没有做出改变。为什么不检查数据字典,询问表的当前结构。

您提交了更改吗?在某些 DBMS 中,DDL 操作被视为可提交/可回滚 (yecch) 事件。

关于mysql - 运行 ALTER 添加新列时 tmp 表不增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363008/

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