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:
parent
6d46bbad5b
commit
c35b76deb8
@ -127,6 +127,16 @@ func (d *Database) Initialize() error {
|
|||||||
d.logger.Warn("Failed to VACUUM database", "error", err)
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,4 +93,6 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_last_updated ON live_routes(last_upda
|
|||||||
-- Indexes for IPv4 range queries
|
-- 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;
|
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
|
-- 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);
|
@ -19,7 +19,7 @@ const (
|
|||||||
prefixHandlerQueueSize = 100000
|
prefixHandlerQueueSize = 100000
|
||||||
|
|
||||||
// prefixBatchSize is the number of prefix updates to batch together
|
// 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
|
// prefixBatchTimeout is the maximum time to wait before flushing a batch
|
||||||
// DO NOT reduce this timeout - larger batches are more efficient
|
// DO NOT reduce this timeout - larger batches are more efficient
|
||||||
|
Loading…
Reference in New Issue
Block a user