MySQL索引小記

先說一下存儲引擎

MySQL5.1.X之前默認(rèn)是MyISAM女轿,從MySQL5.5.X開始贵试,默認(rèn)存儲引擎為InnoDB Plugin

MyISAM

結(jié)構(gòu)

每個MyISAM在磁盤上會將數(shù)據(jù)存儲成三個文件蜕乡,分別是:.frm文件存儲表定義,.myd文件是數(shù)據(jù)文件屋摇,.myi文件是索引文件

特點(diǎn)

表級索偶洋、不支持事務(wù)支持全文索引

InnoDB

結(jié)構(gòu)

.frm文件存儲表定義,.idb文件存儲數(shù)據(jù)和索引文件

特點(diǎn)

行級索妓雾、支持事務(wù)娶吞、不支持全文索引

如何選擇

假如一個商城系統(tǒng),在設(shè)計訂單表和商品表時械姻,如何選擇引擎

訂單表:一般后臺操作妒蛇,對事務(wù)要求高,查詢少楷拳,用InnoDB

商品表:一般前臺展示绣夺,查詢多,用MyISAM

索引

常用索引類型一般為唯一性索引和普通索引欢揖,而索引方法有BTREE和HASH陶耍,常用BTREE,而不同引擎下對應(yīng)的結(jié)構(gòu)不同浸颓,那么其對應(yīng)的索引也就不相同了

MyISAM下的索引

mysql_myisam01.png

MyISAM引擎使用B+Tree作為索引結(jié)構(gòu)物臂,葉子節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址,Col1為主鍵产上,上圖是主索引的原理圖

mysql_myisam02.png

Col2建立的一個輔助索引棵磷,上圖是基索引的原理圖
MyISAM的這種索引方式叫做非聚集索引,即索引和數(shù)據(jù)分開放

InnoDB下的索引

mysql_innodb01.png

InnoDB也使用B+Tree晋涣,但實(shí)現(xiàn)方式與MyISAM不同仪媒,InnoDB的數(shù)據(jù)文件本身就是索引文件,上圖是Col1作為主鍵的主索引的原理圖

mysql_innodb02.png

InnoDB的輔助索引data域存儲相應(yīng)記錄主鍵的值而不是地址,即InnoDB的所有輔助索引都引用主鍵作為data域算吩,上圖為col3的輔助索引
像InnoDB這樣數(shù)據(jù)和索引都放在同一文件叫做聚集索引留凭,這種實(shí)現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵偎巢,然后用主鍵到主索引中檢索獲得記錄

關(guān)于聚集索引

  1. 默認(rèn)拿主鍵作為聚集索引
  2. 如果沒有主鍵蔼夜,會去取非空唯一的索引作為聚集索引
  3. 如果上面都沒有,Innodb自己去維護(hù)一個唯一索引

總結(jié)

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):
提高檢索速度压昼,降低IO求冷、CPU消耗
缺點(diǎn):
占空間,索引字段更新會有性能損耗

用索引

  1. 單表單庫窍霞,出現(xiàn)查詢性能瓶頸匠题,大概在500萬
  1. 排序字段
  1. 分組字段

不用索引

  1. 頻繁更新的字段不適合建立索引
  2. where沒有使用的字段
  3. 表的數(shù)據(jù)很少
  4. 數(shù)據(jù)重復(fù)且分布均衡的字段,如性別字段狀態(tài)字段
  5. 參與列計算的時候不適合建立索引

優(yōu)化思路

  1. 建索引
  2. sql解析
  3. 緩存
  4. 拆分(分庫但金,分表(垂直韭山,水平))
  5. scale out 水平擴(kuò)展 增加機(jī)器 集群負(fù)載 (建議)
    scale up 提高服務(wù)器性能,增加CPU冷溃,增加磁盤钱磅,SSD (很有錢的基礎(chǔ)上面)

擴(kuò)展閱讀

  1. MySQL索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理
  2. B+/-Tree原理及mysql的索引分析
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市秃诵,隨后出現(xiàn)的幾起案子续搀,更是在濱河造成了極大的恐慌塞琼,老刑警劉巖菠净,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彪杉,居然都是意外死亡毅往,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門派近,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攀唯,“玉大人,你說我怎么就攤上這事渴丸『钹郑” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵谱轨,是天一觀的道長戒幔。 經(jīng)常有香客問我,道長土童,這世上最難降的妖魔是什么诗茎? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮献汗,結(jié)果婚禮上敢订,老公的妹妹穿的比我還像新娘王污。我一直安慰自己,他們只是感情好楚午,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布昭齐。 她就那樣靜靜地躺著,像睡著了一般矾柜。 火紅的嫁衣襯著肌膚如雪司浪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天把沼,我揣著相機(jī)與錄音啊易,去河邊找鬼。 笑死饮睬,一個胖子當(dāng)著我的面吹牛租谈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捆愁,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼割去,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昼丑?” 一聲冷哼從身側(cè)響起呻逆,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菩帝,沒想到半個月后咖城,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呼奢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年宜雀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片握础。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡辐董,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禀综,到底是詐尸還是另有隱情简烘,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布定枷,位于F島的核電站孤澎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏依鸥。R本人自食惡果不足惜亥至,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姐扮,春花似錦絮供、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惊搏,卻和暖如春贮乳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恬惯。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工向拆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酪耳。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓浓恳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碗暗。 傳聞我的和親對象是個殘疾皇子颈将,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容