Class: AwesomeExplain::Stats::PostgreSQL

Inherits:
Object
  • Object
show all
Defined in:
lib/awesome_explain/stats/postgresql.rb

Class Method Summary collapse

Class Method Details

.dml_stats_sqlObject



49
50
51
# File 'lib/awesome_explain/stats/postgresql.rb', line 49

def self.dml_stats_sql
  "SELECT schemaname as schema_name, relname as table_name, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables"
end

.seq_scans_sqlObject



45
46
47
# File 'lib/awesome_explain/stats/postgresql.rb', line 45

def self.seq_scans_sql
  "select schemaname as schema_name, relname as table_name, seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, pg_relation_size(schemaname::text || '.'::text || relname::text) as size_bytes from pg_stat_user_tables"
end

.upsert!Object



4
5
6
7
# File 'lib/awesome_explain/stats/postgresql.rb', line 4

def self.upsert!
  upsert_seq_scans!
  upsert_dml_stats!
end

.upsert_dml_stats!Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/awesome_explain/stats/postgresql.rb', line 28

def self.upsert_dml_stats!
  result = ActiveRecord::Base.connection.execute(dml_stats_sql).to_a
  result.each do |row|
    row = OpenStruct.new(row)
    pg_dml_stat = AwesomeExplain::PgDmlStat.find_or_create_by({
      schema_name: row.schema_name,
      table_name: row.table_name
    })

    pg_dml_stat.update({
      total_inserts: row.n_tup_ins,
      total_updates: row.n_tup_upd,
      total_deletes: row.n_tup_del,
    })
  end
end

.upsert_seq_scans!Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/awesome_explain/stats/postgresql.rb', line 9

def self.upsert_seq_scans!
  result = ActiveRecord::Base.connection.execute(seq_scans_sql).to_a
  result.each do |row|
    row = OpenStruct.new(row)
    pg_seq_scan = AwesomeExplain::PgSeqScan.find_or_create_by({
      schema_name: row.schema_name,
      table_name: row.table_name
    })

    pg_seq_scan.update({
      seq_scan: row.seq_scan,
      seq_tup_read: row.seq_tup_read,
      idx_scan: row.idx_scan,
      idx_tup_fetch: row.idx_tup_fetch,
      size_bytes: row.size_bytes
    })
  end
end