Mysql學習——InnoDB與Myisam,mysqlinnodbmyisam

來源:互聯網
上載者:User

Mysql學習——InnoDB與Myisam,mysqlinnodbmyisam

MysqlInnoDB和Myisam兩種類型的儲存我們在Mysql建立表的時候可以在選項中進行制定,如所示:

下面來說說兩種儲存的區別吧:
1、兩種資料存放區的事務機制不同
InnoDB支援事務,Myisam不支援,但是在查詢方面Myisam的效能略勝一籌
2、鎖的機制不同
InnoDB為行級鎖,能更大程度的支援並行作業;Myisam是表級鎖
3、資料操作方面
修改、新增、刪除資料使用InnoDB效能更高,大資料量的查詢使用Myisam效能更高
查詢資料庫條數時InnoDB不儲存表中資料的條數,每次都重新計算;Myisam會儲存每個表的總條數,每次都查詢時不需重新計算
在查詢的時候InnoDB會比Myisam載入很多東西,比如:InnoDB會快取資料塊、Myisam只緩衝索引塊;InnoDB的定址是通過映射,Myisam是通過offset
4、儲存方面
InnoDB資源基於資料表空間資料檔案和記錄檔,大小隻限於作業系統檔案大小
Myisam以檔案的形式儲存在磁碟上:.frm儲存表定義;.MYD資料檔案;.MYI索引檔案
5、欄位自增方面
對於auto_increment類型的欄位,InnoDB中必須包含只有該欄位的索引,但是在Myisam中可以和其他欄位一起建立聯合索引。
6、Mysiam支援全文索引(全文索引可以在VARCHAR或者TEXT類型的列上建立),InnoDB不支援
7、delete表的時候InnoDB不會重建表,會一行一行的刪除

InnoDB表的行級鎖不是絕對的,例如:
update table set num=1 where name like “%a%”;
對於不確定的掃描範圍,InnoDB同樣會掃描全表。
說到這裡我考慮到資料庫的讀寫分離,讀庫可以考慮使用Myisam引擎儲存,寫庫使用InnoDB引擎儲存,對於資料庫的主從同步我們後續再討論。
提升InnoDB資料庫效能的方法:
針對InnoDB資料庫影響效能的主要是innodb_flush_log_at_trx_commit這個選項如果設定為1,那麼每次插入資料的時候都會自動認可,導致效能急劇下降,設定為0效能明顯提高。
Mysql的效能最佳化這裡不多說了,以後我會專門寫一篇關於Mysql最佳化的文章

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.