mysql 中InnoDB和MyISAM的區(qū)別分析小結(jié)
更新時(shí)間:2008年04月15日 21:31:37 作者:
InnoDB和MyISAM是在使用MySQL最常用的兩個(gè)表類型,各有優(yōu)缺點(diǎn),視具體應(yīng)用而定?;镜牟顒e為:MyISAM類型不支持事務(wù)處理等高級(jí)處理,而InnoDB類型支持。MyISAM類型的表強(qiáng)調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持已經(jīng)外部鍵等高級(jí)數(shù)據(jù)庫(kù)功能。
MyIASM是IASM表的新版本,有如下擴(kuò)展:
二進(jìn)制層次的可移植性。
NULL列索引。
對(duì)變長(zhǎng)行比ISAM表有更少的碎片。
支持大文件。
更好的索引壓縮。
更好的鍵嗎統(tǒng)計(jì)分布。
更好和更快的auto_increment處理。
以下是一些細(xì)節(jié)和具體實(shí)現(xiàn)的差別:
1.InnoDB不支持FULLTEXT類型的索引。
2.InnoDB 中不保存表的具體行數(shù),也就是說,執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語(yǔ)句包含 where條件時(shí),兩種表的操作是一樣的。
3.對(duì)于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
4.DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除。
5.LOAD TABLE FROM MASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。
另外,InnoDB表的行鎖也不是絕對(duì)的,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表,例如update table set num=1 where name like “%aaa%”
任何一種表都不是萬(wàn)能的,只用恰當(dāng)?shù)尼槍?duì)業(yè)務(wù)類型來選擇合適的表類型,才能最大的發(fā)揮MySQL的性能優(yōu)勢(shì)。
二進(jìn)制層次的可移植性。
NULL列索引。
對(duì)變長(zhǎng)行比ISAM表有更少的碎片。
支持大文件。
更好的索引壓縮。
更好的鍵嗎統(tǒng)計(jì)分布。
更好和更快的auto_increment處理。
以下是一些細(xì)節(jié)和具體實(shí)現(xiàn)的差別:
1.InnoDB不支持FULLTEXT類型的索引。
2.InnoDB 中不保存表的具體行數(shù),也就是說,執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語(yǔ)句包含 where條件時(shí),兩種表的操作是一樣的。
3.對(duì)于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
4.DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除。
5.LOAD TABLE FROM MASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。
另外,InnoDB表的行鎖也不是絕對(duì)的,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表,例如update table set num=1 where name like “%aaa%”
任何一種表都不是萬(wàn)能的,只用恰當(dāng)?shù)尼槍?duì)業(yè)務(wù)類型來選擇合適的表類型,才能最大的發(fā)揮MySQL的性能優(yōu)勢(shì)。
您可能感興趣的文章:
- mysql更改引擎(InnoDB,MyISAM)的方法
- 可以改善mysql性能的InnoDB配置參數(shù)
- MySQL Innodb表導(dǎo)致死鎖日志情況分析與歸納
- MySQL不支持InnoDB的解決方法
- 關(guān)于mysql innodb count(*)速度慢的解決辦法
- mysql Innodb表空間卸載、遷移、裝載的使用方法
- Mysql5.5 InnoDB存儲(chǔ)引擎配置和優(yōu)化
- Mysql更改默認(rèn)引擎為Innodb的步驟方法
- MySQL存儲(chǔ)引擎 InnoDB與MyISAM的區(qū)別
- MySQL InnoDB row_id邊界溢出驗(yàn)證的方法步驟
相關(guān)文章
PHP iconv()函數(shù)字符編碼轉(zhuǎn)換的問題講解
今天小編就為大家分享一篇關(guān)于PHP iconv()函數(shù)字符編碼轉(zhuǎn)換的問題講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
PHP簡(jiǎn)單操作MongoDB的方法(安裝及增刪改查)
這篇文章主要介紹了PHP簡(jiǎn)單操作MongoDB的方法,簡(jiǎn)單分析了php安裝及操作MongoDB數(shù)據(jù)庫(kù)的方法,涉及PHP針對(duì)MongoDB數(shù)據(jù)庫(kù)基本的增刪改查等操作技巧,需要的朋友可以參考下2016-05-05
PHP安全技術(shù)之 實(shí)現(xiàn)php基本安全
php開發(fā)過程中,需要注意的一些安全小細(xì)節(jié),屏蔽錯(cuò)誤提示,多考慮下安全問題。2010-09-09
php上的memcache和memcached兩個(gè)pecl庫(kù)
一開始就在疑惑為什么會(huì)有兩個(gè)庫(kù),且在php.net官方都有文檔支持。2010-03-03
mac下Apache + MySql + PHP搭建網(wǎng)站開發(fā)環(huán)境
最近接了個(gè)小活,做一個(gè)使用PHP語(yǔ)言和MySql數(shù)據(jù)庫(kù)的動(dòng)態(tài)網(wǎng)站。之前做過類型的網(wǎng)站,是在windows系統(tǒng)下做的,開發(fā)環(huán)境使用的是 AppServ 的PHP開發(fā)套件?,F(xiàn)在有了我的大MAC,所以找了MAC系統(tǒng)下PHP環(huán)境的開發(fā)套件。2014-06-06

