微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Excel/PowerQuery 中使用 psqlodbc 的性能问题

如何解决在 Excel/PowerQuery 中使用 psqlodbc 的性能问题

已提出问题 here,但被错误标记为已关闭


我使用 psqlODBC 和 PowerQuery 将数据从 Postgresql (12.4) 加载到 Microsoft Excel。最近我遇到了无法解释的性能问题。某些函数需要很长时间(15 分钟或更长时间)才能通过 ODBC 提取数据。有些功能只需几秒钟。从命令行使用 pgAdmin、Beekeeper 或 psql 运行相同的函数时,它们的执行时间都不超过 500 毫秒。

我可以做些什么来提高 psqlODBC 的性能

我发现这个 answer 说明聚合可能是在客户端完成的。这将是非常糟糕的,因为表包含几百万行,我只想将聚合的列发回。有人可以提供更多信息吗?我找不到任何相关信息。


到目前为止我尝试过的

  1. 我用视图替换了一个函数,这似乎解决了问题。但是,这不是通用的解决方案,因为有些函数包含无法在视图中完成的逻辑。
  2. 我使用 pg_stat_statementsauto_explain 来查明函数是否存在问题。我没有发现任何可疑之处。如前所述,该问题仅在使用 psqlODBC 时出现,因此我希望问题出在任何地方。
  3. 修改 psqlODBC config 的参数。到目前为止没有成功。

详情

postgresql 中的函数通常是这样定义的:

CREATE FUNCTION func(parameter integer) RETURNS TABLE(<col1> <type1>,...) 
    LANGUAGE 'plpgsql' COST 100 STABLE ParaLLEL UNSAFE ROWS 500
AS $BODY$
BEGIN
    RETURN QUERY
        <SELECT ...>
END

我使用函数而不是视图,因为其中一些包含无法在视图中完成的逻辑。

服务器正在运行 Postgresql 12.4,客户端使用 psqlODBC 12.02,Excel 2016(最新)。

我很感谢这里的每一条建议,我可以如何解决我的问题。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。