2012-03-07 163 views
14

如何以二進制模式將完整的嵌入式h2內存數據庫保存/加載到某些文件或目錄以加快加載速度。將內存中的H2數據庫保存到磁盤

我想用它來緩存數據,所以我不必每次都運行create table/insert子句的所有行。

+1

你可以使用文件數據庫還是內存版本?我假設你正在使用你沒有提到的框架(例如Grails)進行自定義開發。 – Marc 2012-03-07 15:13:21

+0

這是一個不涉及框架的自定義項目。說實話,我不確定文件數據庫的性能影響是什麼,我想要的速度和數據總是適合內存,所以我認爲內存數據庫將是最快的。數據將只是查詢,所以我不想要任何不必要的保存檢查。 – mikkom 2012-03-07 15:33:12

+0

@marc使用'文件DB'是另一回事。如果可以用java或任何其他語言設置內存中測試數據集,然後對數據集進行備份並在每次測試後使用它恢復到初始狀態,那麼它在單元測試中將非常有用。 – 2013-04-19 20:49:13

回答

8

您可以使用常規(持久保存的)數據庫,而不使用內存數據庫。即使如此,您仍然可以使用內存表(創建內存表)。

將完全內存數據庫保存到磁盤的最簡單方法是使用SCRIPT TO 'fileName' SQL語句。這將創建一個SQL腳本。數據以文本形式存儲,聽起來不像是最有效的解決方案。然而,通常瓶頸是磁盤,而不是格式化/解析文本。

另一個選擇是創建另一個數據庫,鏈接表與(使用create linked tablelink_schema功能)的存儲器內的數據庫,然後使用create table as select堅持的表。

+0

插入子句是我目前所做的,對於1個文本需要一些時間,而不是io。對不起,但我想要二元期權。 – mikkom 2012-03-08 13:37:59

+0

更新了我的答案。對於SCRIPT:如果它不是IO,那麼它是什麼?您是否使用了剖析工具,例如內置剖析器? – 2012-03-08 15:43:55