溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

pg數(shù)據(jù)庫(kù)和mysql數(shù)據(jù)庫(kù)有什么區(qū)別

發(fā)布時(shí)間:2020-08-29 09:20:54 來源:億速云 閱讀:898 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

pg數(shù)據(jù)庫(kù)和mysql數(shù)據(jù)庫(kù)有什么區(qū)別?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

區(qū)別:1、MySQL傾向于使用者的角度;pg數(shù)據(jù)庫(kù)傾向于理論角度。2、MySQL一般會(huì)將數(shù)據(jù)合法性驗(yàn)證交給客戶;pg數(shù)據(jù)庫(kù)在合法性難方面做得比較嚴(yán)格。3、在SQL的標(biāo)準(zhǔn)實(shí)現(xiàn)上,pg數(shù)據(jù)庫(kù)要比MySQL完善,而且功能實(shí)現(xiàn)比較嚴(yán)謹(jǐn)。

pg數(shù)據(jù)庫(kù)和mysql數(shù)據(jù)庫(kù)有什么區(qū)別

MySQL

MySQL相對(duì)來說比較年輕,首度出現(xiàn)在1994年。它聲稱自己是最流行的開源數(shù)據(jù)庫(kù)。MySQL就是LAMP(用于Web開發(fā)的軟件包,包括 Linux、Apache及Perl/PHP/Python)中的M。構(gòu)建在LAMP棧之上的大多數(shù)應(yīng)用都會(huì)使用MySQL,包括那些知名的應(yīng)用,如 WordPress、Drupal、Zend及phpBB等。

一開始,MySQL的設(shè)計(jì)目標(biāo)是成為一個(gè)快速的Web服務(wù)器后端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經(jīng)過早期快速的發(fā)展之 后,MySQL開始支持更多的存儲(chǔ)引擎,并通過InnoDB引擎實(shí)現(xiàn)了ACID。MySQL還支持其他存儲(chǔ)引擎,提供了臨時(shí)表的功能(使用MEMORY存 儲(chǔ)引擎),通過MyISAM引擎實(shí)現(xiàn)了高速讀的數(shù)據(jù)庫(kù),此外還有其他的核心存儲(chǔ)引擎與第三方引擎。

MySQL的文檔非常豐富,有很多質(zhì)量不錯(cuò)的免費(fèi)參考手冊(cè)、圖書與在線文檔,還有來自于Oracle和第三方廠商的培訓(xùn)與支持。

MySQL近幾年經(jīng)歷了所有權(quán)的變更和一些頗具戲劇性的事件。它最初是由MySQL AB開發(fā)的,然后在2008年以10億美金的價(jià)格賣給了Sun公司,Sun公司又在2010年被Oracle收購(gòu)。Oracle支持MySQL的多個(gè)版 本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費(fèi)下載的,另外一 些則是收費(fèi)的。其核心代碼基于GPL許可,對(duì)于那些不想使用GPL許可的開發(fā)者與廠商來說還有商業(yè)許可可供使用。

現(xiàn)在,基于最初的MySQL代碼還有更多的數(shù)據(jù)庫(kù)可供選擇,因?yàn)閹讉€(gè)核心的MySQL開發(fā)者已經(jīng)發(fā)布了MySQL分支。最初的MySQL創(chuàng)建者之一 Michael “Monty” Widenius貌似后悔將MySQL賣給了Sun公司,于是又開發(fā)了他自己的MySQL分支MariaDB,它是免費(fèi)的,基于GPL許可。知名的 MySQL開發(fā)者Brian Aker所創(chuàng)建的分支Drizzle對(duì)其進(jìn)行了大量的改寫,特別針對(duì)多CPU、云、網(wǎng)絡(luò)應(yīng)用與高并發(fā)進(jìn)行了優(yōu)化。

PostgreSQL

PostgreSQL標(biāo)榜自己是世界上最先進(jìn)的開源數(shù)據(jù)庫(kù)。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價(jià)格和傲慢的客服。它擁有很長(zhǎng)的歷史,最初是1985年在加利福尼亞大學(xué)伯克利分校開發(fā)的,作為Ingres數(shù)據(jù)庫(kù)的后繼。

PostgreSQL是完全由社區(qū)驅(qū)動(dòng)的開源項(xiàng)目,由全世界超過1000名貢獻(xiàn)者所維護(hù)。它提供了單個(gè)完整功能的版本,而不像MySQL那樣提供了 多個(gè)不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復(fù)制、修改和重新分發(fā)代碼,只需要提供一個(gè)版權(quán)聲 明即可。

可靠性是PostgreSQL的最高優(yōu)先級(jí)。它以堅(jiān)如磐石的品質(zhì)和良好的工程化而聞名,支持高事務(wù)、任務(wù)關(guān)鍵型應(yīng)用。PostgreSQL的文檔非 常精良,提供了大量免費(fèi)的在線手冊(cè),還針對(duì)舊版本提供了歸檔的參考手冊(cè)。PostgreSQL的社區(qū)支持是非常棒的,還有來自于獨(dú)立廠商的商業(yè)支持。

數(shù)據(jù)一致性與完整性也是PostgreSQL的高優(yōu)先級(jí)特性。PostgreSQL是完全支持ACID特性的,它對(duì)于數(shù)據(jù)庫(kù)訪問提供了強(qiáng)大的安全性 保證,充分利用了企業(yè)安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據(jù)自己的業(yè)務(wù)規(guī)則確保數(shù)據(jù)質(zhì)量。在眾多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,這是個(gè)靈活的高可用特性,提供了諸如針對(duì)失敗恢復(fù)創(chuàng)建熱備份以及快照與恢復(fù)的能力。但這并不是 PostgreSQL的全部,項(xiàng)目還提供了幾個(gè)方法來管理PostgreSQL以實(shí)現(xiàn)高可用、負(fù)載均衡與復(fù)制等,這樣你就可以使用適合自己特定需求的功能 了。

平臺(tái)

MySQL與PostgreSQL都出現(xiàn)在一些高流量的Web站點(diǎn)上:

MySQL:Slashdot、Twitter、Facebook與Wikipedia

PostgreSQL:Yahoo使用了一個(gè)修改的PostgreSQL數(shù)據(jù)庫(kù)來處理每天數(shù)以億計(jì)的事件,還有Reddit和Disqus

MySQL與PostgreSQL都能運(yùn)行在多個(gè)操作系統(tǒng)上,如Linux、Unix、Mac OS X與Windows。他們都是開源、免費(fèi)的,因此測(cè)試他們時(shí)的唯一代價(jià)就是你的時(shí)間與硬件。他們都很靈活且具有可伸縮性,可用在小型系統(tǒng)和大型分布式系統(tǒng) 上。MySQL在一個(gè)領(lǐng)域上要比PostgreSQL更進(jìn)一步,那就是它的觸角延伸到了嵌入式領(lǐng)域,這是通過libmysqld實(shí)現(xiàn)的。 PostgreSQL不支持嵌入式應(yīng)用,依然堅(jiān)守在傳統(tǒng)的客戶端/服務(wù)器架構(gòu)上。

MySQL通常被認(rèn)為是針對(duì)網(wǎng)站與應(yīng)用的快速數(shù)據(jù)庫(kù)后端,能夠進(jìn)行快速的讀取和大量的查詢操作,不過在復(fù)雜特性與數(shù)據(jù)完整性檢查方面不太盡如人意。

PostgreSQL是針對(duì)事務(wù)型企業(yè)應(yīng)用的嚴(yán)肅、功能完善的數(shù)據(jù)庫(kù),支持強(qiáng)ACID特性和很多數(shù)據(jù)完整性檢查。他們二者都在某些任務(wù)上具有很快的速 度,MySQL不同存儲(chǔ)引擎的行為有較大差別。MyISAM引擎是最快的,因?yàn)樗粓?zhí)行很少的數(shù)據(jù)完整性檢查,適合于后端讀操作較多的站點(diǎn),不過對(duì)于包含 敏感數(shù)據(jù)的讀/寫數(shù)據(jù)庫(kù)來說就是個(gè)災(zāi)難了,因?yàn)镸yISAM表最終可能會(huì)損壞。MySQL提供了修復(fù)MySQL表的工具,不過對(duì)于敏感數(shù)據(jù)來說,支持 ACID特性的InnoDB則是個(gè)更好的選擇。

與之相反,PostgreSQL則是個(gè)只有單一存儲(chǔ)引擎的完全集成的數(shù)據(jù)庫(kù)。你可以通過調(diào)整postgresql.conf文件的參數(shù)來改進(jìn)性能,也可以調(diào)整查詢與事務(wù)。PostgreSQL文檔對(duì)于性能調(diào)優(yōu)提供了非常詳盡的介紹。

MySQL與PostgreSQL都是高可配置的,并且可以針對(duì)不同的任務(wù)進(jìn)行相應(yīng)的優(yōu)化。他們都支持通過擴(kuò)展來添加額外的功能。

一個(gè)常見的誤解就是MySQL要比PostgreSQL更容易學(xué)習(xí)。關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都是非常復(fù)雜的,這兩個(gè)數(shù)據(jù)庫(kù)的學(xué)習(xí)曲線其實(shí)是差不多的。

標(biāo)準(zhǔn)兼容性

PostgreSQL旨在實(shí)現(xiàn)SQL兼容性(當(dāng)前標(biāo)準(zhǔn)是ANSI-SQL:2008)。MySQL則兼容大部分SQL,不過還有自己的擴(kuò)展,可以支 持NoSQL特性,這在參考手冊(cè)中都有介紹。每種方式都有優(yōu)缺點(diǎn)。兼容標(biāo)準(zhǔn)會(huì)讓數(shù)據(jù)庫(kù)管理員、數(shù)據(jù)庫(kù)開發(fā)者與應(yīng)用開發(fā)者更舒服一些,因?yàn)檫@意味著他們只需 學(xué)習(xí)一套標(biāo)準(zhǔn)、一套特性和命令即可。這會(huì)節(jié)省時(shí)間,提升效率,也不會(huì)被鎖定在特定的廠商上。

支持使用非標(biāo)準(zhǔn)的自定義功能的人們認(rèn)為這樣可以快速采用新的特性,而不必等待標(biāo)準(zhǔn)進(jìn)程完成。ANSI/ISO標(biāo)準(zhǔn)在不斷演化,因此標(biāo)準(zhǔn)兼容性也是個(gè) 變化的目標(biāo):知名的關(guān)系型數(shù)據(jù)庫(kù)Microsoft SQL Server、Oracle與IBM DB2也只是部分兼容于標(biāo)準(zhǔn)。

MySQL與PostgreSQL(pg數(shù)據(jù)庫(kù))的區(qū)別

MySQL是應(yīng)用開發(fā)者創(chuàng)建出來的DBMS;而PostgreSQL是由數(shù)據(jù)庫(kù)開發(fā)者創(chuàng)建出來的DBMS 。

換句話說,MySQL傾向于使用者的角度,回答的問題是 “你想解決的是什么問題”;而PostgreSQL傾向于理論角度,回答的問題是 “數(shù)據(jù)庫(kù)應(yīng)該如何來解決問題” 。

MySQL一般會(huì)將數(shù)據(jù)合法性驗(yàn)證交給客戶;PostgreSQL在合法性難方面做得比較嚴(yán)格。比如MySQL里插入 “2012-02-30” 這個(gè)時(shí)間時(shí),會(huì)成功,但結(jié)果會(huì)是 “0000-00-00”;PostgreSQL不允許插入此值。

通常,PostgreSQL 被認(rèn)為特性豐富,而MySQL被認(rèn)為速度更快。但這個(gè)觀點(diǎn)基本是在 MySQL 4.x / PostgreSQL 7.x 的事情,現(xiàn)在情況已經(jīng)變了,PostgreSQL 在9.x版本速度上有了很大的改進(jìn),而MySQL特性也在增加。

在架構(gòu)上,MySQL分為兩層:上層的SQL層和幾個(gè)存儲(chǔ)引擎(比如InnoDB,MyISAM)。PostgreSQL 只有一個(gè)存儲(chǔ)引擎提供這兩個(gè)功能。

這兩個(gè)數(shù)據(jù)庫(kù)系統(tǒng)都可以針對(duì)應(yīng)用的情境被優(yōu)化、定制,精確的說哪個(gè)性能更好很難。MySQL項(xiàng)目一開始焦點(diǎn)就在速度上,而PostgreSQL一開始焦點(diǎn)在特性和規(guī)范標(biāo)準(zhǔn)上。

PostgreSQL相對(duì)于MySQL的優(yōu)勢(shì)

1、在SQL的標(biāo)準(zhǔn)實(shí)現(xiàn)上要比MySQL完善,而且功能實(shí)現(xiàn)比較嚴(yán)謹(jǐn);

2、存儲(chǔ)過程的功能支持要比MySQL好,具備本地緩存執(zhí)行計(jì)劃的能力;

3、對(duì)表連接支持較完整,優(yōu)化器的功能較完整,支持的索引類型很多,復(fù)雜查詢能力較強(qiáng);

4、PG主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數(shù)據(jù)量。

5、PG的主備復(fù)制屬于物理復(fù)制,相對(duì)于MySQL基于binlog的邏輯復(fù)制,數(shù)據(jù)的一致性更加可靠,復(fù)制性能更高,對(duì)主機(jī)性能的影響也更小。

6、MySQL的存儲(chǔ)引擎插件化機(jī)制,存在鎖機(jī)制復(fù)雜影響并發(fā)的問題,而PG不存在。

MySQL相對(duì)于PG的優(yōu)勢(shì):

1、innodb的基于回滾段實(shí)現(xiàn)的MVCC機(jī)制,相對(duì)PG新老數(shù)據(jù)一起存放的基于XID的MVCC機(jī)制,是占優(yōu)的。新老數(shù)據(jù)一起存放,需要定時(shí)觸 發(fā)VACUUM,會(huì)帶來多余的IO和數(shù)據(jù)庫(kù)對(duì)象加鎖開銷,引起數(shù)據(jù)庫(kù)整體的并發(fā)能力下降。而且VACUUM清理不及時(shí),還可能會(huì)引發(fā)數(shù)據(jù)膨脹;

2、MySQL采用索引組織表,這種存儲(chǔ)方式非常適合基于主鍵匹配的查詢、刪改操作,但是對(duì)表結(jié)構(gòu)設(shè)計(jì)存在約束;

3、MySQL的優(yōu)化器較簡(jiǎn)單,系統(tǒng)表、運(yùn)算符、數(shù)據(jù)類型的實(shí)現(xiàn)都很精簡(jiǎn),非常適合簡(jiǎn)單的查詢操作;

4、MySQL分區(qū)表的實(shí)現(xiàn)要優(yōu)于PG的基于繼承表的分區(qū)實(shí)現(xiàn),主要體現(xiàn)在分區(qū)個(gè)數(shù)達(dá)到上千上萬后的處理性能差異較大。

5、MySQL的存儲(chǔ)引擎插件化機(jī)制,使得它的應(yīng)用場(chǎng)景更加廣泛,比如除了innodb適合事務(wù)處理場(chǎng)景外,myisam適合靜態(tài)數(shù)據(jù)的查詢場(chǎng)景。

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)pg數(shù)據(jù)庫(kù)和mysql數(shù)據(jù)庫(kù)有什么區(qū)別大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI