淺談選擇mysql存儲(chǔ)引擎的標(biāo)準(zhǔn)
主要存儲(chǔ)引擎的介紹
1、InnoDB存儲(chǔ)引擎
InnoDB是MySQL的默認(rèn)事務(wù)型引擎,它被設(shè)計(jì)用來處理大量的短期(short-lived)事務(wù)。除非有非常特別的原因需要使用其他的存儲(chǔ)引擎,否則應(yīng)該優(yōu)先考慮InnoDB引擎。
建議使用MySQL5.5及以后的版本,因?yàn)檫@個(gè)版本及以后的版本的InnoDB引擎性能更好。
MySQL4.1以后的版本中,InnoDB可以將每個(gè)表的數(shù)據(jù)和索引存放在單獨(dú)的文件中。這樣在復(fù)制備份崩潰恢復(fù)等操作中有明顯優(yōu)勢??梢酝ㄟ^在my.cnf中增加innodb_file_per_table來開啟這個(gè)功能。如下:
InnoDB采用MVCC來支持高并發(fā),并且實(shí)現(xiàn)了四個(gè)標(biāo)準(zhǔn)的隔離級別。其默認(rèn)級別是REPEATABLE READ(可重復(fù)讀),并且通過間隙鎖(next-key locking)策略防止幻讀的出現(xiàn)。(事務(wù)和事務(wù)隔離級別是另一個(gè)大題目,各自網(wǎng)補(bǔ)吧)。
InnoDB是基于聚簇索引建立的,聚簇索引對主鍵查詢有很高的性能。不過它的二級索引(secondary index,非主鍵索引)中必須包含主鍵列,所以如果主鍵列很大的話,其他的所有索引都會(huì)很大。因此表上的索引較多的話,主鍵應(yīng)當(dāng)盡可能的小。
InnoDB的存儲(chǔ)格式是平臺(tái)獨(dú)立的,可以將數(shù)據(jù)和索引文件從Intel平臺(tái)復(fù)制到Sun SPARC平臺(tái)或其他平臺(tái)。
InnoDB通過一些機(jī)制和工具支持真正的熱備份,MySQL的其他存儲(chǔ)引擎不支持熱備份。
2、MyISAM存儲(chǔ)引擎
MyISAM提供了大量的特性,包括全文索引、壓縮、空間函數(shù)(GIS)等,但MyISAM不支持事務(wù)和行級鎖,有一個(gè)毫無疑問的缺陷就是崩潰后無法安全恢復(fù)。
MyISAM會(huì)將表存儲(chǔ)在兩個(gè)文件在中:數(shù)據(jù)文件和索引文件,分別是.MYD和.MYI為擴(kuò)展名。
在MySQL5.0以前,只能處理4G的數(shù)據(jù),5.0中可以處理256T的數(shù)據(jù)。
在數(shù)據(jù)不再進(jìn)行修改操作時(shí),可以對MyISAM表進(jìn)行壓縮,壓縮后可以提高讀能力,原因是減少了磁盤I/O。
3、Archive引擎
Archive存儲(chǔ)引擎只支持INSERT和SELECT操作,在MySQL5.1之前不支持索引。
Archive表適合日志和數(shù)據(jù)采集類應(yīng)用。
Archive引擎支持行級鎖和專用的緩存區(qū),所以可以實(shí)現(xiàn)高并發(fā)的插入,但它不是一個(gè)事物型的引擎,而是一個(gè)針對高速插入和壓縮做了優(yōu)化的簡單引擎。
幾個(gè)常用存儲(chǔ)引擎的特點(diǎn)
下面我們重點(diǎn)介紹幾種常用的存儲(chǔ)引擎并對比各個(gè)存儲(chǔ)引擎之間的區(qū)別和推薦使用方式。
最常使用的2種存儲(chǔ)引擎:
Myisam是Mysql的默認(rèn)存儲(chǔ)引擎。當(dāng)create創(chuàng)建新表時(shí),未指定新表的存儲(chǔ)引擎時(shí),默認(rèn)使用Myisam。每個(gè)MyISAM在磁盤上存儲(chǔ)成三個(gè)文件。文件名都和表名相同,擴(kuò)展名分別是.frm(存儲(chǔ)表定義)、.MYD (MYData,存儲(chǔ)數(shù)據(jù))、.MYI (MYIndex,存儲(chǔ)索引)。數(shù)據(jù)文件和索引文件可以放置在不同的目錄,平均分布io,獲得更快的速度。
InnoDB存儲(chǔ)引擎提供了具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全。但是對比Myisam的存儲(chǔ)引擎,InnoDB寫的處理效率差一些并且會(huì)占用更多的磁盤空間以保留數(shù)據(jù)和索引。
如何選擇合適的存儲(chǔ)引擎
選擇標(biāo)準(zhǔn):根據(jù)應(yīng)用特點(diǎn)選擇合適的存儲(chǔ)引擎,對于復(fù)雜的應(yīng)用系統(tǒng)可以根據(jù)實(shí)際情況選擇多種存儲(chǔ)引擎進(jìn)行組合。
下面是常用存儲(chǔ)引擎的適用環(huán)境:
MyISAM:默認(rèn)的MySQL插件式存儲(chǔ)引擎,它是在Web、數(shù)據(jù)倉儲(chǔ)和其他應(yīng)用環(huán)境下最常使用的存儲(chǔ)引擎之一
InnoDB:用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括ACID事務(wù)支持。
Memory:將所有數(shù)據(jù)保存在RAM中,在需要快速查找引用和其他類似數(shù)據(jù)的環(huán)境下,可提供極快的訪問。
Merge:允許MySQL DBA或開發(fā)人員將一系列等同的MyISAM表以邏輯方式組合在一起,并作為1個(gè)對象引用它們。對于諸如數(shù)據(jù)倉儲(chǔ)等VLDB環(huán)境十分適合。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
order?by?+?limit分頁時(shí)數(shù)據(jù)重復(fù)問題及解決方法
這篇文章主要介紹了order?by?+?limit分頁時(shí)數(shù)據(jù)重復(fù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
MySQL如何利用存儲(chǔ)過程快速生成100萬條數(shù)據(jù)詳解
在MySQL數(shù)據(jù)庫中,如果要插入上百萬級的記錄,用普通的insertinto來操作非常不現(xiàn)實(shí),速度慢人力成本高,這篇文章主要給大家介紹了關(guān)于MySQL如何利用存儲(chǔ)過程快速生成100萬條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-08-08
mysql創(chuàng)建外鍵報(bào)錯(cuò)的原因及解決(can't?not?create?table)
這篇文章主要介紹了mysql創(chuàng)建外鍵報(bào)錯(cuò)的原因及解決方案(can't?not?create?table),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
windows 環(huán)境下 MySQL 8.0.13 免安裝版配置教程
這篇文章主要介紹了windows 環(huán)境下 MySQL 8.0.13 免安裝版配置教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-12-12
MySQL中導(dǎo)出用戶權(quán)限設(shè)置的腳本分享
這篇文章主要介紹了MySQL中導(dǎo)出用戶權(quán)限設(shè)置的腳本分享,本文通過導(dǎo)出mysql.user表中數(shù)據(jù)實(shí)現(xiàn)導(dǎo)出權(quán)限設(shè)置,需要的朋友可以參考下2014-10-10
mysql5.7.18安裝時(shí)提示無法找到入口問題的解決方法
這篇文章主要為大家詳細(xì)介紹了mysql5.7.18安裝時(shí)出現(xiàn)無法找到入口問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Mysql數(shù)據(jù)庫自增id、uuid與雪花id詳解
在mysql中設(shè)計(jì)表的時(shí)候,mysql官方推薦不要使用uuid或者不連續(xù)不重復(fù)的雪花id(long形且唯一),而是推薦連續(xù)自增的主鍵id,這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫自增id、uuid與雪花id的相關(guān)資料,需要的朋友可以參考下2023-02-02

