mysql Out of memory (Needed 16777224 bytes)的错误解决

这几天碰到这个错误。
至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。
如果过一段时间我还是没有更新,那以后同志们都参考吧 。
Out of memory (Needed 16777224 bytes)的错误解决
看看手册:
[url]]
开始我更改了query_cache_size的值。
好像也不行。
之后
增大query_cache_limit 的值。
还有max_heap_table_size
和tmp_table_size的值。
因为我们的存储过程中用了好多的预处理语句。而且语句的结果都是非常大的。
起初我的结果:
mysql> show variables like 'max_heap_table_size';
--------------------------------- ----------------------
| Variable_name | Value |
--------------------------------- ----------------------
| max_heap_table_size | 16777216 |
--------------------------------- ----------------------

mysql> show variables like 'tmp_table_size';
--------------------------------- ----------------------
| Variable_name | Value |
--------------------------------- ----------------------
| tmp_table_size | 16777216 |
--------------------------------- ----------------------

我改了my.cnf文件

mysql> show variables like 'max_heap_table_size';
--------------------------------- ----------------------
| Variable_name | Value |
--------------------------------- ----------------------
| max_heap_table_size | 67108864 |
--------------------------------- ----------------------

mysql> show variables like 'tmp_table_size';
--------------------------------- ----------------------
| Variable_name | Value |
--------------------------------- ----------------------
| tmp_table_size | 67108864 |
--------------------------------- ----------------------

顺便看一下这篇文章中的一段话:

Qcache_hits and Qcache_inserts shows the number of times a query was serviced from the cache and how many queries have been inserted into the cache. Low ratios of hits to inserts indicate little query reuse or a too-low setting of the query_cache_limit, which serves to govern the RAM devoted to each individual query cache entry. Large query result sets will require larger settings of this variable.

补充:
今天在手册上看到这段话


If you issue a query using the mysql client program and receive an error like the following one, it means that mysql does not have enough memory to store the entire query result:

所以我把我的所有存储过程都修改了。
因为里面的预处理语句没有清零。
经过测试。
比如:
里面用到
PREPARE S1 FROM @STMT;
...
一定要
SET @STMT = '';
不知道这个是不是根本原因。我会再次更新的。
再次证明这样做会减少这种情况。不过下午把所有存储过程修改了。
凡是普通连接的都改为LEFT JOIN 了。通过EXPLAIN建立了相关索引。
而且把版本换成了5.0.45。至于是否还是出现错误。还在继续关注中。。。目前没有任何错误。

这个问题貌似MYSQL官方解决了。

您可能感兴趣的文章:

  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )
  • mysql启动的error 2003和1067错误问题解决方法
  • Mysql数据库错误代码中文详细说明
  • MySQL启动1053错误解决方法
  • 解决mysql 1040错误Too many connections的方法
  • Mysql 错误问题汇总(不断更新中)
  • mysql服务1067错误多种解决方案分享
  • mysql 提示INNODB错误的解决方法
  • MySQL 1303错误的解决方法(navicat)
  • mysql 发生系统错误1067的解决方法
  • MySql 安装时的1045错误
  • mysql常见错误集锦
  • MySQL 1067错误解决方法集合
  • MySQL错误代码大全

本文由太阳集团所有网址16877发布于www.16877.com,转载请注明出处:mysql Out of memory (Needed 16777224 bytes)的错误解决

您可能还会对下面的文章感兴趣: