【问题标题】:vsql slower than Squirrel SQLvsql 比 Squirrel SQL 慢
【发布时间】:2012-07-27 13:17:39
【问题描述】:

我正在 Vertica 数据库(在单个节点上运行)中执行如下所示的 SQL,该表具有大约 2.58 亿行。

我在 SQuirrel SQL 中大约 17 秒得到输出,但在命令行模式下在 vsql 中获得相同查询的输出需要几分钟。

select avg(item_chr_val_id) from table1

知道吗,vsql 中这种缓慢的原因可能是什么?

【问题讨论】:

  • 我怀疑执行的查询有所不同。解释计划中是否存在差异? vertica.log 在每次执行期间显示什么?执行的 ACTUAL 查询是否存在差异(从日志中可以看出)?每个返回的记录数是否相同?如果将每个查询包装在 SELECT COUNT(*) (<QUERY GOES HERE>)t; 中,性能如何比较? Vertica 不需要具体化可能会消除大量磁盘 IO 的记录。

标签: vertica vsql


【解决方案1】:

您使用的是什么版本的 Vertica 和 JDBC jar?我想知道您是否以某种方式幸运地使用 JDBC 进入了正确的执行计划。虽然这看起来很奇怪而且不太可能。

【讨论】:

  • Vertica 社区版 6.0 JDBC jar:vertica-jdk5-6.0.0-0.jar
【解决方案2】:

延迟是因为格式化操作。 在您的 SQuirrel SQL 中,我的第一个格式化数据可能有 100 或 1000 个限制!在 vsql 中,默认值是 1000 但你可以 chenge !! 要查看执行时间,一种选择是执行以下操作

\timing
\o \dev\null
select avg(item_chr_val_id) from table1;

这可能会得到一个准确的结果,因为数据不会在屏幕上格式化

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2016-11-29
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多