Class: ActiveRecord::Db::Metrics::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord/db/metrics/collector.rb

Overview

Collects and tracks database operation metrics during a request lifecycle

Constant Summary collapse

CRUD_KEYWORDS =
%w[INSERT UPDATE DELETE SELECT].freeze

Instance Method Summary collapse

Constructor Details

#initializeCollector

Returns a new instance of Collector.



10
11
12
13
14
15
# File 'lib/activerecord/db/metrics/collector.rb', line 10

def initialize
  @query_count = 0
  # Track CRUD operations per table
  # Example: { users: { SELECT: 5, INSERT: 1 }, posts: { SELECT: 2 } }
  @crud_counts_by_table = Hash.new { |hash, key| hash[key] = Hash.new(0) }
end

Instance Method Details

#resultsHash

Get collected metrics

Returns:

  • (Hash)

    Hash containing :total_queries and :crud_operations_by_table



29
30
31
32
33
34
# File 'lib/activerecord/db/metrics/collector.rb', line 29

def results
  {
    total_queries: @query_count,
    crud_operations_by_table: @crud_counts_by_table
  }
end

#start_monitoringObject

Subscribe to ActiveRecord SQL notifications



18
19
20
# File 'lib/activerecord/db/metrics/collector.rb', line 18

def start_monitoring
  @subscriber = ActiveSupport::Notifications.subscribe('sql.active_record', log_subscriber)
end

#stop_monitoringObject

Unsubscribe from ActiveRecord SQL notifications



23
24
25
# File 'lib/activerecord/db/metrics/collector.rb', line 23

def stop_monitoring
  ActiveSupport::Notifications.unsubscribe(@subscriber) if @subscriber
end