abstrakt:Mysql是著名的關(guān)系型數(shù)據(jù)庫。其下面的關(guān)系數(shù)據(jù)庫表是用于存儲和組織信息的數(shù)據(jù)結(jié)構(gòu),可以將表理解為由行和列組成的表格,類似于Excel的電子表格的形式。有的表簡單,有的表復(fù)雜,有的表根本不用來存儲任何長期的數(shù)據(jù),有的表讀取時非??欤遣迦霐?shù)據(jù)時去很差;而我們在實際開發(fā)過程中,就可能需要各種各樣的表,不同的表,就意味著存儲不同類型的數(shù)據(jù),數(shù)據(jù)的處理上也會存在著差異,那么。對于MySQL來說,它提供
Mysql是著名的關(guān)系型數(shù)據(jù)庫。其下面的關(guān)系數(shù)據(jù)庫表是用于存儲和組織信息的數(shù)據(jù)結(jié)構(gòu),可以將表理解為由行和列組成的表格,類似于Excel的電子表格的形式。有的表簡單,有的表復(fù)雜,有的表根本不用來存儲任何長期的數(shù)據(jù),有的表讀取時非??欤遣迦霐?shù)據(jù)時去很差;而我們在實際開發(fā)過程中,就可能需要各種各樣的表,不同的表,就意味著存儲不同類型的數(shù)據(jù),數(shù)據(jù)的處理上也會存在著差異,那么。對于MySQL來說,它提供了很多種類型的存儲引擎,我們可以根據(jù)對數(shù)據(jù)處理的需求,選擇不同的存儲引擎,從而最大限度的利用MySQL強(qiáng)大的功能。
MySQL有很多的數(shù)據(jù)庫引擎,單一般也就用MyISAM和InnoDB?,F(xiàn)在就來分析下MySQL最常用的兩種存儲引擎 innodb和Myisam的差別,以便大家能夠在使用的時候清楚知道應(yīng)使用哪種!
1. 事務(wù)處理(一個事務(wù)是一個連續(xù)的一組數(shù)據(jù)庫操作):
innodb 支持事務(wù)功能,myisam 不支持。
Myisam 的執(zhí)行速度更快,性能更好。
2. 增刪改查:
如果執(zhí)行大量的SELECT,MyISAM是更好的選擇,MyISAM會比Innodb 的查詢速度快。
InnoDB:如果你的數(shù)據(jù)執(zhí)行大量的INSERT或UPDATE,出于性能方面的考慮,應(yīng)該使用InnoDB表。
3. 鎖機(jī)制不同:
InnoDB 為行級鎖,myisam 為表級鎖。
注意:當(dāng)數(shù)據(jù)庫無法確定,所找的行時,也會變?yōu)殒i定整個表。
4. 查詢表的行數(shù)不同:
MyISAM:SELECT count(*) from table,MyISAM只要簡單的讀出保存好的行數(shù),注意的是,當(dāng)count(*)語句包含 where條件時,兩種表的操作是一樣的
InnoDB : InnoDB 中不保存表的具體行數(shù),也就是說,執(zhí)行SELECT count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行
5. 物理結(jié)構(gòu)不同
MyISAM :每個MyISAM在磁盤上存儲成三個文件。第一個文件的名字以表的名字開始,擴(kuò)展名指出文件類型。
文件存儲表定義.frm
數(shù)據(jù)文件的擴(kuò)展名為.MYD (MYData)。
索引文件的擴(kuò)展名是.MYI (MYIndex)
InnoDB:基于磁盤的資源是InnoDB表空間數(shù)據(jù)文件和它的日志文件,InnoDB 表的大小只受限于操作系統(tǒng)文件的大小,一般為 2GB。
6、使用場景不同
MyISAM是默認(rèn)使用的。但由于MyISAM不支持外鍵的約束,而且MyISAM會在添加或者更新數(shù)據(jù)的時候?qū)⒄麄€表鎖住,所以使用MyISAM更多的是你在建立一個非常簡單的數(shù)據(jù)庫或者只是實驗性的!
如果要保證數(shù)據(jù)完整,還想避免以后擴(kuò)展性能上不會有很大的問題,那就用InnoDB!