2017-02-22 92 views
0

是否可以將整個mysql數據庫存儲在內存中。我應該創建特殊查詢來做到這一點?我要運行什麼樣的查詢?我想加快插入,更新和刪除特定表中的操作,現在我認爲這是唯一可能的方式。在內存中運行MySQL數據庫以加快執行查詢的速度

+0

請閱讀本文檔以加快查詢的執行速度[鏈接](https://dev.mysql.com/doc/refman/5.7/en/select-optimization.html) –

+0

您的意思是說擁有如此之多的RAM以至於服務器可以只保留所有內容,只需要使用磁盤來轉儲更改?或者有一個臨時閃電般的數據庫,可以在關閉時刪除? –

回答

1

您可以創建一個利用MEMORY引擎的表。 在服務啓動時,您從磁盤上存在的另一個表中填充表,並將磁盤上的表以某個時間間隔同步回到表中。 INSERT INTO ... SELECT * FROM ...

注意:當服務器或mysql服務停止時,表中存儲的所有數據都將丟失!的MEMORY引擎

更多信息,可以在https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html

0

這個發現應該是一個註釋 - 但它有點長。

你試圖通過這個實現什麼?

您將遇到2個問題:數據需要在重新通電(或重新啓動mysql)後重新填充,並且會受到tmp_table_size和max_heap_table_size的限制。

如果您只是想加快原始數據訪問速度,Innodb會盡可能多地在內存中緩存數據。 MyISAM將索引緩存在內存中(並且在Linux系統和類似的表格數據被緩存 - 但不是無限期地)。但是,如果您遇到性能問題,則應該首先查看針對數據庫運行的查詢。

如果您故意希望數據在備份中或重新啓動後不可用,請將數據文件保存在加密文件系統中(使用在安裝時鍵入的密鑰)。

相關問題