可以先明確查詢過(guò)程是什么,經(jīng)歷了哪些流程,再來(lái)看哪里可以做優(yōu)化。
以下列出了我能想到的知識(shí)點(diǎn),如果有錯(cuò)誤或補(bǔ)充,希望大家可以提出來(lái)
1. 流程
- 建立連接(連接池)
- 消息發(fā)送(轉(zhuǎn)碼,utf-8)
- 查詢過(guò)程
- 緩存
- 語(yǔ)法分析、語(yǔ)義分析
- 查詢優(yōu)化器
- 查詢引擎
- 存儲(chǔ)引擎選擇
- 消息預(yù)加載(LRU鏈表)
- B+樹(shù)結(jié)構(gòu)
- 索引選擇(聚簇索引、非聚簇索引)
- 查詢成本:消息預(yù)處理、采樣分析
- 索引失效
- 索引使用
- explain
- 回表
- 索引覆蓋
- 如果是寫SQL
- redo log
- undo log
- bin log
- 頁(yè)分裂
- 事務(wù)(隔離性)
- 鎖
- 數(shù)據(jù)返回(轉(zhuǎn)碼)
2. 提前準(zhǔn)備:
- 存儲(chǔ)引擎選擇(InnoDB、myisam)
- 分庫(kù)分表
- 分布式事務(wù)
- 水平分表、垂直分表
- 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(varchar、int、datatime)
- 索引設(shè)計(jì)(索引數(shù)量、字段區(qū)分度)
- SQL設(shè)計(jì)
- join、union、having
- 索引失效
- limit分頁(yè)
- distinct