我不得不在項目中使用一些大表的Derby。爲了獲得一些性能,我從三個不同的表格中選擇文檔ID到一個巨大的表格中以查找文檔類型。Derby內存中的db:在select into語句中內存不足
基本上是一個非常簡單的查詢:
"INSERT INTO DOC_TYPES SELECT DOC_ID, 1 FROM TYPE_A_DOCUMENT"
"INSERT INTO DOC_TYPES SELECT DOC_ID, 2 FROM TYPE_B_DOCUMENT"
"INSERT INTO DOC_TYPES SELECT DOC_ID, 3 FROM TYPE_C_DOCUMENT"
當我在「正常」模式運行這個,我的硬盤上的德比戰,它需要大約1分鐘來處理,我結束了約6.5億在數據庫行(巨大,我知道...)
無論如何,數據庫仍然是我的口味慢,所以我試圖在內存中運行的一切。不幸的是,即使有4GB的堆大小(我硬盤上的完整數據庫從未超過1GB),在「java/lang/OutOfMemoryError」中操作結果相當快。
我真的沒有看到任何替代方案或解決方法來解決這個問題。 Derby不支持實體化視圖並且在Java中執行此操作(SELECT,interate resultset,INSERT)會花費幾個小時...
由於Derby似乎不支持「聲音塊」限制。
任何建議/想法?
問候, 邁克爾
您是否在單個事務中執行這些插入操作? – stacker 2011-12-14 15:32:28