成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

神仙打架:PG和MySQL到底哪個更好用?

數(shù)據(jù)庫 MySQL
本文介紹MySQL和PostgreSQL的一些特性對比,讓大家了解二者的優(yōu)劣,更好的做出選擇。

概述

本文介紹MySQL和PostgreSQL的一些特性對比,讓大家了解二者的優(yōu)劣,更好的做出選擇。當前國內(nèi)的現(xiàn)狀,互聯(lián)網(wǎng)公司使用MySQL的較多,PostgreSQL的使用比例反而不高,但相信看到PG的新特性后,你會愛上她。當然MySQL作為最流行的數(shù)據(jù)庫,依然會吸引大部分人的眼球。

PostgreSQL標榜自己是世界上最先進的開源數(shù)據(jù)庫,甚至PG粉絲或者一些PGER宣稱,她可以和Oracle相媲美(雖然PG很強大,但是和Oracle還是有差距的,當然PG優(yōu)勢也是顯而易見的),而且沒有那么昂貴的價格和傲慢的客服。

當然PG功能完善和強大是最早始于9版本,在10版本快速發(fā)展,增加很多功能和特性。PostgreSQL是完全由社區(qū)驅(qū)動的開源項目,他的核心代碼,都是由社區(qū)維護,商用版本都是基于PG做的二次開發(fā)。

MySQL 聲稱自己是最流行的開源數(shù)據(jù)。看現(xiàn)在國內(nèi)的現(xiàn)狀,稱得上名副其實。MySQL被賣幾次后,最終落到Oracle公司的囊中。正是因此,MySQL之父Monty,修改了MySQL的源代碼,創(chuàng)立了MariaDB分支。

說到這里當然不得不提另一個重要的分支,Percana公司的Percona Server。Percona公司更擅長MySQL運維,開發(fā)了很多非常實用運維工具,而且都已經(jīng)開源,并回饋給社區(qū),像XtraBackup和pt-Toolkits工具。

簡單對比MySQL和PostgreSQL發(fā)現(xiàn),MySQL背后是成熟的商業(yè)公司(Oracle有自己的MySQL企業(yè)版,收費,有許多社區(qū)版沒有的特性),而PostgreSQL背后是一個龐大的志愿開發(fā)組,相比而言,PostgreSQL的商業(yè)性質(zhì)更少一些,他沒有所謂的PostgreSQL企業(yè)版,但是存在基于PG開發(fā)的一些企業(yè)級的PG數(shù)據(jù)庫。

下面我將從以下幾個方面闡述MySQL和PostgreSQL的異同和優(yōu)劣,由于筆者水平的限制,不當之處,還請大家多提意見。

一、開源方面

PostgreSQL: The world’s most advanced open source database。

開源協(xié)議:PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發(fā)代碼,只需要提供一個版權(quán)聲明即可。

PG的開源協(xié)議特別靈活,任何公司的和個人都可以把PG作為一個產(chǎn)品銷售,而不需要像MySQL那樣必須修改大部分代碼才可以作為公司的產(chǎn)品。

MySQL:World’s Most Popular Open Source Database。

開源協(xié)議:核心代碼基于GPL或Commercial License。

MySQL的開源協(xié)議是基于GPL協(xié)議,任何公司都可以免費使用,不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售,MySQL的版權(quán)在甲骨文手中,甲骨文可以推了其商業(yè)閉源版本。

如上圖所示,開源軟件協(xié)議

二、ACID支持方面

PostgreSQL支持事務(wù)的強一致性,事務(wù)保證性好,完全支持ACID特性。

MySQL只有innodb引擎支持事務(wù),事務(wù)一致性保證上可根據(jù)實際需求調(diào)整,為了最大限度的保護數(shù)據(jù),MySQL可配置雙一模式,對ACID的支持上比PG稍弱弱。

三、SQL標準的支持方面

PostgreSQL幾乎支持所有的SQL標準,支持類型相當豐富。

MySQL只支持部分SQL標準,相比于PG支持類型稍弱。

四、復制

MySQL的復制是基于binlog的邏輯異步復制,無法實現(xiàn)同步復制。

復制模式:

  •  一主一備。
  •  一主多備。
  •  級聯(lián)復制。
  •  循環(huán)復制。
  •  主主復制。

數(shù)據(jù)流轉(zhuǎn)優(yōu)勢:通過canal增量數(shù)據(jù)的訂閱和消費,可以同步數(shù)據(jù)到kafka,通過kafka做數(shù)據(jù)流轉(zhuǎn)。

MySQL所有的高可用方案都是基于binlog做的同步,以及基于MySQL的分布式數(shù)據(jù)也是基于MySQL的binlog實現(xiàn),binlog是MySQL生態(tài)圈最基本技術(shù)實現(xiàn)。

PostgreSQL可以做到同步,異步,半同步復制,以及基于日志邏輯復制,可以實現(xiàn)表級別的訂閱和發(fā)布。

復制模式:

  •  一主一備。
  •  一主多備。
  •  級聯(lián)復制。
  •  熱備庫/流復制。
  •  邏輯復制。

數(shù)據(jù)流轉(zhuǎn)優(yōu)勢:通過邏輯復制實現(xiàn)消息的訂閱和消費,可以同步數(shù)據(jù)到kafka,通過kafka實現(xiàn)數(shù)據(jù)流轉(zhuǎn)。

五、并發(fā)控制

PostgreSQL通過其MVCC實現(xiàn)有效地解決了并發(fā)問題,從而實現(xiàn)了非常高的并發(fā)性。

PG新老數(shù)據(jù)一起存放的基于XID的MVCC機制,新老數(shù)據(jù)一起存放,需要定時觸 發(fā)VACUUM,會帶來多余的IO和數(shù)據(jù)庫對象加鎖開銷,引起數(shù)據(jù)庫整體的并發(fā)能力下降。而且VACUUM清理不及時,還可能會引發(fā)數(shù)據(jù)膨脹。

當然PostgreSQL還有一點影響比較,為了保證事務(wù)的強一致性,未決事務(wù)會影響所有表VACUUM清理,導致表膨脹。

MySQL僅在InnoDB中支持MVCC。

innodb的基于回滾段實現(xiàn)的MVCC機制,但是MySQL的間隙鎖影響較大,鎖定數(shù)據(jù)較多。

六、性能

1、PostgreSQL

1)PostgreSQL廣泛用于讀寫速度高和數(shù)據(jù)一致性高的大型系統(tǒng)。此外,它還支持各種性能優(yōu)化,當然這些優(yōu)化僅在商業(yè)解決方案中可用,例如地理空間數(shù)據(jù)支持,沒有讀鎖定的并發(fā)性等等。

2)PostgreSQL性能最適用于需要執(zhí)行復雜查詢的系統(tǒng)。

3)PostgreSQL在OLTP/ OLAP系統(tǒng)中表現(xiàn)良好,讀寫速度以及大數(shù)據(jù)分析方面表現(xiàn)良好,基于PG的GP數(shù)據(jù)庫,在數(shù)據(jù)倉庫領(lǐng)域表現(xiàn)良好。

4)PostgreSQL也適用于商業(yè)智能應(yīng)用程序,但更適合需要快速讀/寫速度的數(shù)據(jù)倉庫和數(shù)據(jù)分析應(yīng)用程序。

2、MySQL

1)MySQL是廣泛選擇的基于Web的項目,需要數(shù)據(jù)庫只是為了簡單的數(shù)據(jù)事務(wù)。但是,當遇到重負載或嘗試完成復雜查詢時,MySQL通常會表現(xiàn)不佳。

2)MySQL的讀取速度,在OLTP系統(tǒng)中表現(xiàn)良好。

3)MySQL + InnoDB為OLTP場景提供了非常好的讀/寫速度。總體而言,MySQL在高并發(fā)場景下表現(xiàn)良好。

4)MySQL是可靠的,并且與商業(yè)智能應(yīng)用程序配合良好,因為商業(yè)智能應(yīng)用程序通常讀取很多。

七、高可用技術(shù)的實現(xiàn)

1、PostgreSQL

1)基于流復制的異步、同步主從。

2)基于流復制的–keepalive。

3)基于流復制的 –repmgr。

4)基于流復制的 –patroni+etcd。

5)共享存儲HA(corosync+pacemaker)。

6)Postgres-XC。

7)Postgres-XL。

8)中間件實現(xiàn):pgpool、pgcluster、slony、plploxy。

2、MySQL

1)主從復制。

2)主主復。

3)MHA。

4)LVS+KEEPALIVE。

5)MGR分布式數(shù)據(jù)庫,多點寫入[不建議],基于paxos協(xié)議。

6)PXC分布式數(shù)據(jù)庫,多點寫入[不建議],基于令牌環(huán)協(xié)議。

7)INNODB CLUSTER[8.0新技術(shù),基于MGR實現(xiàn),上層封裝命令],基于paxos協(xié)議。

8)中間件實現(xiàn):mycat。

八、外部數(shù)據(jù)源

PostgreSQL FDW –[foreign-data wrapper的一個簡稱,可以叫外部封裝。

PostgreSQL不支持多數(shù)據(jù)引擎。但支持Extension組件擴充,以及通過名為FDW的技術(shù)將Oracle、Hadoop、MongoDB、SQLServer、Excel、CSV文件等作為外部表進行讀寫操作,因此,可以為大數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫提供良好對接。

MySQL:無。

九、數(shù)據(jù)存儲和數(shù)據(jù)類型

PG主表采用堆表存放,存放的數(shù)據(jù)量較大,數(shù)據(jù)訪問方式類似于Oracle的堆表。

MySQL采用索引組織表,MySQL必須有主鍵索引,所有的數(shù)據(jù)訪問都是通過主鍵實現(xiàn),二級索引訪問時,需要掃描兩遍索引(主鍵和二級索引)。

十、PostgreSQL與MySQL優(yōu)劣對比

1、PostgreSQL相對于MySQL的優(yōu)勢

1)在SQL的標準實現(xiàn)上要比MySQL完善,而且功能實現(xiàn)比較嚴謹。

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

3)對表連接支持較完整,優(yōu)化器的功能較完整,支持的索引類型很多,復雜查詢能力較強。

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

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

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

7)PG對可以實現(xiàn)外部數(shù)據(jù)源查詢,數(shù)據(jù)源的支持類型豐富。 

8)PG原生的邏輯復制可以實現(xiàn)表級別的訂閱發(fā)布,可以實現(xiàn)數(shù)據(jù)通過kafka流轉(zhuǎn),而不需要其他的組件。 

9)PG支持三種表連接方式,嵌套循環(huán),哈希連接,排序合并,而MySQL只支持嵌套循環(huán)。 

10)PostgreSQL源代碼寫的很清晰,易讀性比MySQL強太多了。 

11)PostgreSQL通過PostGIS擴展支持地理空間數(shù)據(jù)。地理空間數(shù)據(jù)有專用的類型和功能,可直接在數(shù)據(jù)庫級別使用,使開發(fā)人員更容易進行分析和編碼。 

12)可擴展型系統(tǒng),有豐富可擴展組件,作為contribute發(fā)布。 

13)PostgreSQL支持JSON和其他NoSQL功能,如本機XML支持和使用HSTORE的鍵值對。它還支持索引JSON數(shù)據(jù)以加快訪問速度,特別是10版本JSONB更是強大。 

14)PostgreSQL完全免費,而且是BSD協(xié)議,如果你把PostgreSQL改一改,然后再拿去賣錢,也沒有人管你,這一點很重要,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。相反,MySQL現(xiàn)在主要是被Oracle公司控制。

2、MySQL相對于PG的優(yōu)勢

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

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

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

4)MySQL相對于PG在國內(nèi)的流行度更高,PG在國內(nèi)顯得就有些落寞了。

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

總結(jié)

總體上來說,開源數(shù)據(jù)庫都不是很完善,商業(yè)數(shù)據(jù)庫oracle在架構(gòu)和功能方面都還是完善很多的。從應(yīng)用場景來說,PG更加適合嚴格的企業(yè)應(yīng)用場景(比如金融、電信、ERP、CRM),但不僅僅限制于此,PostgreSQL的json,jsonb,hstore等數(shù)據(jù)格式,特別適用于一些大數(shù)據(jù)格式的分析;而MySQL更加適合業(yè)務(wù)邏輯相對簡單、數(shù)據(jù)可靠性要求較低的互聯(lián)網(wǎng)場景(比如google、facebook、alibaba),當然現(xiàn)在MySQL的在innodb引擎的大力發(fā)展,功能表現(xiàn)良好。

MySQL和PostgreSQL復雜的開源關(guān)系型數(shù)據(jù)庫,本文只是作者根據(jù)自己經(jīng)驗寫的對PG和MySQL的理解,難免有不當之處,不當之處還請大家多多指正。

MySQL在國內(nèi)的發(fā)展已然很成熟,但是如果你轉(zhuǎn)向PostgreSQL,會發(fā)現(xiàn)不一樣的天地,學院派的風格,豐富的功能,肯定會給你帶來不一樣的驚喜。 

 

責任編輯:龐桂玉 來源: DBAplus社群
相關(guān)推薦

2019-07-27 09:40:56

MySQLPG數(shù)據(jù)庫

2020-07-14 09:01:19

PGMySQLPostgreSQL

2017-03-02 14:52:46

2016-08-29 20:43:00

NvidiaIntel

2020-12-08 10:25:56

HibernateMyBatis數(shù)據(jù)庫

2021-08-19 09:05:36

頂部導航左側(cè)導航瀏覽

2024-01-22 15:55:15

2019-12-08 18:38:17

網(wǎng)絡(luò)安全國際網(wǎng)絡(luò)安全大賽

2021-06-28 11:17:14

CoutPrintf接口

2017-03-22 09:25:26

MySQLPostgreSQL對比

2022-02-09 17:19:07

谷歌亞馬遜微軟

2022-02-04 00:10:14

手機關(guān)機卡頓

2022-09-02 08:28:44

AWS多云云提供商

2019-12-27 16:27:27

深度學習編程人工智能

2016-08-05 14:23:15

系統(tǒng)

2018-03-07 11:30:24

新零售

2020-04-26 09:48:55

Redis面試

2022-04-20 12:17:50

命令Batcat

2023-05-28 13:03:46

BeegoGin設(shè)計

2022-04-25 10:04:56

df命令Linux
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91一区二区三区在线观看 | 国产精品久久久久一区二区三区 | 天天插日日操 | 日韩免费在线视频 | 久久久久国产一区二区三区四区 | 国产黄色麻豆视频 | 日韩一区二区三区在线视频 | 中文字幕日韩欧美一区二区三区 | 日韩精品一区二区久久 | 免费观看毛片 | 免费看一级毛片 | 久久国产精品一区二区三区 | 国产精品久久久久久婷婷天堂 | 久久在线| 欧美激情精品久久久久久变态 | 婷婷丁香在线视频 | www.久| 免费在线观看成年人视频 | 懂色中文一区二区在线播放 | 欧美三级成人理伦 | 黑人精品欧美一区二区蜜桃 | 国产97久久 | 日韩中文欧美 | 污免费网站 | 久久精品亚洲 | 91在线精品视频 | 国产一区黄色 | 成人综合视频在线观看 | 神马久久久久久久久久 | 亚洲中午字幕 | av免费观看网站 | 亚洲精品在线播放 | 亚洲黄色视屏 | 麻豆一区一区三区四区 | 国产极品91| 国产99久久精品 | 久久手机视频 | 天天操,夜夜爽 | 综合色站导航 | 特黄毛片视频 | 麻豆av免费观看 |