第三,PG多年來在GIS領域壹直處於優勢地位,因為它的幾何類型豐富,其實不止幾何類型。PG有大量的數據類型,如字典、數組、位圖等。,和mysql相比,差很多。instagram采用PGSQL是因為PG的空間數據庫擴展POSTGIS遠強於MYSQL的my spatial。
第四,PG的“無鎖”特性非常突出,甚至包括像真空壹樣排列數據空間的操作,這與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金門,基於流復制。很難實現同步,比較適合遠程復制。pgsql的復制基於wal,可以實現同步復制。同時,pgsql還提供了流復制。
十、pgsql比mysql更好的支持numa架構,讀取性能比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沒有問題。