官术网_书友最值得收藏!

優化與執行

MySQL解析查詢以創建內部數據結構(解析樹),然后對其進行各種優化,包括重寫查詢、決定表的讀取順序,以及選擇合適的索引等。用戶可以通過特殊關鍵字向優化器傳遞提示,從而影響優化器的決策過程。也可以請求服務器解釋優化過程的各個方面,使用戶可以知道服務器是如何進行優化決策的,并提供一個參考點,便于用戶重構查詢和schema、修改相關配置,使應用盡可能高效地運行。我們將在第8章介紹更多關于優化器的細節。

優化器并不關心表使用的是什么存儲引擎,但存儲引擎對于查詢優化是有影響的。優化器會向存儲引擎詢問它的一些功能、某個具體操作的成本,以及表數據的統計信息。例如,一些存儲引擎支持對某些查詢有幫助的特定索引類型。更多關于索引與schema優化的內容,請參見第6章和第7章。

在舊版本中,MySQL可以使用內部查詢緩存(query cache)來查看是否可以直接提供結果。但是,隨著并發性的增加,查詢緩存成為一個讓人詬病的瓶頸。從MySQL 5.7.20版本開始,查詢緩存已經被官方標注為被棄用的特性,并在8.0版本中被完全移除。盡管查詢緩存不再是MySQL服務器的核心部分,但緩存被頻繁請求的結果集依然是一個很好的實踐。在本書的范圍之外,一個流行的設計模式是在memcached或Redis中緩存數據。

主站蜘蛛池模板: 岑溪市| 中山市| 德惠市| 远安县| 正蓝旗| 渭源县| 东安县| 台湾省| 南丰县| 改则县| 萝北县| 美姑县| 石嘴山市| 荔波县| 满城县| 九江县| 岳池县| 中超| 绥德县| 万州区| 宝应县| 内乡县| 米泉市| 策勒县| 宜州市| 玛多县| 会东县| 鄂州市| 山东省| 临海市| 承德市| 隆林| 工布江达县| 清苑县| 托克逊县| 日喀则市| 赣榆县| 马公市| 沂南县| 商洛市| 门源|