简单的查询需要很长时间
Simple queries take very long
当我第一次在 DBeaver 中执行查询时,可能需要 10-15 秒才能显示结果。在 SQLDeveloper 中,这些查询只需要一小部分时间。
例如:
简单 "select column1 from table1" 语句
DBeaver:2006 毫秒,
SQLDeveloper:306 毫秒
示例 2(反过来;因此没有服务器端缓存):
简单 "select column1 from table2" 语句
SQLDeveloper:252 毫秒,
DBeaver:1933 毫秒
DBeavers 状态框显示:
- 获取结果集
- 发现属性列 1
- 查找属性列 1
- 延迟绑定属性 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
可能是什么原因?
获得洞察力的最佳方式是执行 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 查看等待事件和绑定变量。
运行查询
关闭连接
重要的是不要追踪其他东西。
检查两个跟踪文件以查看:
执行了哪些语句
获取了多少行
DB 中经过了多少时间
其余时间由客户 (IDE) 负责
如果一个 IDE 的行为与其他行为不同,或者简单地说,发出的 DB 语句不同,这应该为您提供足够的证据。
DBeaver 在您的查询中查找与对象相关的一些元数据。
在 Oracle 数据库上,它查询目录 table,例如
- SYS.ALL_ALL_TABLES / SYS.ALL_OBJECTS - 仅在连接后执行一次,对于您执行的第一个查询
- SYS.ALL_TAB_COLS / SYS.ALL_INDEXES / SYS.ALL_CONSTRAINTS / ... - 相信你每次查询一个table之前没用过。
版本 3.6.10 为 enable/disable 这些查询中使用的提示引入了一个选项。禁用提示对我来说有很大的不同。该选项位于连接编辑对话框的 Oracle Properties 选项卡中。查看 issue 360 on dbeaver's github 了解更多信息。
当我第一次在 DBeaver 中执行查询时,可能需要 10-15 秒才能显示结果。在 SQLDeveloper 中,这些查询只需要一小部分时间。
例如: 简单 "select column1 from table1" 语句
DBeaver:2006 毫秒, SQLDeveloper:306 毫秒
示例 2(反过来;因此没有服务器端缓存): 简单 "select column1 from table2" 语句
SQLDeveloper:252 毫秒, DBeaver:1933 毫秒
DBeavers 状态框显示:
- 获取结果集
- 发现属性列 1
- 查找属性列 1
- 延迟绑定属性 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
可能是什么原因?
获得洞察力的最佳方式是执行 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 查看等待事件和绑定变量。
运行查询
关闭连接
重要的是不要追踪其他东西。
检查两个跟踪文件以查看:
执行了哪些语句
获取了多少行
DB 中经过了多少时间
其余时间由客户 (IDE) 负责
如果一个 IDE 的行为与其他行为不同,或者简单地说,发出的 DB 语句不同,这应该为您提供足够的证据。
DBeaver 在您的查询中查找与对象相关的一些元数据。
在 Oracle 数据库上,它查询目录 table,例如
- SYS.ALL_ALL_TABLES / SYS.ALL_OBJECTS - 仅在连接后执行一次,对于您执行的第一个查询
- SYS.ALL_TAB_COLS / SYS.ALL_INDEXES / SYS.ALL_CONSTRAINTS / ... - 相信你每次查询一个table之前没用过。
版本 3.6.10 为 enable/disable 这些查询中使用的提示引入了一个选项。禁用提示对我来说有很大的不同。该选项位于连接编辑对话框的 Oracle Properties 选项卡中。查看 issue 360 on dbeaver's github 了解更多信息。