2014-07-15 138 views
0

當我在mysql上的大型表上運行查詢時,需要很長時間才能運行。但是當我再次運行相同的查詢時,所花費的時間比第一次花費的時間要少。 是MYSQL將結果集緩存在內存中。我怎麼能讓它不這樣做? RAM快速填滿。正在緩存MySql查詢

query_cache_size變量中的my.ini是0

操作系統是Windows Server 2012中(如果該事項)。

謝謝

+0

http://dev.mysql.com/doc/refman/5.0 /en/query-cache-configuration.html –

+0

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html – KevInSol

+0

@ user602088 my.ini中的query_cache_size爲0.上面仍然是發生 – Ank

回答

0

這可能是InnoDB緩衝區緩存的影響。

和InnoDB緩衝器是說明here

越大緩衝池,越InnoDB的作用就像一個內存 數據庫,在隨後的讀出 存儲器從磁盤讀取的數據一次,然後訪問數據。


您可能還需要看看下面的線程:

mysql slow on first query, then fast for related queries

Mysql query run twice is must faster the second time even with SQL_NO_CACHE

+0

這可能是最新情況。爲了避免這種情況,我關閉了哪個變量。 – Ank

+0

我想,那將是innodb_buffer_pool_size。 但IANAME(我不是一個Mysql專家) –

+0

所以innodb_buffer_pool_size分配Innodb將用於緩存的RAM。數字用完後,數據庫將開始使用磁盤空間。我正在尋找的是服務器在運行後從緩存中刪除結果集。我不確定將此數字更改爲更高或更低的值可以解決此目的。如果我錯了,請糾正我。 – Ank