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:
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

@@ -93,4 +93,6 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_upda
-- Indexes for IPv4 range queries
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);
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);