mysql和pgsql的選擇

前言

如果打算爲項目選擇一款免費、開源的數據庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免費、開源、強大、且功能豐富的數據庫。你主要的問題可能是:哪一個纔是最好的開源數據庫,MySQL還是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適合靜態數據的查詢場景。

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

最後
謝謝大家的閱讀,原創不易,喜歡就點個贊,這將是我最強的寫作動力。如果你覺得文章對你有所幫助,也蠻有趣的,就關注一下我的博客,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章