gpt4 book ai didi

mysql - 存储过程使用比预期更多的内存

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

我已经构建了一个存储过程,它构建了一个内存临时表A,然后通过遍历标准游标的结果用数据填充它。通过我数据库中其他 MyISAM 表的多个连接,将数据选择到临时表中。 SP 工作正常,但它遇到了全表内存限制。为了解决这个问题,我调高了内存限制:

set @@tmp_table_size=127108864; (121MEGs)
set @@max_heap_table_size=127108864; (121MEGs)

这是关于让我的 SP 成功运行所采取的措施。这对我来说似乎很奇怪,因为创建和返回(通过 select * from A)的表 A 的大小只有 16MEG。我不确定是什么导致了内存需求的另一部分,大约是 100MEG。似乎 SP 使用的内存比需要的多。我的猜测是,作为游标循环的一部分在 SP 中运行的连接在运行后会留下它们的临时表,并且在 SP 完成执行之前不会清理这些临时表。这意味着大量连接的临时表在内存中 float 。有什么方法可以阻止这种情况或验证在 SP 游标循环内运行的这些连接是否正在吸收额外的内存?这种内存力会不会来自其他东西?感谢所有提供帮助的人。

最佳答案

根据您的查询,mysql 可以创建多个临时表,因此 - 在您的每个查询上使用 EXPLAIN EXTENDED 来查找创建它的原因

关于mysql - 存储过程使用比预期更多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327736/

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