如果特定索引加载到内存,我如何检查Postgresql?

时间:2011-02-09 14:09:57

标签: postgresql indexing

有没有办法检查索引是否加载到内存?

3 个答案:

答案 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很重,因为该表不适合那里。