1.mysql支持多種存儲(chǔ)引擎,存儲(chǔ)引擎選擇較為靈活,實(shí)際上一般都在用innodb。ddl放在server端,ddl語(yǔ)句的事物性支持較差,可能出現(xiàn)server級(jí)數(shù)據(jù)庫(kù)丟失。pg的server穩(wěn)定性更好
2 mysql數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)為聚簇索引,通過主鍵查詢效率較高,但是有很多局限性,比如插入只能順序插入。不太適合超大數(shù)據(jù)非主鍵查詢,訪問二級(jí)索引需要回表。pg采用堆表存儲(chǔ)數(shù)據(jù),能夠支持更大的數(shù)據(jù)量
3 pg不支持分區(qū)表,通過繼承表的形式達(dá)到分區(qū)表的目的,在分區(qū)較多成千上萬(wàn)時(shí),pg的繼承表效率較差
4 mysql有間隙鎖, postgresql數(shù)據(jù)庫(kù)執(zhí)行delete操作后,表中的記錄只是被標(biāo)示為刪除狀態(tài),并沒有釋放空間,在以后的update或insert操作中該部分的空間是不能夠被重用,VACUUM作用是刪除那些已經(jīng)標(biāo)示為刪除的數(shù)據(jù)并釋放空間,vacuum需要定期運(yùn)行,比較消耗IO
5 pg支持的數(shù)據(jù)類型(如gis),分析函數(shù)支持更多,還支持面向?qū)ο髷?shù)據(jù)庫(kù)。有更多的第三方開源工具輔助系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
6pg支持存儲(chǔ)過程和執(zhí)行計(jì)劃緩存,表連接和復(fù)雜查詢能力更強(qiáng)。mysql優(yōu)化器,運(yùn)算符都較簡(jiǎn)單,適合簡(jiǎn)單的查詢操作
7 pg主從采用wal日志物理同步,mysql使用binlog邏輯同步。物理同步可靠性更高,復(fù)制性能更高。
8 mysql僅支持嵌套循環(huán)表連接(8.0支持hash連接),pg支持nl,hash,merge join
9 mysql適用應(yīng)用邏輯簡(jiǎn)單,輕數(shù)據(jù)存儲(chǔ)和計(jì)算的場(chǎng)景,pg適合復(fù)雜的數(shù)據(jù)分析和特殊應(yīng)用場(chǎng)景