mysql和postgresql的區別?
1 架構對比
MYSQL:多線程
PostgreSQL:多進程
多線程架構和多進程架構之間沒有絕對的好壞,例如oracle在unix上是多進程架構,在windows上是多線程架構。
PG 的有多種集群架構可以選擇,plproxy 可以支持語句級的鏡像或分片,slony 可以進行字段級的同步設置,standby 可以構建WAL文件級或流式的讀寫分離集群,同步頻率和集群策略調整方便,操作非常簡單。
pgsql對于numa架構的支持比mysql強一些,比MYSQL對于讀的性能更好一些,pgsql提交可以完全異步,而mysql的內存表不夠實用(因為表鎖的原因)
2 對存儲過程及事務的支持能力
1) MySQL對于無事務的MyISAM表,采用表鎖定,一個長時間運行的查詢很可能會長時間地阻礙對表的更新,而PostgreSQL不存在這樣的問題。
2) PostgreSQL支持存儲過程,要比MySQL好,具備本地緩存執行計劃的能力;
3) MySQL 4.0.2-alpha開始支持事務的概念,保留無事務的表類型, 為用戶提供了更多的選擇。
3 穩定性及性能
1)高并發讀寫,負載逼近極限下,PG的性能指標仍可以維持雙曲線甚至對數曲線,到頂峰之后不再下降,而 MySQL 明顯出現一個波峰后下滑(5.5版本之后,在企業級版本中有個插件可以改善很多,不過需要付費)
2) PostgreSQL 的穩定性極強, Innodb 等引擎在崩潰、斷電之類的災難場景下抗打擊能力有了長足進步,然而很多 MySQL 用戶都遇到過Server級的數據庫丟失的場景——mysql系統庫是MyISAM的,相比之下,PG數據庫這方面要好一些。
3) mysql的innodb引擎,可以充分優化利用系統所有內存,超大內存下PG對內存使用的不那么充分(需要根據內存情況合理配置)。從測試結果上看,mysql 5.5的性能提升很大,單機性能強于pgsql,5.6應該會強更多。