1. 程式人生 > >mysql優化思路(儲存引擎)

mysql優化思路(儲存引擎)

之前寫的專案裡邊為了保證資料安全 不管什麼表用的都是innodb。當初也不理解,大家都這麼定了。但是當面對大資料查詢時候 這個就很要命了。innodb不同於myisam的地方是索引和資料是結合在一起的,導致了每次二叉樹分裂,都伴隨著資料的遷移。這樣資料少的情況下是看不出來的。(mysql 是索引和資料分開,先從找出索引,然後根據索引去找資料檔案)。但是資料量龐大的時候。效率就不是一個數量級別的。

例如一個表 有個複合索引。主鍵和一個普通的欄位。當根據主鍵id或者是根據兩個欄位共同查詢的效率上,myisam是一樣快的,但是採用innode只採用主鍵查詢跟採用兩個欄位查詢 效率慢了27倍。

_____________________________

後發先這樣說也不是很準確 當資料表中有幾個大欄位的時候才會導致這樣的差異,這幾個大欄位不一定是建立索引。在單用id查詢的時候 需要從碎裂的資料塊中跳躍查詢,當用複合索引的時候 就避免了這種情況。

但是當沒有這幾個大欄位的時候,兩者速度相差不大

這裡再剖析下innodb,主鍵索引和複合索引的區別,主鍵索引下邊是跟資料塊的,複合索引就是單獨形成的索引。通過複合索引直接定位到資料塊 這點跟myisam有點類似