class GitLab::Monitor::Database::BloatCollector

Helper to collect bloat metrics.

Private Class Methods

query_for(type) click to toggle source
# File lib/gitlab_monitor/database/bloat.rb, line 21
def query_for(type)
  @queries ||= {}

  return @queries[type] if @queries[type]

  file = File.join(__dir__, "bloat_#{type}.sql")
  fail "Unknown bloat query file: #{file}" unless File.exist?(file)

  @queries[type] = File.read(file)
end

Public Instance Methods

run(type = :btree) click to toggle source
# File lib/gitlab_monitor/database/bloat.rb, line 6
def run(type = :btree)
  execute(self.class.query_for(type)).each_with_object({}) do |row, h|
    h[row["object_name"]] = row
  end
end

Private Instance Methods

execute(query) click to toggle source
# File lib/gitlab_monitor/database/bloat.rb, line 14
def execute(query)
  with_connection_pool do |conn|
    conn.exec(query)
  end
end