我如何在 Postgresql 中检查特定索引是否已加载到内存?
有没有办法检查索引是否加载到内存?
Is there any way to check if index is loaded to memory?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有办法检查索引是否加载到内存?
Is there any way to check if index is loaded to memory?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
检查 contrib 模块 pg_buffercache
安装后,您可以使用此查询来查看是否表和索引位于 buffercache 中:
Check the contrib module pg_buffercache
After installation you can use this query to see if the table and index are in the buffercache:
请注意,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.
为此,请使用 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.