佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > MariaDB 新版本實(shí)力逆襲不僅僅是 MySQL 替代品

MariaDB 新版本實(shí)力逆襲不僅僅是 MySQL 替代品

熱門標(biāo)簽:呼叫中心市場需求 鐵路電話系統(tǒng) AI電銷 服務(wù)外包 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 Linux服務(wù)器 百度競價排名

MySQL分支——MariaDB

MariaDB是MySQL源代碼的一個分支,主要由開源社區(qū)在維護(hù),采用GPL授權(quán)許可。開發(fā)這個分支的原因之一是:甲骨文公司收購了MySQL后,有將MySQL閉源的潛在風(fēng)險,因此社區(qū)采用分支的方式來避開這個風(fēng)險。MariaDB是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB,XtraDB完全兼容InnoDB,創(chuàng)建一個InnoDB表內(nèi)部默認(rèn)會轉(zhuǎn)換成XtraDB。

Percona XtraDB 是 InnoDB 存儲引擎的增強(qiáng)版,用來更好地發(fā)揮最新的計(jì)算機(jī)硬件系統(tǒng)性能,同時還包含一些在高性能環(huán)境下的新特性。XtraDB 存儲引擎是完全的向下兼容,在 MariaDB 中,XtraDB 存儲引擎被標(biāo)識為"ENGINE=InnoDB",這與 InnoDB 是一樣的,所以可以直接用XtraDB 替換掉 InnoDB,而不會產(chǎn)生任何問題。XtraDB 在 InnoDB 的基礎(chǔ)上構(gòu)建,使 XtraDB 具有更多的特性,更多的參數(shù)指標(biāo)和更多的擴(kuò)展。從實(shí)踐的角度來看,XtraDB 在CPU多核的條件下更有效的使用內(nèi)存,并且性能更高。從 MariaDB 5.1 開始就默認(rèn)使用 XtraDB 存儲引擎。

MariaDB由MySQL的創(chuàng)始人Michael (Monty) Widenius主導(dǎo)開發(fā),他早前曾以10億美元的價格,將自己創(chuàng)建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購,MySQL的所有權(quán)也落入Oracle的手中。MariaDB名稱來自Michael (Monty) Widenius的女兒Maria的名字。

一、MariaDB 10.0和MySQL 5.6的不同之處

MySQL 5.6 的代碼庫的文件結(jié)構(gòu)已經(jīng)被改動了。比如單個代碼文件已經(jīng)被分成多個,又或者是某些代碼已經(jīng)被重新歸類到了不同的文件內(nèi)。所以要把MariaDB 去配合現(xiàn)在這個文件結(jié)構(gòu)一定是一個非常消耗時間的過程。

MairaDB 5.5 已經(jīng)有大量的代碼不同于MySQL 5.5 的版本,而且也有很多的新的特征被整合到MariaDB 5.5 中,而這些特征直到 5.6 版本才出現(xiàn)在MySQL中。所以在比較同樣功能的MySQL和MariaDB的版本,同時在完成設(shè)計(jì)和QA方面的審核后,一個很明顯的結(jié)論是MariaDB會是一個更好的產(chǎn)品。在大多數(shù)情況下,在選擇 MariaDB的時候,人們會更多地考慮到功能方面的偏好。

MariaDB不僅僅是MySQL的一個替代品。它的主要目的是創(chuàng)新和提高M(jìn)ySQL的技術(shù),MySQL5.6不是一個合適的創(chuàng)新基礎(chǔ)平臺,所以MariaDB團(tuán)隊(duì)就做了下面的事情:

引入了一些新功能(像Multi-source Replication多源復(fù)制,基于表的并行復(fù)制,Galera Cluster集群,Spider水平分片存儲引擎,TokuDB存儲引擎等),所以需要搞個新版本。

下個版本稱作“MariaDB5.6”是不準(zhǔn)確的,因?yàn)樗皇腔贛ySQL5.6的,取而代之,MariaDB團(tuán)隊(duì)決定版本號調(diào)為10.0。

MariaDB和Percona有什么不同呢?

Percona是僅僅針對InnoDB引擎上做了性能上的改善(稱為XtraDB),而MariaDB在集成了XtraDB存儲引擎之外,還集成了更多的存儲引擎,包括Aria、SphinxSE、TokuDB、Cassandra、CONNECT、SEQUENCE及Spider存儲引擎等,并且在服務(wù)器層上做了大量改進(jìn),增加了多源復(fù)制和基于表的并行復(fù)制等。

二、MariaDB和MySQL的兼容性

MariaDB跟MySQL在絕大多數(shù)方面是兼容的,對于前端應(yīng)用(比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby、MySQL C connector)來說,幾乎感覺不到任何不同。目前MariaDB是發(fā)展最快的MySQL分支版本,新版本的發(fā)布速度已經(jīng)超過了Oracle官方的MySQL版本。

注:MariaDB10.0/10.1的GTID復(fù)制跟MySQL5.6不兼容。

在Oracle控制下的MySQL開發(fā),有兩個主要問題:

MySQL核心開發(fā)團(tuán)隊(duì)是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻(xiàn),也沒辦法做到。

MySQL新版本的發(fā)布速度,在Oracle收購Sun之后大為減緩。

Michael (Monty) Widenius有一個PPT,用數(shù)據(jù)比較了收購之前和之后新版本的發(fā)布速度,并表示有很多bugfix和新的feature,都沒有及時加入到發(fā)布版本之中。

以上這兩個問題,導(dǎo)致了各個大公司,都開發(fā)了自己定制的MySQL版本,包括Yahoo!、Facebook、Google、阿里巴巴和淘寶網(wǎng)等。MySQL是開源社區(qū)的資產(chǎn),任何個人/組織都無權(quán)據(jù)為己有。為了更快速地發(fā)展MySQL,另外開分支是必須的。

三、MariaDB 10.0新增的功能

更多的存儲引擎

除了包含標(biāo)準(zhǔn)的MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE和MERGE等存儲引擎外,MariaDB的源代碼包和二進(jìn)制包還包含以下額外的存儲引擎:

Aria(增強(qiáng)版的MyISAM)
XtraDB(增強(qiáng)版的InnoDB)
FederatedX
OQGRAPH
SphinxSE[1]
IBMDB2I
TokuDB[2]
Cassandra
CONNECT
SEQUENCE
Spider[3]
PBXT

速度提升

在MariaDB5.3版本里,就已經(jīng)對子查詢進(jìn)行了優(yōu)化,并采用semi join半連接方式將SQL改寫為了表關(guān)聯(lián)join,從而提高了查詢速度。

在MariaDB5.3版本里,引入了Group commit for the binary log組提交技術(shù),簡單的說,多個并發(fā)提交的事務(wù)加入一個隊(duì)列里,對這個隊(duì)列里的事務(wù),利用一次I/O合并提交,從而解決了寫日志頻繁刷磁盤的問題。

在MariaDB10.0版本里,引入了基于表的多線程并行復(fù)制技術(shù),如果主庫上1秒內(nèi)有10個事務(wù),那么合并一個I/O提交一次,并在binlog里增加一個cid = XX 標(biāo)記,當(dāng)cid的值是一樣時,Slave就可以進(jìn)行并行復(fù)制,通過設(shè)置多個sql_thread線程實(shí)現(xiàn)。在MySQL5.5版本里是單進(jìn)程串行復(fù)制,通過sql_thread線程來恢復(fù)主庫推送過來的binlog,這樣會產(chǎn)生一個問題,主庫上大量的寫操作,從庫就有可能會出現(xiàn)延遲。在MySQL5.6是基于庫級別的并行復(fù)制,MySQL5.7是基于表級別的并行復(fù)制。

在MariaDB5.5版本里,引入了線程池thread pool技術(shù),線程池的連接復(fù)用,減少了建立連接的開銷,減少了CPU上下文切換,非常適合高并發(fā)php短連接應(yīng)用場景(例如使用開源電商平臺ECSHOP秒殺業(yè)務(wù)場景)。

在處理內(nèi)部的臨時表,MariaDB用Aria引擎代替了MyISAM引擎,這將使某些GROUP BY和DISTINCT請求速度更快,因?yàn)锳ria有比MyISAM更好的緩存機(jī)制。

擴(kuò)展和新功能

時間精確到微秒級別

提供了虛擬列(函數(shù)索引)

在MariaDB5.2版本里,就已經(jīng)提供了虛擬列(函數(shù)索引),但直到MySQL5.7版本才支持。

kill命令擴(kuò)展

在MariaDB5.3版本里,又對kill命令進(jìn)行了擴(kuò)展,可以指定某個user用戶,殺死所有查詢

修改表結(jié)構(gòu)可顯示執(zhí)行進(jìn)度

提供了動態(tài)列(可以存儲JSON格式)

在MariaDB5.3版本里,就已經(jīng)提供了動態(tài)列(可以存儲JSON格式),但直到MySQL5.7版本才支持。

提供了多源復(fù)制,但直到MySQL5.7版本才支持。

支持GTID同步復(fù)制。

創(chuàng)建了用戶支持創(chuàng)建角色role權(quán)限。

通過show processlist可以查看內(nèi)存占用。

執(zhí)行create or replace table 等于先執(zhí)行drop操作,再執(zhí)行create操作。

執(zhí)行delete from table returning命令可刪除前返回刪除的記錄。

慢查詢?nèi)罩緎low log里增加了explain執(zhí)行計(jì)劃。

四、總結(jié)

MariaDB是甲骨文MySQL的加強(qiáng)版本,因此已有的系統(tǒng)不需要任何修改就可以運(yùn)行,就像使用Percona Server一樣。

MariaDB社區(qū)版和企業(yè)版的源代碼都是開源的,并且所有功能都是免費(fèi)開放,不用擔(dān)心功能上有閹割,但甲骨文MySQL企業(yè)版延伸套件采取封閉源代碼且需要付費(fèi)。此外,MariaDB相比MySQL擁有更多的功能、更快、更穩(wěn)定、BUG修復(fù)更快。

您可能感興趣的文章:
  • Mysql的基礎(chǔ)使用之MariaDB安裝方法詳解
  • Linux下將數(shù)據(jù)庫從MySQL遷移到MariaDB的基礎(chǔ)操作教程
  • centos 7安裝mysql5.5和安裝 mariadb使用的命令
  • 淺談MySQL和mariadb區(qū)別
  • MySQL分支選擇參考:Percona還是MariaDB
  • MariaDB(Mysql分支)my.cnf配置文件中文注釋版
  • C#連接mariadb(MYSQL分支)代碼示例分享

標(biāo)簽:蘭州 湘潭 仙桃 衡水 湖南 銅川 黃山 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MariaDB 新版本實(shí)力逆襲不僅僅是 MySQL 替代品》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    旬阳县| 民勤县| 囊谦县| 山阴县| 满洲里市| 克什克腾旗| 克东县| 富蕴县| 高要市| 沁源县| 新乡县| 巩留县| 布尔津县| 宁安市| 高要市| 牟定县| 和顺县| 中阳县| 元氏县| 于田县| 理塘县| 宜章县| 青海省| 曲靖市| 平江县| 怀化市| 福建省| 西城区| 普安县| 旬阳县| 泽州县| 雷山县| 德格县| 青川县| 棋牌| 胶州市| 丘北县| 祁连县| 富蕴县| 女性| 河北区|