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