mysql Out of memory (Needed 16777224 bytes)的毛病處理。本站提示廣大學習愛好者:(mysql Out of memory (Needed 16777224 bytes)的毛病處理)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql Out of memory (Needed 16777224 bytes)的毛病處理正文
這幾天碰著這個毛病。
至於我改的這幾個值是否是准確的處理辦法,今朝還不曉得。先貼出來。
假如過一段時光我照樣沒有更新,那今後同志們都參考吧 。
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