Pgsql和Mysql的對比


工作中用過這兩個數據庫,但都不是太深入,僅限於用而已,但給我留下的印象就是Pgsql更好些,因為這兩個庫我都遇到過數據丟失的問題,前者我通過網上方法加自己的判斷有驚無險的恢復了,而后者搜索各種資料加問身邊的專家都沒辦法。

剛網上搜了一下兩者的區別,總體的感覺也是前者是最好的開源關系數據庫,而后者是互聯網行業應用最廣泛的數據庫, 可能應用等多發現的坑也多,網上相關資料也多。如果讓我個人選沒特殊要求情況下會選前者。

關於兩個的區別可以看知乎上相關問題,回答很精彩,

其中一個如下。

一、 PostgreSQL 的穩定性極強, Innodb 等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足進步,然而很多 MySQL 用戶都遇到過Server級的數據庫丟失的場景——mysql系統庫是MyISAM的,相比之下,PG數據庫這方面要好一些。

二、任何系統都有它的性能極限,在高並發讀寫,負載逼近極限下,PG的性能指標仍可以維持雙曲線甚至對數曲線,到頂峰之后不再下降,而 MySQL 明顯出現一個波峰后下滑(5.5版本之后,在企業級版本中有個插件可以改善很多,不過需要付費)。

三、PG 多年來在 GIS 領域處於優勢地位,因為它有豐富的幾何類型,實際上不止幾何類型,PG有大量字典、數組、bitmap 等數據類型,相比之下mysql就差很多,instagram就是因為PG的空間數據庫擴展POSTGIS遠遠強於MYSQL的my spatial而采用PGSQL的。


四、PG 的“無鎖定”特性非常突出,甚至包括 vacuum 這樣的整理數據空間的操作,這個和PGSQL的MVCC實現有關系。

五、PG 的可以使用函數和條件索引,這使得PG數據庫的調優非常靈活,mysql就沒有這個功能,條件索引在web應用中很重要。

六、PG有極其強悍的 SQL 編程能力(9.x 圖靈完備,支持遞歸!),有非常豐富的統計函數和統計語法支持,比如分析函數(ORACLE的叫法,PG里叫window函數),還可以用多種語言來寫存儲過程,對於R的支持也很好。這一點上MYSQL就差的很遠,很多分析功能都不支持,騰訊內部數據存儲主要是MYSQL,但是數據分析主要是HADOOP+PGSQL(聽李元佳說過,但是沒有驗證過)。

七、PG 的有多種集群架構可以選擇,plproxy 可以支持語句級的鏡像或分片,slony 可以進行字段級的同步設置,standby 可以構建WAL文件級或流式的讀寫分離集群,同步頻率和集群策略調整方便,操作非常簡單。

八、一般關系型數據庫的字符串有限定長度8k左右,無限長 TEXT 類型的功能受限,只能作為外部大數據訪問。而 PG 的 TEXT 類型可以直接訪問,SQL語法內置正則表達式,可以索引,還可以全文檢索,或使用xml xpath。用PG的話,文檔數據庫都可以省了。

九,對於WEB應用來說,復制的特性很重要,mysql到現在也是異步復制,pgsql可以做到同步,異步,半同步復制。還有mysql的同步是基於binlog復制,類似oracle golden gate,是基於stream的復制,做到同步很困難,這種方式更加適合異地復制,pgsql的復制基於wal,可以做到同步復制。同時,pgsql還提供stream復制。

十,pgsql對於numa架構的支持比mysql強一些,比MYSQL對於讀的性能更好一些,pgsql提交可以完全異步,而mysql的內存表不夠實用(因為表鎖的原因)


最后說一下我感覺 PG 不如 MySQL 的地方。

第一,MySQL有一些實用的運維支持,如 slow-query.log ,這個pg肯定可以定制出來,但是如果可以配置使用就更好了。

第二是mysql的innodb引擎,可以充分優化利用系統所有內存,超大內存下PG對內存使用的不那么充分,

第三點,MySQL的復制可以用多級從庫,但是在9.2之前,PGSQL不能用從庫帶從庫。

第四點,從測試結果上看,mysql 5.5的性能提升很大,單機性能強於pgsql,5.6應該會強更多.

第五點,對於web應用來說,mysql 5.6 的內置MC API功能很好用,PGSQL差一些。


另外一些:

pgsql和mysql都是背后有商業公司,而且都不是一個公司。大部分開發者,都是拿工資的。

說mysql的執行速度比pgsql快很多是不對的,速度接近,而且很多時候取決於你的配置。

對於存儲過程,函數,視圖之類的功能,現在兩個數據庫都可以支持了。

另外多線程架構和多進程架構之間沒有絕對的好壞,oracle在unix上是多進程架構,在windows上是多線程架構。

很多pg應用也是24/7的應用,比如skype. 最近幾個版本VACUUM基本不影響PGSQL 運行,8.0之后的PGSQL不需要cygwin就可以在windows上運行。

至於說對於事務的支持,mysql和pgsql都沒有問題。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM