【发布时间】:2011-02-09 14:09:56
【问题描述】:
有什么方法可以检查索引是否加载到内存中?
【问题讨论】:
标签: postgresql indexing
有什么方法可以检查索引是否加载到内存中?
【问题讨论】:
标签: postgresql indexing
请注意,PostgreSQL 不能仅根据索引数据执行查询。它必须访问数据以确定从查询的角度来看哪些信息是可见的;该信息仅在行本身中,而不在索引中。很可能索引都在 RAM 中,但您仍然会看到大量 I/O,因为表不适合那里。
【讨论】:
查看贡献模块pg_buffercache
安装后你可以使用这个查询来查看表和索引是否在buffercache中:
SELECT
DISTINCT
relname
FROM
pg_buffercache
JOIN pg_class USING (relfilenode)
WHERE
relname IN('your_tablename','your_index_name');
【讨论】:
为此使用PgFincore。
请注意,这个问题确实有一个两步解决方案,因为 PostgreSQL 具有两级缓存机制。 pg_buffercache 是检查 PostgreSQL 共享缓冲区缓存的正确工具。 pgfincore 是检查操作系统缓存的正确工具。
【讨论】: