1. 程式人生 > 其它 >PostgreSQL 與 MySQL的區別

PostgreSQL 與 MySQL的區別

都是免費、開源、強大、且功能豐富的資料庫

PostgreSQL相對於MySQL的優勢

  • 在SQL的標準實現上要比MySQL完善,而且功能實現比較嚴謹;
  • 儲存過程的功能支援要比MySQL好,具備本地快取執行計劃的能力;
  • 對錶連線支援較完整,優化器的功能較完整,支援的索引型別很多,複雜查詢能力較強;
  • PG主表採用堆表存放,MySQL採用索引組織表,能夠支援比MySQL更大的資料量。
  • PG的主備複製屬於物理複製,相對於MySQL基於binlog的邏輯複製,資料的一致性更加可靠,複製效能更高,對主機效能的影響也更小。
  • MySQL的儲存引擎外掛化機制,存在鎖機制複雜影響併發的問題,而PG不存在。

MySQL相對於PG的優勢

  • innodb的基於回滾段實現的MVCC機制,相對PG新老資料一起存放的基於XID的MVCC機制,是佔優的。新老資料一起存放,需要定時觸 發VACUUM,會帶來多餘的IO和資料庫物件加鎖開銷,引起資料庫整體的併發能力下降。而且VACUUM清理不及時,還可能會引發資料膨脹;
  • MySQL採用索引組織表,這種儲存方式非常適合基於主鍵匹配的查詢、刪改操作,但是對錶結構設計存在約束;
  • MySQL的優化器較簡單,系統表、運算子、資料型別的實現都很精簡,非常適合簡單的查詢操作;
  • MySQL分割槽表的實現要優於PG的基於繼承表的分割槽實現,主要體現在分割槽個數達到上千上萬後的處理效能差異較大。
  • MySQL的儲存引擎外掛化機制,使得它的應用場景更加廣泛,比如除了innodb適合事務處理場景外,myisam適合靜態資料的查詢場景。

總結

  • 開源資料庫都不是很完善,商業資料庫oracle在架構和功能方面都還是完善很多的。
  • 從應用場景來說,PG更加適合嚴格的企業應用場景(比如金融、電信、ERP、CRM),
  • 而MySQL更加適合業務邏輯相對簡單、資料可靠性要求較低的網際網路場景(比如google、facebook、alibaba)。
    https://zhuanlan.zhihu.com/p/435829273