mysql數據庫引擎——MyISAM,InnoDB

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

MyISAM:mysql

    若是不更改mysql配置文件(my.ini)的話,MyISAM是MySQL的默認存儲引擎, 每張MyISAM表對應三個本地存儲文件:frm 文件存放表格定義;數據文件 MYD (MYData);索引文件 MYI (MYIndex)。MyISAM類型的表更多強調的是性能,它比InnoDB速度快,但不支持事務,也不支持熱備份,但咱們能夠經過直接拷貝它的三個文件(frm,MYD,MYI)到其餘庫就能實現備件,十分方便。web

InnoDB:sql

    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文檔中的大批量數據進行數據提煉,更改等等。性能

相關文章
相關標籤/搜索