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

所属分类: 数据库 / Mysql 阅读数: 1606
收藏 0 赞 0 分享
这几天碰到这个错误。
至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。
如果过一段时间我还是没有更新,那以后同志们都参考吧 。
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
更多精彩内容其他人还在看

关于数据库连接池Druid使用说明

根据综合性能,可靠性,稳定性,扩展性,易用性等因素替换成最优的数据库连接池。 Druid:druid-1.0.29 数据库 Mysql.5.6.17 替换目标:替换掉C3P0,用druid来替换 替换原因: 1、性能方面 hikariCP&... 查看详情
收藏 0 赞 0 分享

在Debian 9系统上安装Mysql数据库的方法教程

前言 看到题目大家应都会想,在 Debian 9 上安装 Mysql?那不是很简单的事儿吗?直接 sudo apt install mysql-server 不就行了吗? 没想到遇到了几个之前没遇到的问题,耽误了不少时间。 原来在 Debian 9 中,Mysql 已经被替... 查看详情
收藏 0 赞 0 分享

Mysql删除重复数据保留最小的id 的解决方法

在网上查找删除重复数据保留id最小的数据,方法如下: DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people ... 查看详情
收藏 0 赞 0 分享

Mysql带返回值与不带返回值的2种存储过程写法

过程1:带返回值: drop procedure if exists proc_addNum; create procedure proc_addNum (in x int,in y int,out sum int) BEGIN SET sum= x + ... 查看详情
收藏 0 赞 0 分享

MySQL5.7 JSON类型使用详解

JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。     JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,... 查看详情
收藏 0 赞 0 分享

MySQL预编译功能详解

本文为大家分享了MySQL预编译功能,供大家参考,具体内容如下 1、预编译的好处   大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能。什么是预编译功能呢?它有什么好处呢?   当客户发送一条SQL语句给服务器后,服务器总是需要校验SQ... 查看详情
收藏 0 赞 0 分享

几个比较重要的MySQL变量

MySQL变量很多,其中有一些MySQL变量非常值得我们注意,下面就为您介绍一些值得我们重点学习的MySQL变量,供您参考。 1 Threads_connected 首先需要注意的,想得到这个变量的值不能show variables like 'Threads_co... 查看详情
收藏 0 赞 0 分享

MySQL 声明变量及存储过程分析

声明变量 设置全局变量 set @a='一个新变量'; 在函数和储存过程中使用的变量declear declear a int unsigned default 1; 这种变量需要设置变量类型 而且只存在在 begin..end 这段之内 se... 查看详情
收藏 0 赞 0 分享

MySQL删除表数据的方法

在MySQL中有两种方法可以删除数据,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。   ... 查看详情
收藏 0 赞 0 分享

mysql5.7.19 解压版安装教程详解(附送纯净破解中文版SQLYog)

Mysql5.7.19版本是今年新推出的版本,最近几个版本的MySQL都不再是安装版,都是解压版了,这就给同志们带来了很多麻烦,挖了很多坑,单单从用户使用的易用性来讲,这么做着实有点反人类啊! 笔者也是反反复复的折腾了快一个小时才成功搞定,过程中也网搜了很多的教程,可惜很多也都... 查看详情
收藏 0 赞 0 分享
查看更多