【问题标题】:Tuning autovacuum to run when database schema changes?调整 autovacuum 以在数据库模式更改时运行?
【发布时间】:2020-03-13 05:24:45
【问题描述】:

每当我通过多次迁移从软件(代码)升级我的数据库架构时,一些数据库操作需要大量时间才能完成。我理解 pgstats,有些事情搞砸了,查询计划也被修改了。手动运行 ANALYZE 后,相同的操作将在 2-3 秒内完成。

对 autovacuum 和分析的深入研究让我明白了它的作用。但我的要求是在我的数据库模式更新后运行 ANALYZE。

我的应用程序使用实体框架代码优先方法。当我的软件启动和启动时,数据库架构会更新。即使我的 postgres autovacuum 参数设置为 ON,它在模式更新时也不会运行。所以,我需要在我的软件启动后运行 ANALYZE。

如何在软件启动后和任何点击发生之前从我的代码对整个数据库运行 ANALYZE?它是一个 C# WPF 应用程序。

【问题讨论】:

  • EF 6 还是 EF Core?你能发布你的启动代码吗?
  • 您的应用程序不应该在每次启动时都更改数据库架构,因此您不需要在每次启动时都分析它。您可以发布一些代码来显示您在做什么吗? P.S 尝试在应用程序启动时不更改数据库中的任何内容并运行查询,如果仍然很慢,问题可能源于 EF 在第一个查询实际执行之前执行的冷查询:stackoverflow.com/a/16407062/9363973

标签: c# wpf postgresql autovacuum


【解决方案1】:

你必须明确地这样做。架构更改不会触发分析,即使触发,也需要一段时间才能完成处理。

但在升级过程中为每个受影响的表添加ANALYZE 应该很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多