題 在查詢構建器中提高SQL開發人員的性


我在Windows 10 64位中使用Oracle SQL Developer(版本17.3.1.279)。
它通過TNS連接到網絡中的Oracle數據庫。

每當我第一次打開“查詢構建器”進行查詢時,或者在SQL代碼中進行一些更改之後,需要花費大量時間(30-60秒)才能加載。

此外,“完成見解”看起來非常慢(3-4秒),所以我通常只是在它們出現之前輸入表格和列名稱(設置為0.6秒才能顯示)。

基於以上問題,我懷疑SQL開發人員每次都從數據庫中讀取信息。有沒有辦法讓它在本地存儲信息? (數據庫的結構非常永久,每年變化少於一次)


我也看過任務管理器,有些奇怪的是,即使SQL開發人員在準備“查詢構建器”時沒有響應,它也不會使用很多資源

SQL開發人員在準備視圖時使用的資源:

  • 我的CPU的0-1.5%(幾秒鐘內跳到7%)
  • 600 - 650 MB的RAM(我總共16 GB,其中9 GB是免費的,所以我認為它不會成為瓶頸)。
  • 0 MB / s磁盤和0%網絡

總的來說,性能不受此影響

  • CPU使用率10-30%
  • 內存:使用7-8 GB,8-10 GB承諾,8-9 GB免費
  • 磁盤使用率:0-5%

5
2018-02-23 11:20


起源


任何查詢都這樣做? - Ramhound
問題與我運行的所有查詢相同,即使是最簡單的查詢(select * from MyTable)行為相同。 - Máté Juhász
您是否已檢查選項菜單中是否有任何可能解釋該行為的明顯功能? - Ramhound
是的,我已經檢查過,但找不到任何東西。 - Máté Juhász


答案:


可能的解釋是查詢構建器需要獲取所有內容 允許之前的數據庫表及其所有列信息 訪問查詢構建器本身,並加載所有這些數據 是花時間。 對於這個問題,我只能想到使用的解決方法 自定義數據源架構,其中只包含所需的表信息 如果您的情況可以,則包括在內。

有關本地緩存的問題,這裡有一些參考, 雖然它看起來只會影響查詢和您的問題 可能是加載表元數據:

您也可以使用Alter Table命令更改其居住地 用於緩存的表。這僅適用於RAM足夠的情況 將表保存在內存中,它們將逐位讀取 並在訪問時保留。但我真的不知道元數據 系統目錄中的表格也會被讀取並保存在內存中。

下面列出了其他可能也有幫助的一般提示:

  • 禁用工具/功能中未使用的功能

  • 禁用擴展程序
    在“首選項”中,禁用除SearchBar之外的所有不需要的擴展(需要重新啟動SQL Developer)。這也將清除主菜單中未使用的項目。

  • 設置外觀和感覺首選操作系統
    這將有助於將GUI擴展到主機,而不是繪圖 通過Java的一切。其他Java參數可以調整, 但這只適合喜歡冒險的人。

  • 完成後關閉網格和文件

  • 將SQL History Limit設置為較低的值

  • 如果通過遠程桌面運行,請調低圖形設置

  • 優化病毒掃描程序
    SQL-Developer是一個由大型組成的Java程序 .jar 檔案,這是公正的 .zip 檔案,所以沒有必要掃描整個檔案 僅適用於某些文件。 您可以從病毒掃描中排除SQL-Developer文件夾。

  • 以管理員身份執行SQL-Developer

  • 如果一切都失敗了,那就有了 Oracle SQL Developer的免費替代品


2
2018-02-26 13:39



似乎夥伴非常明確地希望緩存來自數據庫的信息 - 這似乎只是一個可能“加速”程序的無關技巧的清單。不確定它是否符合問題的意圖或者夥伴們希望以何種方式提出賞金。 - Journeyman Geek♦
@JourneymanGeek我還在嘗試這些建議。雖然兩者都沒有提供快速解決方案,這是一個合理的答案,絕對不值得投票。 - Máté Juhász
@MátéJuhász:如果這不能提高性能,那麼收集一些性能指標以更好地查明問題區域將會很有用。當您有30-60秒的減速時,這是足夠的時間在任務管理器或資源監視器中觀察它是否涉及CPU,磁盤或網絡。 - harrymc
@harrymc:我有同樣的想法,請看看我的更新 - Máté Juhász
你看過一般的計算機統計數據還是只看過SQL-Developer?其中一些大型產品由幾種工藝製成。網絡等待也是無法測量的。 - harrymc