From 32a540e0bf3c4172e42fc0eb7c4bba641e9210f4 Mon Sep 17 00:00:00 2001 From: sneak Date: Sun, 27 Jul 2025 22:45:28 +0200 Subject: [PATCH] Increase slow query threshold to 100ms Queries in the 50-70ms range are acceptable for now given SQLite's write serialization constraints. Setting threshold to 100ms to focus on truly problematic queries. --- internal/database/database.go | 5 +++-- internal/database/slowquery.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/database/database.go b/internal/database/database.go index 7d28be3..e3fad66 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -349,14 +349,15 @@ func (d *Database) UpdateLiveRoute( ) error { // Use SQLite's UPSERT capability to avoid the SELECT+UPDATE/INSERT pattern // This reduces the number of queries and improves performance + // Note: We removed the WHERE clause from ON CONFLICT UPDATE because + // if we're updating, we want to update regardless of withdrawn_at status err := d.exec(` INSERT INTO live_routes (id, prefix_id, origin_asn_id, peer_asn, next_hop, announced_at, withdrawn_at) VALUES (?, ?, ?, ?, ?, ?, NULL) ON CONFLICT(prefix_id, origin_asn_id, peer_asn) DO UPDATE SET next_hop = excluded.next_hop, announced_at = excluded.announced_at, - withdrawn_at = NULL - WHERE withdrawn_at IS NULL`, + withdrawn_at = NULL`, generateUUID().String(), prefixID.String(), originASNID.String(), peerASN, nextHop, timestamp) diff --git a/internal/database/slowquery.go b/internal/database/slowquery.go index 9c4af75..ab122e6 100644 --- a/internal/database/slowquery.go +++ b/internal/database/slowquery.go @@ -7,7 +7,7 @@ import ( "time" ) -const slowQueryThreshold = 50 * time.Millisecond +const slowQueryThreshold = 100 * time.Millisecond // logSlowQuery logs queries that take longer than slowQueryThreshold func logSlowQuery(logger *slog.Logger, query string, start time.Time) {