12.20 MySQL與 PostgreSQL 數據庫功能對比

概述

在幾個流行的數據庫中,我首先接觸到的是MySQL,隨著工作發展,接觸到越來越多的是PostgreSQL數據庫。這兩個十分流行的開源數據庫。在這之後,我就會經常和一些朋友進行討論:MySQL和PostgreSQL兩者之間到底有什麼異同點呢?
翻閱資料,今天就來學習一下

ACID的遵從性(ACID Compliance )對比

數據庫是否滿足事物的四大特性是判斷數據庫優劣的重要標準之一
PostgreSQL:
完全遵從ACID,確保滿足所有ACID的需求
MySQL:
只有InnoDB等少量存儲引擎遵從ACID,所以客戶選取就更加靈活

原子性(Atomic)

Atomic是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾
PostgreSQL是全面支持事務的關係型數據庫,不僅DML語句可以在一個事務中,DDL語句也支持事務,即可以把創建多張表時的DDL語句放到一個事務中,這樣可以保證這些表要不都創建成功,要不都不成功。

而MySQL無法把多條DDL語句放到一個事務中。PostgreSQL能保證多條DDL的原子性,這是PG的亮點。

一致性(Consistency)

Consistency是指事務必須使數據庫從一個一致性的狀態變到另外一個一致的狀態,也就是執行事務之前和之後的狀態都必須處於一致的狀態。一致性:例如數據庫完整性約束正確;日誌狀態一致; 索引和數據的一致, 即事務完成後,數據庫的一切都是對的。
而兩者的約束對比如下

MySQL與 PostgreSQL 數據庫功能對比

隔離性(Isolcation)

Isolcation是指併發執行多個事務時,使它們各自好像是系統在給定時間內執行的唯一操作,即每一事務在系統中認為只有該事務在使用系統,不受其它事務干擾。
達到的效果: 對於任意兩個併發的事務T1和T2,在事務T1看來,T2要麼在T1開始之前就已經結束,要麼在T1結束之後才開始,這樣每個事務都感覺不到有其他事務在併發地執行。
幾種隔離級別的性能比較

MySQL與 PostgreSQL 數據庫功能對比

而PostgreSQL和MySQL的隔離性差異如下
MySQL和PostgreSQL都實現了基於快照的事務隔離級別,即snapshot isolation,PostgreSQL還實現了可串行化的快照隔離級別,即SSI。

MySQL與 PostgreSQL 數據庫功能對比

持久性(Durability)

Durability是指一個事務一旦被提交了,那麼對於數據庫中的數據改變就是永久性的,即便是在數據庫系統遭遇到故障的情況下也不會丟失提交事務的操作。


早期的MySQL版本中的默認配置不是提交後立即持久化的,即提交後,數據可能丟失(追求性能),PostgreSQL一開始默認就是持久化的,當然也可以設置成非立即持久化。

MySQL與 PostgreSQL 數據庫功能對比

對SQL標準的支持度對比

PostgreSQL:
遵從SQL標準支持最好的數據庫。SQL2011標準中,179個核心特性(mandatory features ),做到至少160個,也支持了很多附加特性

MySQL:
只有部分支持,基本是隻持了SQL 92標準的部分

支持的業務場景對比

PostgreSQL:
既支持OLTP場景也支持OLAP場景,混合性業務場景,類似Oracle數據庫。能很好的支持JSON文檔型業務場景。金融級的可靠性,設計目標是以穩定性和可靠性為第一目標,支持大數據庫,可以可靠支持幾十T的大數據庫

MySQL:
只支持OLTP場景,不可用於OLAP場景

mysql5.7以後才對JSON的有了支持
簡單和性能是設計第一目標,支持可靠性很高的業務存在一定的困難
大數據庫支持存在一定的困難,需要做單機多實例

複製功能對比

MySQL與 PostgreSQL 數據庫功能對比

複製類型的支持
PostgreSQL支持以下類型:

  • 單主到單備
  • 單主到多備
  • 物理備庫可以讀
  • 雙向複雜
  • 邏輯的流複製(發佈和訂閱模式)
  • 級聯的複製
  • 全同步、半同步、異步
  • 同步複製中支持最少同步到幾個備節點,即保證至少寫幾份數據

MySQL支持以下類型:

  • 單主到單備
  • 單主到多備
  • 單主到單個備再到單個或多個備
  • 循環複製:A->B->C->A
  • 雙主複製
  • 異步複製和半同步複製

主要功能對比

查詢相關功能對比

MySQL與 PostgreSQL 數據庫功能對比

表的功能支持

MySQL與 PostgreSQL 數據庫功能對比

架構功能對比

MySQL與 PostgreSQL 數據庫功能對比

視圖表功能對比

MySQL與 PostgreSQL 數據庫功能對比

加密使用功能對比

MySQL與 PostgreSQL 數據庫功能對比

後記

總之,PostgreSQL和MySQL是從底層設計原理開始就不一樣的兩種數據庫,在數據量小的時候,數據庫更趨於輕量化,MySQL會更適合。但是一旦數據量稍漲,計算量上升,PostgreSQL會是更好的選擇。


專注於技術熱點大數據,人工智能,JAVA、Python、 C 、GO、Javascript等語言最新前言技術,及業務痛點問題分析,請關注【編程我最懂】共同交流學習。


分享到:


相關文章: