Optimize AS detail queries and increase PrefixHandler batch size

- Increase PrefixHandler batch size from 20k to 25k (25% increase)
- Add missing index on origin_asn for live_routes table
- This index significantly speeds up AS detail page queries
- Add code to create missing indexes on existing databases
This commit is contained in:
Jeffrey Paul 2025-07-28 22:07:27 +02:00
parent 6d46bbad5b
commit c35b76deb8
4 changed files with 852 additions and 1140 deletions

View File

@ -127,6 +127,16 @@ func (d *Database) Initialize() error {
d.logger.Warn("Failed to VACUUM database", "error", err)
}
// Create any missing indexes for existing databases
missingIndexes := []string{
"CREATE INDEX IF NOT EXISTS idx_live_routes_origin_asn ON live_routes(origin_asn)",
}
for _, idx := range missingIndexes {
if err := d.exec(idx); err != nil {
d.logger.Warn("Failed to create index", "index", idx, "error", err)
}
}
return nil
}

View File

@ -94,3 +94,5 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_upda
CREATE INDEX IF NOT EXISTS idx_live_routes_ipv4_range ON live_routes(v4_ip_start, v4_ip_end) WHERE ip_version = 4;
-- Index to optimize COUNT(DISTINCT prefix) queries
CREATE INDEX IF NOT EXISTS idx_live_routes_ip_mask_prefix ON live_routes(ip_version, mask_length, prefix);
-- Index to optimize AS detail queries
CREATE INDEX IF NOT EXISTS idx_live_routes_origin_asn ON live_routes(origin_asn);

View File

@ -19,7 +19,7 @@ const (
prefixHandlerQueueSize = 100000
// prefixBatchSize is the number of prefix updates to batch together
prefixBatchSize = 20000
prefixBatchSize = 25000
// prefixBatchTimeout is the maximum time to wait before flushing a batch
// DO NOT reduce this timeout - larger batches are more efficient

1976
log.txt

File diff suppressed because it is too large Load Diff