2010-03-16 22 views
3

我運行:MySQL - 如何確定我的表是否存儲在RAM中?

MySQL v5.0.67 
InnoDB engine 
innodb_buffer_pool_size = 70MB 

問題:我可以運行什麼命令,以確保我的整個50 MB的數據庫存儲完全在內存?

+0

我不假設「使用'MEMORY'引擎」是一個可以接受的答案? –

+0

我沒有使用MEMORY引擎,因爲如果服務器崩潰,我不想丟失所有數據。因此,爲什麼我使用INNODB,RAM值大於我的數據集。 (雖然很好的問題) – HankT

回答

1

我很好奇你爲什麼要將整個表存儲在內存中。我的猜測是你不是。 對於我來說最重要的是如果你的查詢運行良好以及你是否在磁盤訪問上受阻。如果有可用內存,操作系統也可能緩存需要的磁盤塊。在這種情況下,即使MySQL可能沒有在內存中,操作系統也會。如果您的查詢運行不正常,並且您可以執行此操作,則強烈建議您在RAM中全部添加更多內存。如果你減慢速度,你很有可能會遇到爭用。

show table status 

會告訴你一些信息。

如果從

show server status 

得到服務器的IO /緩衝區/高速緩存統計信息,然後運行需要被訪問的每一行的查詢(比如使用列,它是總結,從各行非空值未編入索引)並檢查是否有任何IO發生。

我懷疑你是緩存整個內存,但只有70MB。你必須從這個總數中取出大量的緩存,臨時和索引緩存。

雅各布