《Mysql必讀mysql Out of memory (Needed 16777224 bytes)的錯誤解決》要點:
本文介紹了Mysql必讀mysql Out of memory (Needed 16777224 bytes)的錯誤解決,希望對您有用。如果有疑問,可以聯(lián)系我們。
這幾天碰到這個錯誤.
至于我改的這幾個值是不是正確的解決方法,目前還不知道.先貼出來.
如果過一段時間我還是沒有更新,那以后同志們都參考吧 .
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的值.
因為我們的存儲過程中用了好多的預(yù)處理語句.而且語句的結(jié)果都是非常大的.
起初我的結(jié)果:
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:
所以我把我的所有存儲過程都修改了.
因為里面的預(yù)處理語句沒有清零.
經(jīng)過測試.
比如:
里面用到
PREPARE S1 FROM @STMT;
...
一定要
SET @STMT = '';
不知道這個是不是根本原因.我會再次更新的.
再次證明這樣做會減少這種情況.不過下午把所有存儲過程修改了.
凡是普通連接的都改為LEFT JOIN 了.通過EXPLAIN建立了相關(guān)索引.
而且把版本換成了5.0.45.至于是否還是出現(xiàn)錯誤.還在繼續(xù)關(guān)注中...目前沒有任何錯誤.
這個問題貌似MYSQL官方解決了.
http://bugs.mysql.com/bug.php?id=31898
歡迎參與《Mysql必讀mysql Out of memory (Needed 16777224 bytes)的錯誤解決》討論,分享您的想法,維易PHP學院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/12638.html