2016-02-01 339 views
1

當我在DBeaver中首次執行查詢時,最多可能需要10-15秒才能顯示結果。在SQLDeveloper中,那些查詢只需要幾分之一的時間。簡單查詢需要很長時間

例如: 簡單的 「選擇從表1列1」 語句

DBeaver:2006ms, 的SQLDeveloper:306ms

實施例2(約其他方式;因此世界上沒有服務器端緩存): 簡單「選擇表2列1」 語句

的SQLDeveloper:252ms, DBeaver:1933ms

DBeavers狀態框說:

  1. 取結果集
  2. 發現屬性COLUMN1
  3. 查找屬性COLUMN1
  4. 晚綁定屬性colummn1

2,3和4使用的大多數的查詢執行時間。

我使用的是Oracle 11g,SQLDeveloper 4.1.1.19和DBeaver 3.5.8。

http://dbeaver.jkiss.org/forum/viewtopic.php?f=2&t=1870

可能是什麼原因?

+1

我投票結束這個問題,因爲我們不是DBeaver技術支持。如果您發現該產品較慢,請使用另一個產品,或者提交一個錯誤。 – Mat

+0

我並不是要求修復這個錯誤,如果它是一個。我在問是否有人經歷過這件事,如果有人知道原因。 –

+0

這不是一個編程問題。如果您想討論這一點,請使用聊天功能。 – Mat

回答

1

DBeaver在查詢中查找與對象相關的一些元數據。

上的Oracle數據庫,它查詢目錄表,如

  • SYS.ALL_ALL_TABLES/SYS.ALL_OBJECTS - 只有一次連接後,在第一個查詢您執行
  • SYS.ALL_TAB_COLS/SYS.ALL_INDEXES/SYS.ALL_CONSTRAINTS/... - 我相信每次查詢一個以前沒有使用的表。

版本3.6.10引入了一個選項來啓用/禁用這些查詢中使用的提示。禁用提示對我有很大的影響。該選項位於連接編輯對話框的Oracle Properties選項卡中。有關更多信息,請參閱issue 360 on dbeaver's github

+0

謝謝!我昨天看到了票,但是因爲它是針對3.7版本發佈的,所以我不得不等待。很好,它終於被解決了。 –

2

可瞭解的最佳方式是perfom的database trace

執行過一段時間的查詢,以消除緩存效果。

比兩個IDE中重複以下步驟

激活跟蹤

ALTER SESSION SET tracefile_identifier = test_IDE_xxxx; 

alter session set events '10046 trace name context forever, level 12'; /* binds + waits */ 

提供的XXXX識別測試。你會看到這個字符串作爲跟蹤文件名的一部分。

使用級別12查看等待事件和綁定變量。

運行查詢

關閉conenction

這重要的是不要追查其他的東西。

檢查兩個跟蹤文件上看到:

  • 進行什麼語句

  • 什麼行數是牽強

  • 什麼時候在DB

  • 是經過其餘時間客戶端(IDE)負責

這應該爲您提供足夠的證據要求,如果一個IDE行爲比其它的不同,或者簡單發表的聲明DB是不同的。