天長,地久。天地之所以能長且久者,以其不自生也,故能長生。是以圣人后其身而身先,外其身而身存,非以其無私邪?故能成其私?!献?/strong>
這里簡單談?wù)剶?shù)據(jù)庫連接引擎那點(diǎn)事兒
在數(shù)據(jù)庫實(shí)際操作過程中,我們很少涉及到數(shù)據(jù)庫引擎對象的事情,一般情況在創(chuàng)建數(shù)據(jù)庫的時(shí)候都使用默認(rèn)的InnoDB數(shù)據(jù)庫引擎,那么到底什么是數(shù)據(jù)庫引擎,有什么樣的數(shù)據(jù)庫引擎,在實(shí)際使用的過程中都有什么主意事項(xiàng),為什么InnoDB作為默認(rèn)的數(shù)據(jù)庫引擎,都是我們需要特別注意但是不需要太多操作的問題!
1. 什么是數(shù)據(jù)庫引擎
數(shù)據(jù)庫引擎定義了數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)特點(diǎn),主要通過指定的數(shù)據(jù)庫引擎對象來限制數(shù)據(jù)庫操作數(shù)據(jù)不同方式的效率、鎖和事務(wù)的支持、數(shù)據(jù)全文檢索的支持、數(shù)據(jù)集的緩存操作等等特性。
2. 常見的數(shù)據(jù)庫引擎
比較常見的數(shù)據(jù)庫引擎對象主要有兩種,一種是常見的InnoDB,另一種是很多人經(jīng)常提到但是很少用到的MyIASM。
兩種數(shù)據(jù)庫引擎都是通過B+樹實(shí)現(xiàn)了數(shù)據(jù)庫中最重要的數(shù)據(jù)索引
3. 兩種常見數(shù)據(jù)庫引擎的區(qū)別和區(qū)分
3.1. INNODB引擎
InnoDB使用B+樹完成數(shù)據(jù)庫索引的實(shí)現(xiàn),但是在數(shù)據(jù)存儲(chǔ)時(shí)數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的是實(shí)際數(shù)據(jù),被稱為聚集索引的東東,不支持全文檢索,啟動(dòng)也是比較慢的。
InnoDB引擎支持ACID事務(wù)的支持,提供了行級(jí)鎖和外鍵約束,設(shè)計(jì)目標(biāo)是處理大容量數(shù)據(jù)庫系統(tǒng),處理過程中會(huì)在內(nèi)存中建立數(shù)據(jù)庫緩沖區(qū)用于緩存數(shù)據(jù)和索引數(shù)據(jù)。但是如果進(jìn)行select count(*) from <table_name>時(shí),會(huì)進(jìn)行全表掃描,不會(huì)緩存掃描結(jié)果;同時(shí)在高并發(fā)的情況下,由于InnoDB引擎支持的鎖的粒度較細(xì),不會(huì)在寫操作時(shí)全表鎖定,有利于高并發(fā)下性能的提升。
3.2. MYIASM引擎
MyIASM使用B+樹完成數(shù)據(jù)庫索引的實(shí)現(xiàn),但是在數(shù)據(jù)存儲(chǔ)時(shí)數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的是實(shí)際數(shù)據(jù)的地址,被稱為非聚集索引,支持全文檢索
MyIASM不支持事務(wù)操作,不支持行級(jí)鎖和外鍵的約束;在進(jìn)行select count(*) from <table>操作時(shí)會(huì)緩存數(shù)據(jù),不會(huì)進(jìn)行全表掃描。
3.3. 使用區(qū)分
如果我們的數(shù)據(jù)庫存儲(chǔ)大量數(shù)據(jù),需要支持事務(wù)操作和外鍵約束,同時(shí)在出現(xiàn)故障需要快速恢復(fù)時(shí),使用InnoDB引擎;
如果我們的數(shù)據(jù)庫中需要大量而頻繁的的insert語句操作時(shí),可以選擇MyIASM數(shù)據(jù)庫引擎