{
  "license": "CC BY 4.0",
  "recipe": {
    "slug": "database-lock-waits-and-deadlocks",
    "title": "Find Database Lock Waits and Deadlocks",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "database_lock_wait_events",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "When the lock wait was observed."
      },
      {
        "name": "database_name",
        "type": "Utf8",
        "description": "Approved logical database name."
      },
      {
        "name": "blocked_query_fingerprint",
        "type": "Utf8",
        "description": "Normalized label for the blocked application operation."
      },
      {
        "name": "blocking_query_fingerprint",
        "type": "Utf8",
        "description": "Normalized label for the operation holding the lock."
      },
      {
        "name": "lock_type",
        "type": "Utf8",
        "description": "Controlled lock category."
      },
      {
        "name": "wait_ms",
        "type": "Float64",
        "description": "Observed lock wait in milliseconds."
      },
      {
        "name": "resolved",
        "type": "Boolean",
        "description": "Whether the wait ended without remaining blocked."
      },
      {
        "name": "deadlock_detected",
        "type": "Boolean",
        "description": "Whether the database reported a deadlock outcome."
      },
      {
        "name": "transaction_id",
        "type": "Utf8",
        "description": "Application-safe transaction identifier."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Deployment environment."
      }
    ]
  },
  "query": "SELECT\n  database_name,\n  blocked_query_fingerprint,\n  blocking_query_fingerprint,\n  COUNT(*) AS lock_wait_incidents,\n  COUNT(DISTINCT transaction_id) AS affected_transactions,\n  AVG(wait_ms) AS average_wait_ms,\n  MAX(wait_ms) AS maximum_wait_ms,\n  SUM(CASE WHEN NOT resolved THEN 1 ELSE 0 END) AS unresolved_incidents,\n  SUM(CASE WHEN deadlock_detected THEN 1 ELSE 0 END) AS deadlocks\nFROM database_lock_wait_events\nWHERE timestamp_utc >= now() - INTERVAL '7 days'\n  AND environment = 'production'\nGROUP BY\n  database_name,\n  blocked_query_fingerprint,\n  blocking_query_fingerprint\nHAVING COUNT(*) >= 3\nORDER BY deadlocks DESC, maximum_wait_ms DESC;",
  "fixtureKind": "reproducible",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 1200,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 900,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T16:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 1500,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-3",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T15:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 2400,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-4",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T14:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 800,
      "resolved": true,
      "deadlock_detected": true,
      "transaction_id": "lock-txn-1-5",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T13:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 1700,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-6",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 3200,
      "resolved": false,
      "deadlock_detected": true,
      "transaction_id": "lock-txn-1-7",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 1100,
      "resolved": false,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-8",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T14:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 300,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T13:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 450,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 600,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-3",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 550,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-4",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T10:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 700,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-5",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T09:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 400,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-6",
      "environment": "production"
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T18:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 1200,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T17:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 900,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T16:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 1500,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-3",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T15:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 2400,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-4",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T14:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 800,
      "resolved": true,
      "deadlock_detected": true,
      "transaction_id": "lock-txn-1-5",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T13:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 1700,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-6",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "row",
      "wait_ms": 3200,
      "resolved": false,
      "deadlock_detected": true,
      "transaction_id": "lock-txn-1-7",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00.000Z",
      "database_name": "app_production",
      "blocked_query_fingerprint": "UPDATE orders SET status = ?",
      "blocking_query_fingerprint": "SELECT order FOR UPDATE",
      "lock_type": "transaction",
      "wait_ms": 1100,
      "resolved": false,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-1-8",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T14:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 300,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-1",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T13:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 450,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-2",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 600,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-3",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 550,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-4",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T10:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "row",
      "wait_ms": 700,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-5",
      "environment": "production"
    },
    {
      "timestamp_utc": "2026-07-28T09:00:00.000Z",
      "database_name": "analytics_production",
      "blocked_query_fingerprint": "REFRESH customer_summary",
      "blocking_query_fingerprint": "INSERT customer_event",
      "lock_type": "transaction",
      "wait_ms": 400,
      "resolved": true,
      "deadlock_detected": false,
      "transaction_id": "lock-txn-2-6",
      "environment": "production"
    }
  ],
  "expectedOutput": {
    "columns": [
      "database_name",
      "blocked_query_fingerprint",
      "blocking_query_fingerprint",
      "lock_wait_incidents",
      "affected_transactions",
      "average_wait_ms",
      "maximum_wait_ms",
      "unresolved_incidents",
      "deadlocks"
    ],
    "rows": [
      {
        "database_name": "app_production",
        "blocked_query_fingerprint": "UPDATE orders SET status = ?",
        "blocking_query_fingerprint": "SELECT order FOR UPDATE",
        "lock_wait_incidents": 8,
        "affected_transactions": 8,
        "average_wait_ms": 1600,
        "maximum_wait_ms": 3200,
        "unresolved_incidents": 2,
        "deadlocks": 2
      },
      {
        "database_name": "analytics_production",
        "blocked_query_fingerprint": "REFRESH customer_summary",
        "blocking_query_fingerprint": "INSERT customer_event",
        "lock_wait_incidents": 6,
        "affected_transactions": 6,
        "average_wait_ms": 500,
        "maximum_wait_ms": 700,
        "unresolved_incidents": 0,
        "deadlocks": 0
      }
    ]
  },
  "notes": [
    "The included synthetic input rows generate the expected output when timestamps are shifted into the documented query window.",
    "Run this fixture in the public browser SQL playground; the selected query executes locally with DuckDB-Wasm.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}