This paper proposes a Dual Hierarchical Adaptation (DHDA) framework to address the performance learning problem of configurable software systems operating in dynamic environments. DHDA is designed to adapt to both global changes (performance changes across the entire configuration space) and local changes (changes that affect only specific parts of the configuration space). At a high level, DHDA responds to global changes only when necessary by repartitioning the data and retraining local models. At a lower level, local models in each partition asynchronously detect and adapt to local changes. For efficiency, it combines incremental updates with periodic global retraining to minimize unnecessary computation when changes are not detected. Evaluation results on eight software systems demonstrate that DHDA significantly outperforms state-of-the-art methods, effectively adapts to changes with up to a 2x performance improvement, and maintains reasonable overhead.