gpt4 book ai didi

postgresql - 识别导致 pg_stat_user_tables 中显示的 seq_scan 的查询

转载 作者:行者123 更新时间:2023-11-29 13:45:11 25 4
gpt4 key购买 nike

我已经使用 EXPLAIN 验证了所有查询,并且它们在计划中显示了一个索引扫描节点。但是当我在表 pg_stat_user_tables 中看到统计信息时,我看到了 seq_scan 的非零值。

有可能 PostgreSQL 正在进行位图堆扫描而不仅仅是索引扫描,但我不完全确定。

我有以下疑问:

  1. 位图堆扫描在上面的统计表中算作seq_scan吗?

  2. 如何识别执行顺序扫描的查询?数据库的流量不均匀,因此监控 pg_stat_activity 没有帮助。

最佳答案

位图索引扫描计入idx_scan

找到执行顺序扫描的查询更难。

让我们假设该表相当大,因此顺序扫描需要一定的时间(对于这个答案,我假设至少 500 毫秒,但这当然可能不同)。如果顺序扫描非常短,您就不会也不应该担心。

现在将 auto_explain 放入 shared_preload_libraries 并将以下参数添加到 postgresql.conf:

auto_explain.log_min_duration = 500
auto_explain.log_nested_statements = on

然后重启服务器。

现在您将在 PostgreSQL 日志中获得所有持续时间超过 500 毫秒的语句的执行计划,并且您应该能够找到查询。

顺便说一句,顺序扫描并不总是您应该担心的事情。如果它们很少发生,那通常没问题。您可能正在使用 pg_dump 搜索自己的数据库备份!只有经常发生的昂贵的顺序扫描才是问题。

关于postgresql - 识别导致 pg_stat_user_tables 中显示的 seq_scan 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com