这几天碰到这个错误。
至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。
如果过一段时间我还是没有更新,那以后同志们都参考吧 。
Out of memory (Needed 16777224 bytes)的错误解决
看看手册:
[url]http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html[/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 |
+---------------------------------+----------------------+
顺便看一下这篇文章中的一段话:
http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
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.
补充:
今天在手册上看到这段话
http://dev.mysql.com/doc/refman/5.1/en/out-of-memory.html
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官方解决了。
http://bugs.mysql.com/bug.php?id=31898
mysql Out of memory (Needed 16777224 bytes)的错误解决
2019-12-06 14:36MYSQL教程网 Mysql
至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来
延伸 · 阅读
- 2019-12-06mysql提示[Warning] Invalid (old?) table or database name问题
- 2019-12-06MySQL连接数超过限制的解决方法
- 2019-12-06php入门学习知识点一 PHP与MYSql连接与查询
- 2019-12-06PHP 获取MySQL数据库里所有表的实现代码
- 2019-12-04mysql #1062 –Duplicate entry '1' for key 'PRIMARY'
- 2019-12-04mysql命令行下用户管理方法分享
精彩推荐
- Mysql
Ubuntu18.04安装mysql5.7.23的教程
这篇文章主要为大家详细介绍了Ubuntu18.04安装mysql5.7.23的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
- Mysql
mysql 读写分离(实战篇)
MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。 ...
- Mysql
mysql 教程 存储过程
最近用mysql + asp.net来写网站,既然mysql已经支持存储过程了,那么像分页这么常用的东西,当然要用存储过程啦 ...
- Mysql
删除mysql数据库中的重复数据记录
mysql中select distinct * from text不能显示不重复的记录,而是直接全部显示 ...
- Mysql
mySQL中LEN()与DATALENGTH()的区别
LEN返回指定字符串表达式的字符数,其中不包含尾随空格。DATALENGTH返回用于表示任何表达式的字节数。 ...
- Mysql
mysql 获取当天发布的信息的语句
mysql 获取当天发布的信息的实现语句,需要的朋友可以参考下。 ...
- Mysql
mysql数据库优化必会的几个参数中文解释
对于自己配置mysql数据库的朋友,需要注意的几点,下面都是英文的解释,比较易懂方便和我一样需要优化配置mysql的朋友 ...
- Mysql
揭秘SQL优化技巧 改善数据库性能
这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础,重点讲述如何优化SQL,来提高数据库的性能 ...