Class: SqlLogging::Statistics

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/sql-logging/statistics.rb

Defined Under Namespace

Classes: Data

Class Method Summary collapse

Class Method Details

.configurationObject



27
28
29
# File 'lib/sql-logging/statistics.rb', line 27

def configuration
  SqlLogging.configuration
end

.dataObject



36
37
38
# File 'lib/sql-logging/statistics.rb', line 36

def data
  @data ||= Data.new
end

.log_reportObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sql-logging/statistics.rb', line 59

def log_report
  logger.debug "SQL Logging: #{data.queries} statements executed" \
    ", returning #{data.bytes} bytes"

  return unless top_queries?
  logger.debug "Top #{top_sql_queries} SQL executions:"
  sorted_keys = top_queries.keys.sort_by do |k|
    top_queries[k][show_top_sql_queries]
  end.reverse
  sorted_keys.slice(0..top_sql_queries).each do |key|
    query = top_queries[key]
    logger.debug format(
      '  Executed %d times in %.1fms (%.1f/%.1f/%.1fms min/median/max),' \
      " returning %d rows(%d bytes):\n"\
      "    %s\n" \
      "    First exec was: %s\n" \
      '    %s', query.queries, query.total_time, query.min_time,
      query.median_time, query.max_time, query.rows, query.bytes,
      query.name, query.sql, query.backtrace
    )
  end
end

.record_query(sql, name, msec, result) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sql-logging/statistics.rb', line 46

def record_query(sql, name, msec, result)
  return if name.blank? || name =~ / Columns$/ || name == :skip_logging
  ntuples, bytes = tuples_and_bytes_in_result(result)

  data.add_query(ntuples, bytes)

  backtrace = backtrace_cleaner.clean(caller).join("\n    ")
  add_query_to_top_queries(sql, name, backtrace, msec, ntuples, bytes)

  logger.debug "    #{ntuples} rows, #{bytes} bytes"
  logger.debug "    #{backtrace}" if show_sql_backtrace
end

.reset_statistics!Object



42
43
44
# File 'lib/sql-logging/statistics.rb', line 42

def reset_statistics!
  data.reset!
end