當前位置:成語大全網 - 書法字典 - 為什麽postgrelsql不如mysql?

為什麽postgrelsql不如mysql?

首先,PostgreSQL極其穩定,Innodb等引擎在崩潰和斷電等災難場景下的抗攻擊能力有了長足的進步。然而,許多MySQL用戶都遇到過服務器級數據庫丟失的場景——MySQL系統庫是MyISAM,相比之下,PG數據庫在這方面做得更好。

其次,任何系統都有其性能限制。在高並發讀寫、負載接近極限的情況下,PG的性能指標仍能保持雙曲線甚至對數曲線,達到峰值後也不會下降,而MySQL則在壹個峰值後明顯下降(5.5版本後,企業版中有壹個插件可以提升很多,但需要付費)。

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

第四,PG的“無鎖”特性非常突出,甚至包括像vacuum壹樣排列數據空間的操作,這與PGSQL的MVCC實現有關。

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

第六,PG具有極強的SQL編程能力(9.x圖靈完整,支持遞歸!),有非常豐富的統計函數和統計語法支持,例如analysis function(ORACLE的名字,在PG中稱為window function),還可以用多種語言編寫存儲過程,這也非常好地支持R。在這壹點上,MYSQL遠遠不夠,許多分析功能都不支持。騰訊內部數據存儲主要是MYSQL,但數據分析主要是HADOOP+PGSQL。

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

八、壹般關系數據庫的字符串長度有限,約8k,無限文本類型的功能有限,只能作為外部大數據訪問。PG的文本類型可以直接訪問,SQL語法具有內置的正則表達式,可以索引、全文搜索或使用xml xpath。使用PG可以保存文檔數據庫。

九、對於WEB應用程序來說,復制的特性非常重要。mysql到現在也是異步復制,pgsql可以同步、異步、半同步復制。此外,mysql的同步基於binlog復制,類似於oracle golden gate,基於流復制。實現同步非常困難,這更適合遠程復制。pgsql的復制基於wal,可以實現同步復制。同時,pgsql還提供了流復制。

十、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應用程序也是全天候應用程序,例如skype。最近幾個版本的VACUUM基本不影響PGSQL的運行,8.0以後的PGSQL可以在沒有cygwin的windows上運行。

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