mysql Out of memory (Needed 16777224 bytes)的錯誤解決

來源:互聯網
上載者:User

這幾天碰到這個錯誤。
至於我改的這幾個值是不是正確的解決方案,目前還不知道。先貼出來。
如果過一段時間我還是沒有更新,那以後同志們都參考吧 。
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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.