時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(2)
InnoDB
InnoDB支持事物處理,它處理許多短期的事物,這些事物常常是成功執(zhí)行而不是回滾的。InnoDB是MySQL最受歡迎的存儲(chǔ)引擎了。常見的非事物引擎需求,如性能和自動(dòng)回復(fù),它也完全具備。
InnoDB在一些列的文件中存儲(chǔ)數(shù)據(jù),被稱為表空間(tablespace)。表空間對(duì)于用戶來(lái)說(shuō)是黑盒,InnoDB內(nèi)部負(fù)責(zé)處理。在MySQL4.1以及更新的版本中,InnoDB可以存儲(chǔ)數(shù)據(jù)以及索引到獨(dú)立的文件中。InnoDB也使用磁盤分區(qū)來(lái)創(chuàng)建表空間。以后會(huì)詳細(xì)講到表空間。
InnoDB使用MVCC來(lái)實(shí)現(xiàn)高并發(fā)處理。以及它實(shí)現(xiàn)了SQL標(biāo)準(zhǔn)的4個(gè)隔離級(jí)別。默認(rèn)的隔離級(jí)別是不可重復(fù)讀,以及使用next-key locking策略避免了幻讀的問(wèn)題:InnoDB在索引結(jié)構(gòu)中鎖定了而不是僅僅鎖定了間隔來(lái)避免插入數(shù)據(jù)引起的幻讀而不是僅僅鎖定你所操作的行。
InnoDB的表使用了聚集索引(clustered index)。在以后章節(jié)詳細(xì)說(shuō)明。InnoDB的索引結(jié)構(gòu)和其他的引擎有很大的不同。結(jié)果就是查找主鍵是非常迅速的。然而次要的索引包含了主鍵。因此如果主鍵太大。其他的索引也會(huì)很大。如果有表中有太多索引,那么主鍵要力求最小。InnoDB是不能壓縮索引的。
目前為止,InnoDB還不能建立索引的排序,但是MyISAM引擎卻可以。因此InnoDB讀取數(shù)據(jù)和創(chuàng)建索引都要比MyISAM慢。任意修改InnoDB表結(jié)構(gòu)的操作,都會(huì)重新創(chuàng)建整張表,當(dāng)然包括了所有的索引。
InnoDB被設(shè)計(jì)出來(lái)的時(shí)候,大部分的服務(wù)器都是硬盤轉(zhuǎn)速慢,單CPU,限制的內(nèi)存。今天,多核,大內(nèi)存,轉(zhuǎn)速飛快的硬盤的服務(wù)器已經(jīng)不是很貴了。InnoDB有些可伸縮的問(wèn)題。開發(fā)人員正在解決問(wèn)題。但是目前為止,有許多問(wèn)題還是存在的。在InnoDB并發(fā)性調(diào)整那章中,會(huì)詳細(xì)的說(shuō)明讓InnoDB提高并發(fā)性。
除了并發(fā)性,InnoDB還有提供了外鍵約束的特性,這特性MySQL本身是不提供的。InnoDB也提供了快速用主鍵查詢的特性。
InnoDB有很多種內(nèi)部的優(yōu)化方法。從硬盤中提前預(yù)讀取預(yù)取的數(shù)據(jù),自適應(yīng)的hash索引也就是為了快速查找在內(nèi)存中自動(dòng)創(chuàng)建了hash索引,還有把insert緩存為了加速插入。以后的章節(jié)詳細(xì)說(shuō)明這些優(yōu)化。
InnoDB是挺復(fù)雜,強(qiáng)烈推薦查看官方文檔。
事物模型和鎖定http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-transaction-model
上面的教程讓你明白在使用InnoDB之前,應(yīng)該注意點(diǎn)什么。
關(guān)鍵詞標(biāo)簽:MySQL
相關(guān)閱讀
熱門文章 Xbox Game Pass 10款MySQL數(shù)據(jù)庫(kù)客戶端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié)
人氣排行 10款MySQL數(shù)據(jù)庫(kù)客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯(cuò)誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無(wú)法啟動(dòng)、無(wú)法停止各種解決方法總結(jié) 三種常用的MySQL建表語(yǔ)句