mysql資料庫引擎——MyISAM,InnoDB

來源:互聯網
上載者:User

標籤:

作為一個java web開發人員,對於mysql資料庫掌握到具體比較這兩類引擎的差異也蠻拼的,下面就介紹一下我在工作中積累的對這兩類引擎的理解。

MyISAM:

    如果不更改mysql設定檔(my.ini)的話,MyISAM是MySQL的預設儲存引擎, 每張MyISAM表對應三個本機存放區檔案:frm 檔案存放表格定義;資料檔案 MYD (MYData);索引檔案 MYI (MYIndex)。

  MyISAM類型的表更多強調的是效能,它比InnoDB速度快,但不支援事務,也不支援熱備份,但我們可以通過直接拷貝它的三個檔案(frm,MYD,MYI)到其他庫就能實現備件,十分方便。

InnoDB:

    InnoDB是事務型引擎,支援復原、崩潰恢複能力、多版本並發控制、ACID事務。InnoDB對應的本機存放區檔案:frm、ibd(索引與資料),在MySQL的Data目錄下有一個 ibdata1 檔案,其中記錄了本地

   MySQL伺服器各個庫中所有InnoDB表的被操作記錄,比較大,沒有這個檔案InnoDB表無法正常被查看,而InnoDB表的備件基本上只能用熱備份,除非拷貝整個Data目錄,否則還原起來都十分困難,MySQL

   新版本也在不斷地完善熱備功能,不過其高效的、支援動態熱備的軟體都要付費。 我認為對於那些經常要執行update、insert操作,同時資料量比較大、結構比較複雜、操作需謹慎的表還是選擇InnoDB。

  

  一般情況下,我都是用的MyISAM引擎,除非一些我覺得有必要在修理過程中用到rollback的表我才會用到InnoDB,不過對於一項目中的一些關於使用者資訊、產品資訊的表還是要用InnoDB,畢竟項目在維護的

時候各個資料表都涉及一個增量備份的問題。另外,最近發現新版的MySQL在對字元數較多的欄位建索引的時候,InnoDB支援的更好,之前是對單一欄位索引的長度最大為 767 位元組(資料實際所佔長),使用 UTF-8

字元集,每一個字元使用 3 位元組來儲存,在 TEXT 或者 VARCHAR 類型的欄位上建立一個超過 255 字元數的首碼索引時就會遇到問題; 而MyISAM索引鍵最大長度總和不能超過1000,而且不是實際資料長度的總和,而是索引鍵欄位定義長度的總和。

  再就是,在具體給欄位定長度、定類型的時候,還是應該去瞭解一下各種編碼格式對中英文字元儲存各自需要花費的空間。

  很多人說做背景到最後比的都是sql功底,想想確實也是,業務代碼邏輯不會太複雜,實際開發中大部分代碼都是在調用各種介面,然後稍微複雜一點的就是工程的各種配置、發布,後期的話還有對系統的各種

效能測試。web應用,核心在於資料,寫好sql語句,做好最佳化是相當重要的。資料庫也能為自己解決很多生活中的小問題,比如對excel文檔中的大批量資料進行資料提煉,更改等等。

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.