Class: BrainzLab::Rails::Analyzers::SlowQueryAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/brainzlab/rails/analyzers/slow_query_analyzer.rb

Overview

Analyzes slow queries and provides optimization suggestions

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ SlowQueryAnalyzer

Returns a new instance of SlowQueryAnalyzer.



8
9
10
11
# File 'lib/brainzlab/rails/analyzers/slow_query_analyzer.rb', line 8

def initialize(configuration)
  @configuration = configuration
  @slow_queries = []
end

Instance Method Details

#analyze(sql, duration_ms, payload) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/brainzlab/rails/analyzers/slow_query_analyzer.rb', line 13

def analyze(sql, duration_ms, payload)
  query_info = {
    sql: truncate_sql(sql),
    duration_ms: duration_ms,
    name: payload[:name],
    timestamp: Time.now.utc,
    suggestions: generate_suggestions(sql, payload)
  }

  # Log slow query
  log_slow_query(query_info)

  # Track for reporting
  @slow_queries << query_info

  query_info
end

#clear!Object



35
36
37
# File 'lib/brainzlab/rails/analyzers/slow_query_analyzer.rb', line 35

def clear!
  @slow_queries = []
end

#recent_slow_queries(limit = 10) ⇒ Object



31
32
33
# File 'lib/brainzlab/rails/analyzers/slow_query_analyzer.rb', line 31

def recent_slow_queries(limit = 10)
  @slow_queries.last(limit)
end