最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫三種常用存儲(chǔ)引擎特性對(duì)比

 更新時(shí)間:2016年01月06日 11:33:04   投稿:hebedich  
MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲(chǔ)在文件(或內(nèi)存)中,這些技術(shù)中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制,索引技巧,鎖定水平并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術(shù)及配套的相關(guān)功能稱為存儲(chǔ)引擎。

MySQL 的存儲(chǔ)引擎可能是所有關(guān)系型數(shù)據(jù)庫產(chǎn)品中最具有特色的了,不僅可以同時(shí)使用多種存儲(chǔ)引擎,而且每種存儲(chǔ)引擎和MySQL之間使用插件方式這種非常松的耦合關(guān)系。

由于各存儲(chǔ)引擎功能特性差異較大,這篇文章主要是介紹如何來選擇合適的存儲(chǔ)引擎來應(yīng)對(duì)不同的業(yè)務(wù)場景。

MyISAM

特性
不支持事務(wù):MyISAM存儲(chǔ)引擎不支持事務(wù),所以對(duì)事務(wù)有要求的業(yè)務(wù)場景不能使用
表級(jí)鎖定:其鎖定機(jī)制是表級(jí)索引,這雖然可以讓鎖定的實(shí)現(xiàn)成本很小但是也同時(shí)大大降低了其并發(fā)性能
讀寫互相阻塞:不僅會(huì)在寫入的時(shí)候阻塞讀取,MyISAM還會(huì)在讀取的時(shí)候阻塞寫入,但讀本身并不會(huì)阻塞另外的讀
只會(huì)緩存索引:MyISAM可以通過key_buffer緩存以大大提高訪問性能減少磁盤IO,但是這個(gè)緩存區(qū)只會(huì)緩存索引,而不會(huì)緩存數(shù)據(jù)

適用場景
不需要事務(wù)支持(不支持)
并發(fā)相對(duì)較低(鎖定機(jī)制問題)
數(shù)據(jù)修改相對(duì)較少(阻塞問題)
以讀為主
數(shù)據(jù)一致性要求不是非常高

最佳實(shí)踐
盡量索引(緩存機(jī)制)
調(diào)整讀寫優(yōu)先級(jí),根據(jù)實(shí)際需求確保重要操作更優(yōu)先
啟用延遲插入改善大批量寫入性能
盡量順序操作讓insert數(shù)據(jù)都寫入到尾部,減少阻塞
分解大的操作,降低單個(gè)操作的阻塞時(shí)間
降低并發(fā)數(shù),某些高并發(fā)場景通過應(yīng)用來進(jìn)行排隊(duì)機(jī)制
對(duì)于相對(duì)靜態(tài)的數(shù)據(jù),充分利用Query Cache可以極大的提高訪問效率
MyISAM的Count只有在全表掃描的時(shí)候特別高效,帶有其他條件的count都需要進(jìn)行實(shí)際的數(shù)據(jù)訪問

InnoDB

特性
具有較好的事務(wù)支持:支持4個(gè)事務(wù)隔離級(jí)別,支持多版本讀
行級(jí)鎖定:通過索引實(shí)現(xiàn),全表掃描仍然會(huì)是表鎖,注意間隙鎖的影響
讀寫阻塞與事務(wù)隔離級(jí)別相關(guān)
具有非常高效的緩存特性:能緩存索引,也能緩存數(shù)據(jù)
整個(gè)表和主鍵以Cluster方式存儲(chǔ),組成一顆平衡樹
所有Secondary Index都會(huì)保存主鍵信息

適用場景
需要事務(wù)支持(具有較好的事務(wù)特性)
行級(jí)鎖定對(duì)高并發(fā)有很好的適應(yīng)能力,但需要確保查詢是通過索引完成
數(shù)據(jù)更新較為頻繁的場景
數(shù)據(jù)一致性要求較高
硬件設(shè)備內(nèi)存較大,可以利用InnoDB較好的緩存能力來提高內(nèi)存利用率,盡可能減少磁盤 IO

最佳實(shí)踐
主鍵盡可能小,避免給Secondary index帶來過大的空間負(fù)擔(dān)
避免全表掃描,因?yàn)闀?huì)使用表鎖
盡可能緩存所有的索引和數(shù)據(jù),提高響應(yīng)速度
在大批量小插入的時(shí)候,盡量自己控制事務(wù)而不要使用autocommit自動(dòng)提交
合理設(shè)置innodb_flush_log_at_trx_commit參數(shù)值,不要過度追求安全性
避免主鍵更新,因?yàn)檫@會(huì)帶來大量的數(shù)據(jù)移動(dòng)

NDBCluster

特性
分布式:分布式存儲(chǔ)引擎,可以由多個(gè)NDBCluster存儲(chǔ)引擎組成集群分別存放整體數(shù)據(jù)的一部分
支持事務(wù):和Innodb一樣,支持事務(wù)
可與mysqld不在一臺(tái)主機(jī):可以和mysqld分開存在于獨(dú)立的主機(jī)上,然后通過網(wǎng)絡(luò)和mysqld通信交互
內(nèi)存需求量巨大:新版本索引以及被索引的數(shù)據(jù)必須存放在內(nèi)存中,老版本所有數(shù)據(jù)和索引必須存在與內(nèi)存中

適用場景
具有非常高的并發(fā)需求
對(duì)單個(gè)請(qǐng)求的響應(yīng)并不是非常的critical
查詢簡單,過濾條件較為固定,每次請(qǐng)求數(shù)據(jù)量較少,又不希望自己進(jìn)行水平Sharding

最佳實(shí)踐
盡可能讓查詢簡單,避免數(shù)據(jù)的跨節(jié)點(diǎn)傳輸
盡可能滿足SQL節(jié)點(diǎn)的計(jì)算性能,大一點(diǎn)的集群SQL節(jié)點(diǎn)會(huì)明顯多余Data節(jié)點(diǎn)
在各節(jié)點(diǎn)之間盡可能使用萬兆網(wǎng)絡(luò)環(huán)境互聯(lián),以減少數(shù)據(jù)在網(wǎng)絡(luò)層傳輸過程中的延時(shí)

注:以上三個(gè)存儲(chǔ)引擎是目前相對(duì)主流的存儲(chǔ)引擎,還有其他類似如:Memory,Merge,CSV,Archive等存儲(chǔ)引擎的使用場景都相對(duì)較少,這里就不一一分析了。

相關(guān)文章

  • CentOS7.3下mysql 8.0.13安裝配置方法圖文教程

    CentOS7.3下mysql 8.0.13安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了CentOS7.3下mysql 8.0.13安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • MySQL不推薦使用uuid或者雪花id作為主鍵的原因分析

    MySQL不推薦使用uuid或者雪花id作為主鍵的原因分析

    在數(shù)據(jù)庫設(shè)計(jì)中,選擇適當(dāng)?shù)闹麈I類型對(duì)于數(shù)據(jù)的存儲(chǔ)和查詢效率至關(guān)重要,在MySQL中,有些開發(fā)者傾向于使用UUID或者雪花ID作為主鍵,以確保數(shù)據(jù)的唯一性,本文將探討在MySQL中不推薦使用UUID或者雪花ID作為主鍵的原因,并與其他主鍵類型進(jìn)行差異化對(duì)比
    2023-11-11
  • 淺談mysql密碼遺忘和登陸報(bào)錯(cuò)的問題

    淺談mysql密碼遺忘和登陸報(bào)錯(cuò)的問題

    下面小編就為大家?guī)硪黄獪\談mysql密碼遺忘和登陸報(bào)錯(cuò)的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • MYSQL使用.frm恢復(fù)數(shù)據(jù)表結(jié)構(gòu)的實(shí)現(xiàn)方法

    MYSQL使用.frm恢復(fù)數(shù)據(jù)表結(jié)構(gòu)的實(shí)現(xiàn)方法

    在這里我們探討使用.frm文件恢復(fù)數(shù)據(jù)表機(jī)構(gòu)(當(dāng)然如果你以前備份過數(shù)據(jù)表,你可以使用調(diào)用備份的數(shù)據(jù)表)
    2010-02-02
  • MySQL中dd::columns表結(jié)構(gòu)轉(zhuǎn)table過程及應(yīng)用詳解

    MySQL中dd::columns表結(jié)構(gòu)轉(zhuǎn)table過程及應(yīng)用詳解

    MySQL的dd表是用來存放表結(jié)構(gòu)和各種建表信息的,客戶端建的表都存在mysql.table和mysql.columns表里,還有一個(gè)表mysql.column_type_elements比較特殊,用來存放SET和ENUM類型的字段集合值信息,對(duì)mysql dd::columns表結(jié)構(gòu)相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-09-09
  • MariaDB(MySQL)創(chuàng)建、刪除、選擇及數(shù)據(jù)類型使用詳解

    MariaDB(MySQL)創(chuàng)建、刪除、選擇及數(shù)據(jù)類型使用詳解

    這篇文章主要介紹了MariaDB(MySQL)創(chuàng)建、刪除、選擇及數(shù)據(jù)類型使用詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    MySQL入門(三) 數(shù)據(jù)庫表的查詢操作【重要】

    本節(jié)比較重要,對(duì)數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢操作,其中可能大家不熟悉的就對(duì)于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢。 通過本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢是怎么實(shí)現(xiàn)的,,需要的朋友可以參考下
    2018-07-07
  • 六條比較有用的MySQL數(shù)據(jù)庫操作的SQL語句小結(jié)

    六條比較有用的MySQL數(shù)據(jù)庫操作的SQL語句小結(jié)

    本文我們主要介紹了MySQL數(shù)據(jù)庫中的六條比較有用的SQL語句,對(duì)于初學(xué)者來說,可以直接套用下面的格式即可完成相應(yīng)的功能,希望本次的介紹能夠?qū)δ兴鶐椭?/div> 2011-08-08
  • MySQL禁用InnoDB引擎的方法

    MySQL禁用InnoDB引擎的方法

    這篇文章主要介紹了MySQL禁用InnoDB引擎的方法,針對(duì)的Mysql版本是5.5和5.6,使用了兩種不同的配置文件,需要的朋友可以參考下
    2014-05-05
  • MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析

    MySQL實(shí)現(xiàn)導(dǎo)出excel的方法分析

    這篇文章主要介紹了MySQL實(shí)現(xiàn)導(dǎo)出excel的方法,結(jié)合實(shí)例形式分析了基于php、js等方法實(shí)現(xiàn)mysql導(dǎo)出Excel的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03

最新評(píng)論

泰州市| 安远县| 海安县| 建德市| 东光县| 宿州市| 林州市| 简阳市| 龙陵县| 霞浦县| 云和县| 犍为县| 水城县| 牟定县| 西安市| 大足县| 湖北省| 连云港市| 高邮市| 庆安县| 临猗县| 麦盖提县| 武邑县| 江华| 玛纳斯县| 南澳县| 英德市| 依安县| 麦盖提县| 苗栗市| 永福县| 贵港市| 宜兰市| 越西县| 闽侯县| 藁城市| 余干县| 宁城县| 祁阳县| 高雄市| 安溪县|