溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

postgresql和mysql數據庫有什么區別

發布時間:2020-08-01 11:54:53 來源:億速云 閱讀:490 作者:清晨 欄目:編程語言

不懂postgresql和mysql數據庫有什么區別?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

一、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適合靜態數據的查詢場景。

三、用法區別

1、MySQL的各種text字段有不同的限制,需要手動區分small text,middle text, large text;pg沒有該限制,可以支持text的各種大小。

2、按照SQL標準,null判斷只能用is null,不能用 ==null;pg可以設置transform_null_equals 把 = null 翻譯成 is null。

3、MySQL的事務隔離級別 repeatable read 并不能阻止常見的并發更新,得加鎖才可以。但悲觀鎖會影響性能,手動實現樂觀鎖又復雜。而 Pg 的列里有隱藏的樂觀鎖 version 字段,默認的 repeatable read 級別就能保證并發更新的正確性,并且又有樂觀鎖的性能。附帶一個各數據庫對隔離級別的行為差異比較調查。

4、MySQL 不支持多個表從同一個序列中取 id,而 Pg 可以。

5、MySQL 不支持 OVER 子句,而 Pg 支持。OVER 子句能簡單的解決“每組取 top 5” 的這類問題。幾乎任何數據庫的子查詢 (subquery) 性能都比 MySQL 好。

6、pg它可以存儲 array 和 json,可以在 array 和 json 上建索引,甚至還能用表達式索引。為了實現文檔數據庫的功能,設計了 jsonb 的存儲結構。有人會說為什么不用 Mongodb 的 BSON 呢?Pg 的開發團隊曾經考慮過,但是他們看到 BSON 把 [“a”,“b”,“c”] 存成 {0: “a”,1:“b”,2:“c”} 的時候就決定要重新做一個 jsonb 了,現在 jsonb 的性能已經優于 BSON。

總體上來說,開源數據庫都不是很完善,商業數據庫oracle在架構和功能方面都還是完善很多的。從應用場景來說,PG更加適合嚴格的企業應用場景(比如金融、電信、ERP、CRM),而MySQL更加適合業務邏輯相對簡單、數據可靠性要求較低的互聯網場景(比如google、facebook、alibaba)。

感謝你能夠認真閱讀完這篇文章,希望小編分享postgresql和mysql數據庫有什么區別內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女