《postgresql與mysql》要點(diǎn):
本文介紹了postgresql與mysql,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
因?yàn)檎娴暮茈y去說postgresql與mysql誰好誰壞.就淺藏輒止的來了解一下這兩種數(shù)據(jù)庫的相同點(diǎn)和分歧點(diǎn).
相同點(diǎn):
開源數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫
PG和MySQL在大數(shù)據(jù)表時(shí),更新操作性能都會(huì)急劇下降;
分歧點(diǎn):
進(jìn)程模式與線程模式:postgresql為進(jìn)程模式,和oracle同為進(jìn)程模式,而mysql為線程模式.在不同線程之間的環(huán)境轉(zhuǎn)換和拜訪公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多;但是進(jìn)程模式對(duì)多CPU利用率比較高.進(jìn)程模式共享數(shù)據(jù)需要用到共享內(nèi)存,而線程模式數(shù)據(jù)本身就是在進(jìn)程空間內(nèi)都是共享的,不同線程拜訪只需要控制好線程之間的同步
SQL標(biāo)準(zhǔn)上:在SQL的標(biāo)準(zhǔn)實(shí)現(xiàn)上要比MySQL完善,而且功能實(shí)現(xiàn)比擬嚴(yán)謹(jǐn);
PG的主備復(fù)制屬于物理復(fù)制,相對(duì)于MySQL基于binlog的邏輯復(fù)制,數(shù)據(jù)的一致性更加可靠,復(fù)制性能更高,對(duì)主機(jī)性能的影響也更小;
MySQL采用索引組織表,這種存儲(chǔ)方式非常適合基于主鍵匹配的查詢、編削操作,但是對(duì)表結(jié)構(gòu)設(shè)計(jì)存在約束;而PG可以使用函數(shù)和條件索引,這使得PG數(shù)據(jù)庫的調(diào)優(yōu)非常靈活,mysql就沒有這個(gè)功能,條件索引在web應(yīng)用中很重要.
任何系統(tǒng)都有它的性能極限,在高并發(fā)讀寫,負(fù)載切近親近極限下,PG的性能指標(biāo)仍可以維持雙曲線甚至對(duì)數(shù)曲線,到頂峰之后不再下降,而 MySQL 明顯出現(xiàn)一個(gè)波峰后下滑.
數(shù)據(jù)庫的可靠性:PostgreSQL 的穩(wěn)定性極強(qiáng), Innodb 等引擎在瓦解、斷電之類的災(zāi)難場(chǎng)景下抗打擊能力有了長(zhǎng)足進(jìn)步,然而很多 MySQL 用戶都遇到過Server級(jí)的數(shù)據(jù)庫丟失的場(chǎng)景——mysql系統(tǒng)庫是MyISAM的,相比之下,PG數(shù)據(jù)庫這方面要好一些.
PG有極其強(qiáng)悍的 SQL 編程能力(9.x 圖靈完備,支持遞歸!),有非常豐富的統(tǒng)計(jì)函數(shù)和統(tǒng)計(jì)語法支持,好比分析函數(shù)(ORACLE的叫法,PG里叫window函數(shù)),還可以用多種語言來寫存儲(chǔ)過程,對(duì)于R的支持也很好.這一點(diǎn)上MYSQL就差的很遠(yuǎn),很多分析功能都不支持,騰訊內(nèi)部數(shù)據(jù)存儲(chǔ)主要是MYSQL,但是數(shù)據(jù)分析主要是HADOOP+PGSQL.
PG 多年來在 GIS 領(lǐng)域處于優(yōu)勢(shì)地位,因?yàn)樗胸S富的幾何類型,實(shí)際上不止幾何類型,PG有大量字典、數(shù)組、bitmap 等數(shù)據(jù)類型,相比之下mysql就差很多.
PG的可靠性高,對(duì)數(shù)據(jù)的掩護(hù)性也比較高,不會(huì)陷入到廠商的利益圈套中,而隨著sun被oracle收購,mysql和oracle的市場(chǎng)份額也不好說.
PostgreSQL 的確還欠缺一些比擬高端的數(shù)據(jù)庫管理系統(tǒng)需要的特性,比如數(shù)據(jù)庫集群,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能 等提高數(shù)據(jù)庫性能的機(jī)制等
另外,mysql號(hào)稱是開源數(shù)據(jù)庫中most popular,而pg而號(hào)稱是開源數(shù)據(jù)庫中most advanced,所以關(guān)于mysql和pg誰好誰壞還欠好說.
但是從我使用的角度來說,的確pg在大數(shù)據(jù)量是讀寫的性能的確要比mysql強(qiáng)大一些,而且在條件中可以加入到正則匹配,還支持臨時(shí)表,這個(gè)我覺得還挺有用,在語法上很像sql,但是又要靈活很多,但是好像PG的delete和update操作應(yīng)該作了特殊優(yōu)化,性能不是很穩(wěn)定.
另外pg并不是傳統(tǒng)的sql數(shù)據(jù)庫,它可以存儲(chǔ)array 和 json, 可以在 array 和 json 上建索引, 甚至還能用表達(dá)式索引. 為了實(shí)現(xiàn)文檔數(shù)據(jù)庫的功能, 設(shè)計(jì)了 jsonb 的存儲(chǔ)布局,pg的jsonb 的性能已經(jīng)優(yōu)于 MongoDB的BSON.
歡迎參與《postgresql與mysql》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/12399.html