- Innodb 與 Myisam 引擎的區別與應用場景
- 兩者區別
- Innodb 支援事務,Myisam 不支援
- Innodb 是行鎖,Myisam 是表鎖
- Innodb 是聚簇索引,Myisam 是非聚簇索引
- Innodb 可以使用外來鍵索引,Myisam 不行
- Myisam 可以使用全文索引,Mysql 5.6 以後 InnoDB 才能使用
- Myisam 用一個變數儲存了整個表的行數,Innodb 沒有,當 select count(*) from table 時 Myisam 會佷快速因為只需要讀一個變數,而 Innodb 需要全表掃描
- 應用場景
- 如果需要使用事務請使用 Innodb
- 讀操作比較多建議使用 Myisam ,大併發寫比較多建議使用 Innodb
- 兩者區別
-
什麼是聚簇索引,什麼是非聚簇索引
-
聚簇索引
- 一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序
- 聚簇索引的葉節點就是資料節點
- 非聚簇索引
- 一種索引,該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同
- 非聚簇索引的葉節點仍然是索引節點,只不過有一個指標指向對應的資料塊
-
- 組合索引和多個單列索引的區別
- 組合索引是一種索引,且遵循最右原則;單列索引每一個都是索引,但查詢中使用多個單列索引,系統也只會使用約束性最高的索引
- 因為 Mysql 一次查詢只能使用1個索引,所以要合理的使用組合索引,而不是單列索引
- 因此 explain 來查詢 sql 語句效能時,key 欄位無論如何都只會存在一個被使用的索引