MySQL 資料庫中MyISAM 和 InnoDB 的區別

來源:互聯網
上載者:User

標籤: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 的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.