mysql out of memory 解决_mysql Out of memory的错误解决

这几天碰到这个错误。

至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。

如果过一段时间我还是没有更新,那以后同志们都参考吧 。

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL出现“out of memory错误解决方法: 1. 增加MySQL的内存限制,可以通过修改my.cnf文件中的参数来实现。例如,将innodb_buffer_pool_size设置为更大的值。 2. 优化MySQL的查询语句,避免使用大量的内存。可以通过使用索引、限制查询结果数量等方式来优化查询。 3. 升级MySQL的版本,新版本可能会修复内存管理方面的问题。 4. 检查系统的内存使用情况,确保MySQL有足够的可用内存。 5. 调整系统的内存分配策略,例如使用hugepages等方式来优化内存使用。 ### 回答2: MySQL作为一种流行的关系型数据库管理系统,常常被用来存储和管理大量数据。但是在处理大量数据时,有时会遇到“MySQL out of memory”的错误。 “MySQL out of memory错误通常是因为MySQL数据库服务器在处理大量并发请求时,耗尽了可用的内存资源。这种情况下,MySQL会停止响应,并显示错误消息。 为解决这个问题,我们可以采取以下措施: 1.调整MySQL配置文件:MySQL的配置文件my.cnf中有关于内存大小、最大连接数等参数的设置。我们可以通过调整这些参数来提高MySQL的内存使用效率和性能。例如,将innodb_buffer_pool_size修改为更合适的值,可以有效提高MySQL的读写性能。 2.优化查询性能:查询是MySQL最常用的操作之一,对查询性能的优化可以提高MySQL内存的使用效率。我们可以使用索引、分区表、优化SQL语句等方式来提高查询效率,减少内存消耗。 3.升级硬件:如果以上方法都无法解决内存不足的问题,我们可以考虑升级硬件设备,增加内存和CPU的数量和速度,以支持更大容量的数据处理。 4.检查和优化代码:在MySQL服务器上运行的应用程序有时会导致内存泄漏,这些应用程序需要及时检测和修复。通过优化代码,修改数据处理逻辑或更换软件库,可以有效地解决内存不足的问题。 综上所述,遇到“MySQL out of memory错误时,我们可以采取多种措施来解决问题。通过适当的调整MySQL配置、优化查询性能、升级硬件等方式,可以有效地提高MySQL的内存使用效率和性能。同时,及时检查和修复应用程序中可能存在的内存泄漏问题,也是保障MySQL稳定运行的重要因素。 ### 回答3: MySQL Out Of Memory 是指 MySQL 在运行过程中会出现内存不足的情况,导致系统崩溃。出现这种情况的原因可能有很多,可能是数据量太大,也可能是内存配置不当。 要解决 MySQL Out Of Memory 的问题,我们需要从以下几个方面入手: 1.检查 MySQL 配置文件:检查 MySQL 的配置文件是否正确配置了内存大小。可以通过修改 my.cnf 配置文件来调整 MySQL 的内存大小,具体的步骤如下: vi /etc/my.cnf 在 [mysqld] 中增加以下配置 innodb_buffer_pool_size = 2GB key_buffer_size = 256M max_allowed_packet = 64M sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M join_buffer_size = 1M table_cache = 1024 thread_cache_size = 64 query_cache_size = 32M 保存后重启 MySQL 服务即可。 2.优化 MySQL 数据库:如果 MySQL 数据库中的数据量过大,可能会导致内存不足。可以通过对数据库进行优化来解决这个问题。具体的优化方法如下: (1)删除不必要的数据:将不必要的数据删除可以释放内存,缓解内存紧张的情况。 (2)对查询进行优化:优化查询可以降低 MySQL 的负载,减少内存的占用。 (3)使用索引:使用索引可以提高查询速度,也可以减少 MySQL 的负载,从而减少内存占用。 3.升级系统硬件 :如果上述方法都无法解决问题,可以考虑升级系统硬件。升级内存或者使用更高配的服务器可以增加MySQL能使用的内存,可能会帮助解决这个问题。 总之,对于MySQL Out Of Memory问题,需要找到其根本原因,施策从MySQL配置优化,硬件升级等各方面进行着手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值