2013-10-08 2 views
0

Я хотел бы знать, если при запуске запроса содержимое базы данных находится в ОЗУ моей системы. Набор данных составляет около 4,1 гб, моя машина имеет 8 гб оперативной памяти. Я читаю с диска каждый раз, когда запускаю запрос SELECT или UPDATE?Как узнать, работает ли моя база данных Postgres 9.2 в памяти?

+0

Вы, безусловно, будете ударять диск с 'UPDATE', как база данных не будут ACID требований, если он писал только в память, как память не (D в ACID). – CadentOrange

ответ

0

Все системы позволяют отслеживать активность ввода-вывода. Таким образом, вы можете использовать средства мониторинга системы - например, для Linux используется iotop.

0

Если этот запрос является единственным активным хостом в системе, используйте системные средства (vmstat, sar), чтобы увидеть, есть ли всплеск в IO, когда он выполняется. Если будет много других вещей, может быть очень сложно понять, чего вы хотите, поскольку нет простого способа отличить данные, фактически прочитанные с диска, из данных, считываемых из кеша файловой системы ОС. Вы можете включить track_io_timing и посмотреть, согласуются ли полученные результаты с данными, поступающими из ОЗУ.

1

Помимо мониторинга активности IO, как другие предложили, вы также можете запустить запрос, чтобы воспользоваться отслеживанием статистики PostgreSQL.

В следующем запросе будет отображаться частота попадания в кеш. Если вы нажмете только кеш, скорость попадания должна быть где-то около 0,99 или выше, если вы делаете много дисков, это будет ниже.

SELECT 
    sum(heap_blks_read) as heap_read, 
    sum(heap_blks_hit) as heap_hit, 
    sum(heap_blks_hit)/(sum(heap_blks_hit) + sum(heap_blks_read)) as ratio 
FROM 
    pg_statio_user_tables; 

Этот запрос, и другие запросы производительности могут быть найдены here

+1

Он также может посмотреть здесь официальный документ о коллекции статистики: http://www.postgresql.org/docs/9.1/static/monitoring-stats.html –

+0

Это обеспечивает асимметричную информацию. Если скорость попадания очень высока, вы знаете, что это происходит из памяти. Но если он низкий, вы не знаете, действительно ли он идет с диска или поступает из кэша, управляемого ОС. – jjanes

Смежные вопросы