【问题标题】:postgres pg_statio: difference between heap_blks_hit and idx_blks_hitpostgres pg_statio:heap_blks_hit 和 idx_blks_hit 之间的区别
【发布时间】:2021-04-21 14:29:01
【问题描述】:

我有兴趣查询:

    create or replace view iostat as select blk.relname
    as relname,blk.heap_blks_read || ':' || blk.heap_blks_hit as heap_blk,
            blk.idx_blks_read || ':' || blk.idx_blks_hit as idx_blk,
            tpl.seq_scan || ':' || tpl.seq_tup_read as seq_tup,
            tpl.idx_scan || ':' || tpl.idx_tup_fetch as idx_tup
    from  pg_statio_user_tables blk JOIN  pg_stat_user_tables tpl
    USING (relname);

所有对的区别是什么?它们都是什么意思?

【问题讨论】:

    标签: sql postgresql statistics


    【解决方案1】:

    在这种情况下,“堆”不应与计算机科学术语“堆”混淆,后者指的是数据结构或内存段。在 PostgreSQL 中,“堆”是指与特定表相关的数据文件。以idx_ 为前缀的列指的是为加快数据查找(在堆中)而创建的索引。

    为了回答你关于这些对的含义的问题,我会这样描述它们:

    • heap_blk 是从磁盘读取的表的 8KB 块之间的比率 : 从缓存中读取的表的 8KB 块
    • idx_blk 将是从磁盘读取的“此表”的所有索引的 8KB 块之间的比率(由 relname 表示): 从缓存中读取的“该表”的所有索引的 8KB 块之间的比率
    • seq_tup 将是在“此表”上执行的顺序扫描数之间的比率 : 从“此表”读取的行/元组数(自上次 pg_reset_stats() 调用以来)
    • idx_tup 将是在“此表”上执行的索引扫描数之间的比率 : 引用索引后获取的行/元组数

    关于pg_statio_user_tables的每一列的更多细节可以找到in the documentation

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2021-12-25
      相关资源
      最近更新 更多