我正在使用postgres進行Hibernate分區& Spring JPA一段時間。所以我想,我可以試着回答你的問題。
1)這是歸檔舊數據的好主意,但仍然保持查詢可靠嗎?
如果您正在應用索引而不是頻繁重新索引表,那麼對數據進行分區可能會使查詢結果更快。
另外,您還可以在postgres中使用聚集索引功能,以便更快地獲取數據。
因爲具有較舊數據的表不會更新,所以聚集索引將有效地提高性能。
2)Spring-JPA使用分區表嗎?或者我們必須弄清楚如何分解查詢並執行原生查詢並連接restult集?
Spring JPA將使用分區表開箱即用。它將從主表以及子表中檢索數據並返回連接的結果集。
注:問題與分區表
你將與分區表中所面臨的唯一問題是插入分區表。
讓我解釋一下,當你對錶進行分區時,你將在主表上創建一個觸發器,並且該觸發器將返回null。這是使用Spring JPA/Hibernate在分區表中插入問題背後的關鍵。
當您嘗試使用Spring JPA插入行或Hibernate,您將面臨跌破發行
批量更新返回從更新[0]意想不到的行數;實際行數:0;預計:1
要解決此問題,您需要覆蓋批量配料器的實施。
在冬眠則可以使用以下的配置
hibernate.jdbc.factory_class = path.to.my.batcher.factory.implementation
在彈簧JPA提供配料工廠的自定義實現您可以通過使用以下配置自定義實施批量生成器來實現相同的目標
hibernate.jdbc.batch.builder = path.to.my.batch.builder.implem entation
櫃面你需要實現自己的自定義配料你可以參考我的博客https://anilagrawal038.wordpress.com/2016/12/11/custom-batch-builderbatch-in-spring-jpa/ –
謝謝@Anil。您是否成功使用此實現對Postgres DB?如果您有一個使用您提出的解決方案的小型工作應用程序,那就太棒了。 – pastafarian
@pastafarian是的,我已經實施了與Postgres DB相同。 我很樂意幫助你,很快我會分享一個示例應用程序 –