database-observability

nexus-labs-automation's avatarfrom nexus-labs-automation

Instrument database queries, connection pools, and detect N+1 queries

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 26, 2025⬇️1downloads

When & Why to Use This Skill

This Claude skill provides comprehensive database observability by instrumenting SQL queries, monitoring connection pool health, and automatically detecting performance bottlenecks like N+1 queries. It empowers developers and SREs to optimize database interactions, ensure resource availability, and maintain high-performance application backends through standardized tracing and the USE methodology.

Use Cases

  • Performance Optimization: Identifying and fixing N+1 query patterns by detecting redundant database calls within a single request.
  • Resource Management: Monitoring connection pool metrics such as active/idle connections and wait durations to prevent application downtime due to pool exhaustion.
  • Slow Query Detection: Tracing query execution times and attributes to pinpoint slow SQL statements that require indexing or refactoring.
  • Security & Compliance: Implementing secure database tracing patterns that use parameterized statements to prevent PII leaks in observability logs.
namedatabase-observability
description"Instrument database queries, connection pools, and detect N+1 queries"
priority2

Database Observability

Database is often the bottleneck. Track queries, pools, and patterns.

Query Span Attributes

Attribute Example Required
db.system postgresql, mysql Yes
db.operation SELECT, INSERT Yes
db.name orders_db Yes
db.sql.table users Recommended
db.statement SELECT * FROM users WHERE id = ? Parameterized only!

Connection Pool Metrics (USE)

Metric Type Description
db.connections.active Gauge In use
db.connections.idle Gauge Available
db.connections.max Gauge Pool limit
db.connections.wait_count Counter Had to wait
db.connections.wait_duration Histogram Wait time

Issues to Detect

Issue Detection Fix
N+1 queries >10 identical queries per request Use eager loading
Slow queries Duration > p95 threshold Add indexes, optimize
Pool exhaustion wait_count increasing Increase pool, fix leaks

Query Wrapper Pattern

Before: Start span (db.system, db.operation, db.sql.table), start timer
After:  Record duration, set db.rows_affected, record errors, end span

Pool Monitor Pattern

Every 10s: Record active, idle, wait_count, wait_duration from pool stats

Anti-Patterns

  • Full SQL with values → PII risk, use parameterized only
  • No pool metrics → Can't detect saturation
  • Missing slow query alerts → Problems go unnoticed

References

  • references/methodology/use-methodology.md
  • references/platforms/{platform}/database.md