提高查询生成器中 SQL 开发人员的性能

提高查询生成器中 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%

答案1

一种可能的解释是,查询生成器需要获取所有数据库表及其所有列信息,然后才能允许访问查询生成器本身,而加载所有这些数据需要时间。对于这个问题,我只能想到一种解决方法,即使用自定义数据源架构,其中只包含所需的表信息(如果您的情况可以这样做)。

对于有关本地缓存的问题,这里有一些参考,虽然它们看起来只影响查询,并且您的问题可能与表元数据的加载有关:

您还可以使用 Alter Table 命令将您使用的表的驻留位置更改为缓存。这仅适用于您有足够的 RAM 来将表保存在内存中的情况,在内存中,它们将被逐位读取并在访问时保存。但我真的不知道系统目录中的表的元数据是否也被读取并保存在内存中。

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

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

  • 禁用扩展
    在“首选项”中,禁用除 SearchBar 之外的所有不需要的扩展(需要重新启动 SQL Developer)。这还将清除主菜单中未使用的项目。

  • 将外观和感觉首选项设置为主机操作系统
    这将有助于将 GUI 外包给主机,而不是通过 Java 绘制所有内容。可以调整其他 Java 参数,但这仅适用于喜欢冒险的人。

  • 完成后关闭网格和文件

  • 将 SQL 历史记录限制设置为较低的值

  • 如果通过远程桌面运行,请调低图形设置

  • 优化病毒扫描程序
    SQL-Developer 是一个由大型档案组成的 Java 程序.jar,这些档案只是.zip档案而已,因此没有必要只为某些文件扫描整个档案。您可以将 SQL-Developer 文件夹排除在病毒扫描之外。

  • 以管理员身份执行 SQL-Developer

  • 如果一切都失败了,还有 Oracle SQL Developer 的免费替代品

答案2

多次尝试失败后,我联系了我公司的 Oracle 经理,他向 Oracle 提到了这个问题。

他们承认它确实太慢了,现在在 3.2.20.10 版本中这个问题已经修复,它真的很快!

相关内容