Как я могу проверить в Postgresql, если конкретный индекс загружен в память? - PullRequest
2 голосов
/ 09 февраля 2011

Есть ли способ проверить, загружен ли индекс в память?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2011

Проверьте модуль Contribute pg_buffercache

После установки вы можете использовать этот запрос, чтобы увидеть, находятся ли таблица и индекс в буферной памяти:

SELECT
    DISTINCT
    relname
FROM
    pg_buffercache
        JOIN pg_class USING (relfilenode)
WHERE
    relname IN('your_tablename','your_index_name'); 
1 голос
/ 16 февраля 2011

Обратите внимание, что PostgreSQL не может выполнять запросы только на основе данных индекса. Он должен посетить данные, чтобы определить, какая информация видна с точки зрения запроса; эта информация только в самих строках, а не в индексе. Вполне возможно, что весь индекс находится в оперативной памяти, но вы все еще видите интенсивный ввод-вывод, потому что таблица там не помещается.

1 голос
/ 10 февраля 2011

Используйте для этого PgFincore .

Обратите внимание, что этот вопрос действительно имеет двухэтапное решение, поскольку PostgreSQL имеет двухуровневый механизм кэширования.pg_buffercache - это правильный инструмент для изучения общего буферного кэша PostgreSQL.pgfincore - это правильный инструмент для проверки кэша операционной системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...