module PgsqlStats class Database attr_accessor :oid, :name, :commits, :rollbacks, :blocks_read, :cache_hits def initialize(row) load(row) end def refresh load(Collector.connection.select_one("SELECT * FROM pg_stat_database WHERE datid = #{oid}")) end def server_processes Collector.server_activity(self.oid) end def total_transactions commits + rollbacks end def cache_hit_rate cache_hits.to_f / (blocks_read + cache_hits) * 100 end private def load(row) self.oid = row["datid"].to_i self.name = row["datname"] self.commits = row["xact_commit"].to_i self.rollbacks = row["xact_rollback"].to_i self.blocks_read = row["blks_read"].to_i self.cache_hits = row["blks_hit"].to_i end end end