我对以下问题感兴趣:
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);所有对的区别是什么?所有这些都意味着什么?
发布于 2021-01-17 09:06:27
在这种情况下,“堆”不应与计算机科学术语“堆”混淆,后者指的是数据结构或内存段。在PostgreSQL中,“堆”是指与特定表相关的数据文件。以idx_为前缀的列是指为加快数据查找速度而创建的索引(在堆中)。
为了回答你关于对的意义的问题,我用这样的方式来描述它们:
heap_blk是从磁盘读取的表的8KB块之间的比率,:是从缓存中读取的表的8KB块。idx_blk将是“此表”的所有索引(由relname表示)从磁盘读取的8KB块与从缓存读取的“此表”的所有索引的8KB块之间的比率。seq_tup将是对“此表”执行的顺序扫描次数的比率,:从“此表”读取的行/元组数(自上次pg_reset_stats()调用以来)。idx_tup将是对“此表”执行的索引扫描数与引用索引后获取的行/元组数之间的比率。有关pg_statio_user_tables的每一列的更多详细信息,可以找到在文件中。
https://stackoverflow.com/questions/65755085
复制相似问题