class AwesomeExplain::Stats::PostgreSQL
Public Class Methods
dml_stats_sql()
click to toggle source
# 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_sql()
click to toggle source
# 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!()
click to toggle source
# File lib/awesome_explain/stats/postgresql.rb, line 4 def self.upsert! upsert_seq_scans! upsert_dml_stats! end
upsert_dml_stats!()
click to toggle source
# 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!()
click to toggle source
# 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