Answers are grounded in this paper and cite their sources.
Enterprise database workloads change over time, making it difficult to maintain query performance while lowering computing costs. This study introduces an adaptive query optimization system that combines Jensen-Shannon Divergence (JSD)-based workload change detection, rule-based workload categorization, cost-aware decision-making, and safety-gated optimization. The system detects changes in workload distributions, assesses prospective optimization candidates, and determines if predicted execution-time reductions are worth the cost. Candidates undergo safety inspections and controlled evaluations before their potential advantages are evaluated for adoption. The proposed framework was evaluated using the Join Order Benchmark (JOB), which is based on IMDb relational data and was deployed in a local PostgreSQL environment. The experimental evaluation assessed workload-specific query execution performance under baseline, fixed-index, and adaptive optimization strategies, using 12 benchmark queries and 5 rounds of controlled policy assessment. A PostgreSQL 18.6 database with 1,029,842 entries was used to test the framework. The approach reduced execution times by an average of 5.97% and net costs by an average of 1.55% throughout five rounds of controlled policy assessment. However, optimization efficiency varies across workload profiles, suggesting that quicker query execution does not necessarily equate to reduced total costs. The existing configuration was maintained in the shadow-controller evaluation when the estimated benefits of transitioning were insufficient. These results highlight the significance of workload-aware judgments, configuration-cost analysis, and safety measures in adaptive database optimization. Future study will look at longer workload traces and larger database setups.
No takes yet. Share an insight, caveat, or question.
Pritesh Gehlot (2026) studied this question.
Synapse has enriched 10 related papers. Consider them for comparative context: