赞助商

mysql – 我可以确定或限制允许使用的内存查询量

发布时间:2019-05-15 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了mysql – 我可以确定或限制允许使用的内存查询量脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在运行一个创建临时表的查询但是限制为64mb并且由于访问权限等原因我无法更改限制.当选择大日期范围时,临时表空间不足并导致mysql错误.

无论如何我可以在尝试运行查询之前确定查询将使用的内存大小或数量,这样我可以优雅地避免上述问题吗?

最佳答案
除了在基本SQL查询中查询较少的行数外,无法直接限制临时表的大小.

您能否更具体地了解您所看到的错误? MySQL临时表可以在内存中存在,直到tmp_table_sizemax_heap_table_size中的较小者.如果临时表较大,MySQL会将其转换为磁盘上的临时表.

这将使临时表比内存存储慢很多,但除非you have no space available in your temp directory,否则不会导致错误.

除临时表存储外,还有很多ways MySQL uses memory.您可以调整其中许多变量,但这与对查询使用的内存设置限制不同.

错误1114表示您的空间不足.如果它是磁盘上的InnoDB表,这可能意味着您有一个ibdata1文件没有为表空间定义autoextend.对于内存表,这意味着您达到了max_heap_table_size的限制.

由于您无法更改max_heap_table_size,因此您可以选择减少一次放入表中的行数,或者使用磁盘上的临时表而不是内存.

使用MySQL主要版本的最新版本也要小心.我发现bug 18160报告MySQL计算表大小不正确的堆表(用于内存临时表).因此,例如,确保您至少使用MySQL 5.0.23或5.1.10来获取该错误的修复程序.

总结

以上是脚本之家为你收集整理的mysql – 我可以确定或限制允许使用的内存查询量全部内容,希望文章能够帮你解决mysql – 我可以确定或限制允许使用的内存查询量所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签:mysql