2017-05-04 47 views
2

現在H2 1.4已經不在beta版了,我想將我的舊版1.3.175數據庫遷移到1.4.195。什麼是從H2 1.3.175遷移到1.4.195的推薦方式

背景信息:

  • 在文檔,database upgrade沒有提到1.4呢。
  • roadmap仍列出「從1.3數據庫自動遷移到1.4」。作爲「計劃改變」。
  • MVStore的current state仍被標記爲「實驗」。

那麼,什麼是推薦的遷移方式?

其他方面/獎金問題:

我應該能夠MVStore或PageStore(優點/缺點)堅守?哪一個能夠提供更好的性能(多線程對我來說並不重要),哪一個更好的穩定性,尤其是對OutOfMemoryErrors的彈性?

回答

4

使用1.3.175創建的數據庫可以被讀取並使用1.4.195打開,無需任何額外的工作。 H2會自動檢測到它正在使用Page Store並將其視爲此類。這樣做不會有問題。

這樣做的好處是,雖然MVStore正在開發中,但Page Store不斷獲得性能改進和錯誤修復。因此H2與Page Store已經成爲一個非常穩定的數據庫存儲。

目前還沒有將數據庫從使用Page Store轉換爲使用MVStore的自動升級過程。如果你確實想這樣做,你需要手動完成。使用最新的H2 Jar,使用H2的SCRIPT命令從1.3數據庫中導出SQL,然後使用RUNSCRIPT創建一個1.4.195的新創建的數據庫。

如果您的H2 JDBC URL沒有明確指定;mv_store=false,請注意H2將首先查看頁面存儲數據庫是否已存在。如果沒有,那麼它會創建一個MVStore數據庫。這對你,你的應用和你的用戶來說是無縫的。你會注意到唯一的表面差異是磁盤上的數據庫文件具有不同的文件擴展名。

最後,一個建議。如果您的客戶數據庫很大,請考慮僅使用頁面存儲。我是H2的重量級用戶。 (我在H2上構建的商業產品有成千上萬的用戶,他們通常擁有數千GB的數據庫。)儘管我使用最新的H2 Jar,但我仍然爲所有客戶使用頁面存儲。當數據庫變大時,MVStore仍然存在一些性能問題。隨着時間的推移,我預計問題的原因將得到確認和修正。

+0

我在想 - 如果我堅持使用PageStore,是否需要轉儲並恢復數據庫,因爲在從1.x升級到1.y時,通常會在H2環境中推薦它? – hendrik

+1

@hendrik,在1.3.175和1.4.191之間,不需要轉儲和恢復。您閱讀的建議對於從1.1或1.2移到更重要。 –

+0

PageStore是否支持1.4版本的MVCC?並且是否啓用了多線程?我們最初的觀察表明多線程未啓用。 我們希望啓用MVCC和多線程BOTH,所以我猜想當從1.3遷移到1.4時,我們需要手動使用H2的SCRIPT命令? –

相關問題