我有一個選擇查詢需要10分鐘完成,因爲它運行通過10M記錄。當我通過TOAD或使用普通JDBC連接的程序運行時,我得到了結果,但在運行使用Hibernate作爲ORM的Job時不會返回任何結果。它只是掛了...即使在45分鐘後?請幫忙休眠與Oracle JDBC問題
回答
你是說你試圖使用ORM像hibernate一樣檢索10M記錄嗎? 如果出現這種情況,您有一個重大問題,您需要重新設計您的應用程序,因爲這不會起作用,並且爲什麼它會掛起,我敢打賭,因爲它耗盡內存。
對不起,查詢只返回滿足條件的記錄數,所以我們不把所有記錄都存入內存。查詢本身需要時間。鑑於此,這是一項批量工作,我們預計需要一些時間。但是一旦生成準備好的語句,即使在正常運行時或蟾蜍查詢(10分鐘)之後,我們也不會返回計數。 – vijay 2009-10-22 19:56:44
您是否爲Hibernate啓用了SQL輸出?您需要set hibernate.show_sql
to true才能做到這一點。
完成後,將生成的SQL與您通過TOAD運行的SQL進行比較。他們究竟是是否相同?
我要在這裏冒險猜測,並說他們不是因爲一旦生成SQL,Hibernate沒有任何花哨 - 連接取自池;準備好的語句被創建並執行 - 所以它應該與JDBC沒有區別。
因此,最可能的問題是如何優化您的HQL。如果您需要任何幫助,您必須發佈相關的HQL以及適當的映射/表格模式。在查詢上運行解釋也會有所幫助。
感謝您的建議,我在由Hibernate生成的TOAD中運行相同的查詢。 – vijay 2009-10-22 21:18:04
你可以發佈查詢嗎? HQL和SQL?和你在Hibernate中運行它的代碼?我有最困難的時間想象會花更長的時間來運行**相同的**查詢。 – ChssPly76 2009-10-22 21:33:37
感謝您回覆,我有一個Criteria對象,它轉換成SQL查詢。查詢是匹配條件的對象的計數。當我在數據庫中有50,000條記錄的開發環境中運行程序時,我得到結果。但是當我在Perf中運行相同的程序時。 env有10M記錄,查詢永遠不會回來。儘管從TOAD運行相同的查詢給出了結果。我的查詢是這樣的。 – vijay 2009-10-22 22:33:46
- 1. oracle 11g休眠問題
- 2. 有關使用休眠的Oracle JDBC的問題...有時候
- 3. 休眠問題與編譯
- 4. 休眠:問題與CascadeType.REMOVE
- 5. Oracle休眠序列生成器問題
- 6. 休眠問題
- 7. 問題(休眠)
- 8. 休眠問題
- 9. 休眠問題
- 10. 休眠問題
- 11. 休眠與oracle dblink實現
- 12. JPA或休眠與Oracle表分區?
- 13. 使用休眠與oracle的驅動程序連接問題
- 14. 休眠問題(javax.persistence.PersistenceException:org.hibernate.PersistentObjectException)
- 15. 問題在休眠
- 16. 休眠Session.save問題
- 17. 問題在休眠
- 18. 休眠findById()問題
- 19. 休眠StalestateException問題
- 20. 休眠C3P0問題
- 21. oracle10g休眠問題
- 22. Oracle休眠cfg
- 23. 彈出jdbc與休眠連接
- 24. 休眠+ Oracle 11.2 + BLOB
- 25. 休眠與sqlserver死鎖問題
- 26. 休眠查詢問題與Informix
- 27. 休眠映射問題與複合ID
- 28. 與JPA /休眠/ PG的地圖問題
- 29. JPA與休眠 - 合併性能問題
- 30. 初始化休眠與GWT問題
你真的希望我們能給你答案嗎? – skaffman 2009-10-22 19:30:25