class CQL::Performance::PerformanceMetrics

Overview

Comprehensive performance metrics collection Provides unified access to all performance data across modules

Included Modules

Defined in:

performance/performance_metrics.cr

Constant Summary

HEALTHY_SCORE = 80

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module CQL::Performance::TimingUtils

categorize_duration(duration : Time::Span, slow_threshold : Time::Span = 100.milliseconds, very_slow_threshold : Time::Span = 1.second) : Symbol categorize_duration, format_duration(duration : Time::Span) : String format_duration, measure_execution(&) measure_execution

Constructor Detail

def self.from_components(profiler : QueryProfilerInterface | Nil = nil, detector : NPlusOneDetectorInterface | Nil = nil, cache : CQL::Cache::CacheInterface | Nil = nil, start_time : Time | Nil = nil, config : Config | Nil = nil, error_count : Int32 = 0, monitor : MonitorCounters = MonitorCounters.zero) : self #

Create metrics from performance components


[View source]
def self.new(query_metrics : QueryMetrics, n_plus_one_metrics : NPlusOneMetrics, cache_metrics : CacheMetrics, system_metrics : SystemMetrics, health_metrics : HealthMetrics, top_queries : TopQueries, patterns : PerformancePatterns, issues : Array(Issue), collection_duration : Time::Span = Time::Span.zero, monitor : MonitorCounters = MonitorCounters.zero) #

[View source]

Class Method Detail

def self.calculate_performance_score(query_metrics : QueryMetrics) : Float64 #

Calculate performance score from query metrics (static method for external use)


[View source]
def self.healthy?(profiler : QueryProfilerInterface | Nil = nil, detector : NPlusOneDetectorInterface | Nil = nil, cache : CQL::Cache::CacheInterface | Nil = nil) : Bool #

Whether metrics built from these components would be #healthy?, reading only what the health score needs: the profiler's statistics and slow queries and the detector's patterns.


[View source]
def self.to_json_any(value) : JSON::Any #

Helper method to convert values to JSON::Any recursively


[View source]

Instance Method Detail

def cache_metrics : CacheMetrics #

[View source]
def calculate_performance_score : Float64 #

Calculate overall performance score (0-100) Higher scores indicate better performance


[View source]
def collection_duration : Time::Span #

[View source]
def critical_issues : Array(Issue) #

Get critical issues only


[View source]
def health_metrics : HealthMetrics #

[View source]
def healthy? : Bool #

Check if performance is healthy


[View source]
def high_priority_issues : Array(Issue) #

Get high priority issues


[View source]
def issues : Array(Issue) #

[View source]
def issues_by_severity(severity : Symbol) : Array(Issue) #

Get issues by severity


[View source]
def issues_by_type(type : Symbol) : Array(Issue) #

Get issues by type


[View source]
def monitor : MonitorCounters #

[View source]
def most_frequent_queries(limit : Int32 = 10) : Array(NamedTuple(sql: String, count: Int64, avg_time: Time::Span)) #

Get most frequent queries


[View source]
def n_plus_one_metrics : NPlusOneMetrics #

[View source]
def n_plus_one_patterns_by_severity(severity : Symbol) : Array(NPlusOnePattern) #

Get N+1 patterns by severity


[View source]
def patterns : PerformancePatterns #

[View source]
def query_metrics : QueryMetrics #

Main metrics collection


[View source]
def slowest_queries(limit : Int32 = 10) : Array(QueryData) #

Get slowest queries with details


[View source]
def summary : Hash(String, String | Int64 | Float64) #

Get summary metrics for quick overview


[View source]
def system_metrics : SystemMetrics #

[View source]
def timestamp : Time #

[View source]
def to_h : Hash(String, JSON::Any) #

Export all metrics as a comprehensive hash


[View source]
def to_json : String #

Export as JSON


[View source]
def top_queries : TopQueries #

[View source]