MySQL的allow_max_zone_cost參數是什么意思?在MySQL的優化器中,查詢優化器必須要使用一個代價模型來計算執行各種可行執行計劃所需要的代價,并根據代價的大小來選擇一個最好的執行計劃,其計算方式一般是基于CPU和I/O的代價。
但是,代價模型的計算可能會中斷,例如在一批索引上置頂查詢,MySQL查詢優化器會執行許多計算,這些計算需要消耗更多的CPU和I / O資源,而這些資源消耗又可以分為正常(合理)的和異常(不合理)的消耗。
如果允許異常消耗,也就是允許代價模型中代價的計算超過閾值,則可以提高查詢優化的效率。而MySQL版本5.7以上的allow_max_zone_cost就是用于允許異常消耗的參數。
mysql>SET SESSION optimizer_switch = 'allow_max_zone_cost=2000';
開啟allow_max_zone_cost參數,對于占用過多資源的查詢,代價模型計算的所使用的時間將會被縮短,優化器選擇執行計劃的速度也會提升。但是使用這個參數還要關注查詢性能的提高和資源占用的情況,同時要進行適當的優化器調整和性能監控。