首頁  >  文章  >  資料庫  >  pg資料庫和mysql的差別是什麼?

pg資料庫和mysql的差別是什麼?

青灯夜游
青灯夜游原創
2020-08-28 16:29:5135010瀏覽

區別:1、MySQL傾向於使用者的角度;pg資料庫傾向於理論角度。 2.MySQL一般會將資料合法性驗證交給客戶;pg資料庫在合法性困難方面做得比較嚴格。 3.在SQL的標準實作上,pg資料庫要比MySQL完善,而且功能實作比較嚴謹。

pg資料庫和mysql的差別是什麼?

MySQL

#MySQL相對比較年輕,第一次出現在1994年。它聲稱自己是最受歡迎的開源資料庫。 MySQL就是LAMP(用於Web開發的軟體包,包括 Linux、Apache及Perl/PHP/Python)中的M。建構在LAMP堆疊之上的應用程式大多會使用MySQL,包括那些知名的應用,如 WordPress、Drupal、Zend及phpBB等。

一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用快速的索引序列存取方法(ISAM),不支援ACID。經過早期快速的發展之 後,MySQL開始支援更多的儲存引擎,並透過InnoDB引擎實現了ACID。 MySQL也支援其他儲存引擎,提供了臨時表的功能(使用MEMORY存 儲引擎),透過MyISAM引擎實現了高速讀取的資料庫,此外還有其他的核心儲存引擎與第三方引擎。

MySQL的文檔非常豐富,有許多品質不錯的免費參考手冊、書籍與線上文檔,還有來自Oracle和第三方廠商的培訓與支援。

MySQL近年來經歷了所有權的變更和一些相當戲劇性的事件。它最初是由MySQL AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。 Oracle支援MySQL的多個版本 本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有些是免費下載的,另外一 有些則是收費的。其核心程式碼基於GPL許可,對於不想使用GPL許可的開發者與廠商來說還有商業許可可供使用。

現在,基於最初的MySQL程式碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發者已經發布了MySQL分支。最初的MySQL創作者之一 Michael “Monty” Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。由知名的 MySQL開發者Brian Aker所創建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲端、網路應用與高並發進行了最佳化。

PostgreSQL

PostgreSQL標榜自己是世界上最先進的開源資料庫。 PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加州大學柏克萊分校開發的,作為Ingres資料庫的後繼。

PostgreSQL是完全由社群驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單一完整功能的版本,而不像MySQL那樣提供了 多個不同的社群版、商業版與企業版。 PostgreSQL基於自由的BSD/MIT許可,組織可以使用、複製、修改和重新分發程式碼,只需要提供一個版權聲 明即可。

可靠性是PostgreSQL的最高優先權。它以堅如磐石的品質和良好的工程化而聞名,支援高事務、任務關鍵型應用。 PostgreSQL的文檔非 常精良,提供了大量免費的線上手冊,也針對舊版本提供了歸檔的參考手冊。 PostgreSQL的社群支援是非常棒的,還有來自獨立廠商的商業支援。

資料一致性與完整性也是PostgreSQL的高優先權特性。 PostgreSQL是完全支援ACID特性的,它對於資料庫存取提供了強大的安全性 保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的業務規則確保資料品質。在眾多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,這是一個靈活的高可用特性,提供了諸如針對失敗恢復創建熱備份以及快照與恢復的能力。但這並不是 PostgreSQL的全部,專案還提供了幾個方法來管理PostgreSQL以實現高可用、負載平衡與複製等,這樣你就可以使用適合自己特定需求的功能 了。

平台

MySQL與PostgreSQL都出現在一些高流量的Web網站上:

MySQL:Slashdot、Twitter 、Facebook與Wikipedia

PostgreSQL:Yahoo使用了一個修改過的PostgreSQL資料庫來處理每天數以億計的事件,還有Reddit和Disqus

MySQL與PostgreSQL都能運作在多個作業系統上,如Linux、Unix、Mac OS X與Windows。他們都是開源、免費的,因此測試他們時的唯一代價就是你的時間與硬體。他們都很靈活且具有可伸縮性,可用在小型系統和大型分散式系統 上。 MySQL在一個領域上要比PostgreSQL更進一步,那就是它的觸角延伸到了嵌入式領域,這是透過libmysqld實現的。 PostgreSQL不支援嵌入式應用,依然堅守在傳統的客戶端/伺服器架構上。

MySQL通常被認為是網站與應用程式的快速資料庫後端,能夠進行快速的讀取和大量的查詢操作,不過在複雜特性與資料完整性檢查方面較不盡如人意。

PostgreSQL是針對事務型企業應用的嚴肅、功能完善的資料庫,支援強ACID特性和許多資料完整性檢查。他們二者都在某些任務上具有很快的速 度,MySQL不同儲存引擎的行為有較大差異。 MyISAM引擎是最快的,因為它只執行很少的資料完整性檢查,適合於後端讀取操作較多的站點,不過對於包含敏感資料的讀取/寫入資料庫來說就是個災難了,因為MyISAM表最終可能會損壞。 MySQL提供了修復MySQL表的工具,不過對於敏感資料來說,支援 ACID特性的InnoDB則是個更好的選擇。

與之相反,PostgreSQL則是個只有單一儲存引擎的完全整合的資料庫。你可以透過調整postgresql.conf檔的參數來改進效能,也可以調整查詢與交易。 PostgreSQL文件對於效能調優提供了非常詳盡的介紹。

MySQL與PostgreSQL都是高可設定的,並且可以針對不同的任務進行對應的最佳化。他們都支持透過擴充功能來添加額外的功能。

一個常見的誤解就是MySQL要比PostgreSQL更容易學習。關係資料庫系統都是非常複雜的,這兩個資料庫的學習曲線其實是差不多的。

標準相容性

PostgreSQL旨在實現SQL相容性(目前標準是ANSI-SQL:2008)。 MySQL則相容於大部分SQL,不過有自己的擴展,可以支 持NoSQL特性,這在參考手冊中都有介紹。每種方式都有優缺點。相容標準會讓資料庫管理員、資料庫開發者與應用程式開發者更舒服一些,因為這意味著他們只需 學習一套標準、一套特性和指令。這會節省時間,提升效率,也不會被鎖定在特定的廠商上。

支援使用非標準的自訂功能的人們認為這樣可以快速採用新的特性,而不必等待標準進程完成。 ANSI/ISO標準不斷演化,因此標準相容性也是 變化的目標:知名的關聯式資料庫Microsoft SQL Server、Oracle與IBM DB2也只是部分相容於標準。

MySQL與PostgreSQL(pg資料庫)的差異

MySQL是應用程式開發者建立出來的DBMS;而PostgreSQL是由資料庫開發者建立出來的DBMS 。

換句話說,MySQL傾向於使用者的角度,回答的問題是「你想解決的是什麼問題」;而PostgreSQL傾向於理論角度,回答的問題是「資料庫應該如何來解決問題” 。

MySQL一般會將資料合法性驗證交給客戶;PostgreSQL在合法性困難方面做得比較嚴格。例如MySQL裡插入 “2012-02-30” 這個時間時,會成功,但結果會是 “0000-00-00”;PostgreSQL不允許插入此值。

通常,PostgreSQL 被認為是特性豐富,而MySQL被認為更快。但這個觀點基本上是在 MySQL 4.x / PostgreSQL 7.x 的事情,現在情況已經改變了,PostgreSQL 在9.x版本速度上有了很大的改進,而MySQL特性也在增加。

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

這兩個資料庫系統都可以針對應用的情境被優化、定制,精確的說哪個性能更好很難。 MySQL專案一開始焦點就在速度上,而PostgreSQL一開始焦點在特性和規範標準上。

PostgreSQL相對於MySQL的優點

1、在SQL的標準實作上要比MySQL完善,而且功能實作比較嚴謹;

2 、儲存過程的功能支援要比MySQL好,具備本地快取執行計畫的能力;

3、對錶連線支援較完整,優化器的功能較完整,支援的索引類型很多,複雜查詢能力較強;

4、PG主表採用堆疊表存放,MySQL採用索引組織表,能夠支援比MySQL更大的資料量。

5、PG的主備複製屬於實體複製,相對於MySQL基於binlog的邏輯複製,資料的一致性更可靠,​​複製效能更高,對主機效能的影響也更小。

6、MySQL的儲存引擎外掛機制,有鎖定機制複雜影響並發的問題,而PG不存在。

MySQL相對於PG的優勢:

1、innodb的基於回滾段實現的MVCC機制,相對PG新舊資料一起存放的基於XID的MVCC機制,是佔優的。新舊資料一起存放,需要定時觸 發VACUUM,會帶來多餘的IO和資料庫物件加鎖開銷,造成資料庫整體的同時能力下降。而且VACUUM清理不及時,也可能引發資料膨脹;

2、MySQL採用索引組織表,這種儲存方式非常適合基於主鍵匹配的查詢、刪改操作,但對錶結構設計有約束;

3、MySQL的優化器較簡單,系統表、運算子、資料類型的實作都很精簡,非常適合簡單的查詢操作;

4、MySQL分區表的實作要優於PG的基於繼承表的分區實現,主要體現在分區個數達到上千上萬後的處理性能差異較大。

5、MySQL的儲存引擎插件化機制,使得它的應用場景更加廣泛,例如除了innodb適合事務處理場景外,myisam適合靜態資料的查詢場景。

相關推薦:《mysql教學

###

以上是pg資料庫和mysql的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn