mysql儲存引擎-innodb和myisam的詳細區別介紹

來源:互聯網
上載者:User

標籤:innodb   資料庫   myisam   儲存引擎   

    現網,使用mysql資料庫,訪問量單台機器可以達到1w/s,使用了好久,打算對mysql的一些知識做總結。先從最基本的儲存引擎入手。

    我們目前現網使用的儲存引擎是: innodb。

  

 一. 資料存放區上的區別:

    myisam的資料,在磁碟上,存於三個檔案,分別為資料檔案:.myd, 索引檔案:.myi,結構檔案:.frm;

    innodb的資料,則受限於作業系統檔案的大小,一般為2G。

    

    具體影響:

    myisam資料庫,索引和資料是分開儲存的,索引是有壓縮的,所以記憶體使用量率比較高。由於檔案存在磁碟,所以,如果對錶資料誤操作,比如全表update,可以提取之前備份的對應資料檔案,dump成sql再導回資料庫,補充binlog,就可以了,比innodb效率高。

    innodb使用的是叢集索引,資料和索引,都會存在記憶體中,而myisam則只是把索引檔案存在記憶體中。根據索引查詢資料時,innodb只要一次查詢就可以得到相應的資料。而myisam,由於索引和資料是儲存在不同的地方,所以需要兩次查詢;

    myisam相比innodb,索引會儲存在不同的資料區段,所以更易產生磁碟片段。

    

    2. 交易處理方面

    innodb支援交易處理,myisam不支援事務。

    如果資料有進行事務方面的操作,一定要先看看錶的儲存引擎。

  

    3.select,update,insert,delete

    myisam適合執行大量的select操作。

    innodb 對 update和insert操作更適合,delete操作是一行行的刪除,而不會重建立立表。

 

    4.auto_increment的操作

    myisam:可以和其它索引結合起來,進行聯合索引;

    innodb:執行auto_increment的計算機,是載入進記憶體進行計算的,必須包含這一列的索引;


    5.表的具體行數

    innodb沒有儲存具體行數,myisam有儲存具體的行數,但是如果有where條件限制 select count(*)時,則兩種表的表現形式是一樣的。

    如果平時在操作的時候,經常需要查整個表的行數,那使用myisam,效能會比較好些。如果需要用到條件判斷,那使用innodb會相對更好些,畢竟記錄行數,也需要額外的操作的。

  

    6.鎖

    myisam 只提供表鎖, innodb還提供行鎖,但是,如果在執行sql時,沒法確定要掃描的範圍,innodb同樣會提供表鎖。

    表鎖:同時鎖住整個表,可以讀,但是不能寫;

    表鎖特性:開銷小,操作快,鎖定粒度大,發生鎖衝突的機率大,並發度低;

    行鎖:鎖住一行,該行可以讀,但是不能寫;

    行鎖特性:開銷大,操作慢,鎖定粒度小,發生鎖衝突的機率小,並發度高;

    innodb的行鎖,是通過給索引項目加鎖實現的,只有通過索引檢索資料,行級鎖才生效,否則使用表鎖;   

 

    總結如下:

    適用myisam的情境:

    1. 系統讀多寫少;

    2. 不需要事務支援;

    3. 對記憶體使用量率有要求,innodb的叢集索引,消耗記憶體非常大,記憶體使用量率高的情況下,磁碟IO產生的頻率會比myisam高;

    4. 經常需要匯出資料給別的機器;


    適用innodb情境:

    1. 系統update操作比較多,公司目前的遊戲部門,絕大多數都是採用innodb;

    2. 需要事務支援; 

    3. 對穩定性要求更高,由於myisam是採用多個檔案儲存體,容易出現問題;

    4. 備份一致性要求高;

 

    個人傾向於使用innodb,因為oracle很早就收購了innodb,後面又收購了mysql,所以,innodb的特性肯定會越來越完善的。

本文出自 “思考沉澱” 部落格,請務必保留此出處http://joezhengjinhong.blog.51cto.com/7791846/1582603

mysql儲存引擎-innodb和myisam的詳細區別介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.