標籤:php mysql 資料庫 儲存引擎 innodb
首先要明白,在MySQL資料庫忠中的儲存引擎是基於表的,而不是基於資料庫的。
講述兩者區別:
InnoDB 儲存引擎,主要面向 OLTP(Online Transaction Processing,線上交易處理)方面的應用,是第一個完整支援 ACID 事務的儲存引擎(BDB 第一個支援事務的儲存引擎,已經停止開發)。
特點:
行鎖設計、支援外鍵;
支援類似於 Oracle 風格的一致性非鎖定讀(預設情況下讀取操作不會產生鎖);
InnoDB 將資料放在一個邏輯的資料表空間中,由 InnoDB 自身進行管理。從MySQL4.1 版本開始,可以將每個 InnoDB 儲存引擎的表單獨存放到一個獨立的ibd 檔案中;
InnoDB 通過使用 MVCC(多版本並發控制:讀不會阻塞寫,寫也不會阻塞讀)來獲得高並發性,並且實現了 SQL 標準的 4 種隔離等級(預設為 REPEATABLE 層級);
InnoDB 還提供了插入緩衝(insert buffer)、二次寫(double write)、自適應雜湊索引(adaptive hash index)、預讀(read ahead)等高效能和高可用的功能;
InnoDB 採用了聚集(clustered)的方式來儲存表中的資料,每張標的儲存都按主鍵的順序存放(如果沒有顯式的在建表時指定主鍵,InnoDB 會為每一行產生一個 6 位元組的 ROWID,並以此作為主鍵);
InnoDB 表會有三個隱藏欄位:除了上面提到了 6 位元組的 DB_ROW_ID 外,還有6 位元組的B_TX_ID(事務 ID)和 7 位元組的 DB_ROLL_PTR(指向對應復原段的地址)。這個可以通過 innodb monitor 看到;
MyISAM 儲存引擎是 MySQL 官方提供的儲存引擎,主要面向OLAP(Online Analytical Processing,線上分析處理)方面的應用。
特點:
不支援事務,支援表所和全文索引。操作速度快;
MyISAM 儲存引擎表由 MYD 和 MYI 組成,MYD 用來存放資料檔案,MYI 用來存放索引檔案。
MySQL 資料庫只緩衝其索引檔案,資料檔案的緩衝交給作業系統本身來完成;
MySQL5.0 版本開始,MyISAM 預設支援 256T 的單表資料;
最後總結一下:
1、InnoDB支援事物,而MyISAM不支援事物;
2、InnoDB支援行級鎖,而MyISAM支援表級鎖;
3、InnoDB支援MVCC, 而MyISAM不支援;
4、InnoDB支援外鍵,而MyISAM不支援;
5、InnoDB不支援全文索引,而MyISAM支援。
本文出自 “你好我是森林” 部落格,請務必保留此出處http://chensenlin.blog.51cto.com/10559465/1873229
MySQL 資料庫中MyISAM 和 InnoDB 的區別