我如何在 Postgresql 中检查特定索引是否已加载到内存?

发布于 2024-10-16 18:25:31 字数 24 浏览 0 评论 0原文

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

Is there any way to check if index is loaded to memory?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无人问我粥可暖 2024-10-23 18:25:31

检查 contrib 模块 pg_buffercache

安装后,您可以使用此查询来查看是否表和索引位于 buffercache 中:

SELECT
    DISTINCT
    relname
FROM
    pg_buffercache
        JOIN pg_class USING (relfilenode)
WHERE
    relname IN('your_tablename','your_index_name'); 

Check the contrib module pg_buffercache

After installation you can use this query to see if the table and index are in the buffercache:

SELECT
    DISTINCT
    relname
FROM
    pg_buffercache
        JOIN pg_class USING (relfilenode)
WHERE
    relname IN('your_tablename','your_index_name'); 
我一向站在原地 2024-10-23 18:25:31

请注意,PostgreSQL 不能仅根据索引数据执行查询。它必须访问数据才能确定从查询的角度来看哪些信息是可见的;该信息仅存在于行本身中,而不存在于索引中。索引很可能全部位于 RAM 中,但您仍然会看到大量 I/O,因为表不适合存放在那里。

Note that PostgreSQL can't execute queries just based on the index data. It has to visit the data in order to determine what information is visible from the perspective of the query; that information is only in the rows themselves, not in the index. It's quite possible the index is all in RAM, but you're still seeing heavy I/O because the table doesn't fit there.

我一直都在从未离去 2024-10-23 18:25:31

为此,请使用 PgFincore

请注意,这个问题确实有两步解决方案,因为 PostgreSQL 有两级缓存机制。 pg_buffercache 是检查 PostgreSQL 共享缓冲区缓存的正确工具。 pgfincore 是检查操作系统缓存的正确工具。

Use PgFincore for that.

Note that this question really has a two step solution because PostgreSQL has a two-level caching mechanism. pg_buffercache is the right tool for examining the PostgreSQL shared buffer cache. pgfincore is the right tool for examining the operating system's cache.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文