Add opt-in slow SQL and database diagnostics

This commit is contained in:
2026-10-06 13:56:27 -04:00
parent dd2fe2cc7a
commit 8e948c07d9
7 changed files with 80 additions and 1 deletions
+3 -1
View File
@@ -10,6 +10,7 @@ import { backfillLeaderboard } from '../fleet/leaderboard-ingest.js';
import { initializeFleetSettings } from './fleet-settings.js';
import { migrateServerHistory } from './server-history.js';
import { migrateNativeInstances } from '../backends/schema.js';
import { timeStatement } from './slow-statements.js';
let _db: Database.Database | null = null;
@@ -414,11 +415,12 @@ export function db(): Database.Database {
// Callers share statement options (e.g. raw()); use consistent options for
// identical SQL and pass values to run/get/all rather than binding permanently.
const statements = new Map<string, Database.Statement>();
const slowMs = Number(process.env.EC_SLOW_SQL_MS ?? 0);
const prepare = handle.prepare.bind(handle);
handle.prepare = ((sql: string) => {
let statement = statements.get(sql);
if (!statement) {
statement = prepare(sql);
statement = timeStatement(prepare(sql), sql, slowMs);
statements.set(sql, statement);
}
return statement;