有没有办法检查索引是否加载到内存?
答案 0 :(得分:4)
检查contrib模块pg_buffercache
安装后,您可以使用此查询来查看表和索引是否在buffercache中:
SELECT
DISTINCT
relname
FROM
pg_buffercache
JOIN pg_class USING (relfilenode)
WHERE
relname IN('your_tablename','your_index_name');
答案 1 :(得分:1)
使用PgFincore。
请注意,这个问题确实有两个步骤,因为PostgreSQL有一个两级缓存机制。 pg_buffercache是检查PostgreSQL共享缓冲区缓存的正确工具。 pgfincore是检查操作系统缓存的正确工具。
答案 2 :(得分:1)
请注意,PostgreSQL不能仅基于索引数据执行查询。它必须访问数据,以便从查询的角度确定哪些信息是可见的;该信息仅在行本身中,而不在索引中。索引很可能都在RAM中,但你仍然看到I / O很重,因为该表不适合那里。