module Elefant::Postgres::StatQueries

Public Class Methods

new(connection) click to toggle source
# File lib/elefant/postgres/stat_queries.rb, line 4
def initialize(connection)
  @connection = connection
end

Public Instance Methods

activity() click to toggle source
# File lib/elefant/postgres/stat_queries.rb, line 8
def activity
  exec %Q{
      SELECT
        -- datid
        -- datname
        -- pid
        -- usesysid
        usename          AS act_user,
        application_name AS act_app,
        client_addr      AS act_c_addr,
        client_hostname  AS act_c_host,
        client_port      AS act_c_port,
        backend_start    AS act_bknd_start,
        xact_start       AS act_tx_start,
        query_start      AS act_q_start,
        state_change     AS act_st_chng,
        waiting          AS act_wtng,
        state            AS act_state,
        query            AS act_qry
      FROM
        pg_stat_activity
      WHERE
        datname = '%s';
  } % [@connection.db_name]
end
summary() click to toggle source
# File lib/elefant/postgres/stat_queries.rb, line 63
def summary
  exec %Q{
    SELECT
      now()                          AS db_time,
      MAX(stat_db.xact_commit)       AS commits,
      MAX(stat_db.xact_rollback)     AS rollbks,
      MAX(stat_db.blks_read)         AS blksrd,
      MAX(stat_db.blks_hit)          AS blkshit,
      MAX(stat_db.numbackends)       AS bkends,
      SUM(stat_tables.seq_scan)      AS seqscan,
      SUM(stat_tables.seq_tup_read)  AS seqtprd,
      SUM(stat_tables.idx_scan)      AS idxscn,
      SUM(stat_tables.idx_tup_fetch) AS idxtrd,
      SUM(stat_tables.n_tup_ins)     AS ins,
      SUM(stat_tables.n_tup_upd)     AS upd,
      SUM(stat_tables.n_tup_del)     AS del,
      MAX(stat_locks.locks)          AS locks,
      MAX(activity.sess)             AS activeq
    FROM
      pg_stat_database    AS stat_db,
      pg_stat_user_tables AS stat_tables,
      (SELECT COUNT(*) AS locks FROM pg_locks ) AS stat_locks,
      (SELECT COUNT(*) AS sess FROM pg_stat_activity WHERE query <> '<IDLE>') AS activity
    WHERE
      stat_db.datname = '%s';
              } % [@connection.db_name]
end
user_indexes() click to toggle source
# File lib/elefant/postgres/stat_queries.rb, line 47
def user_indexes
  exec %Q{
    SELECT
      -- relid
      -- indexrelid
      -- schemaname
      relname AS rel_name,
      indexrelname AS idx_name,
      idx_scan AS idx_scn,
      idx_tup_read AS idx_tup_rd,
      idx_tup_fetch  AS idx_tup_ftch
    FROM
      pg_stat_user_indexes;
  }
end
user_tables() click to toggle source
# File lib/elefant/postgres/stat_queries.rb, line 34
def user_tables
  exec %Q{
    SELECT
      relname        AS rel_name,
      heap_blks_read AS heap_blks_rd,
      heap_blks_hit  AS heap_blks_ht,
      idx_blks_read  AS idx_blks_rd,
      idx_blks_hit   AS idx_blks_ht
    FROM
      pg_statio_user_tables;
  }
end