MySQL是第一個介紹的單機(jī)RDBMS。相信大多數(shù)朋友都已經(jīng)對MySQL非常熟悉,基本上MySQL的成長史就是互聯(lián)網(wǎng)的成長史。MySQL也普及了「可插拔」引擎這一概念,針對不同的業(yè)務(wù)場景選用不同的存儲引擎是MySQL tuning的一個重要的方式。比如對于有事務(wù)需求的場景使用InnoDB,對于并發(fā)讀取的場景,MyISAM可能比較合適。但現(xiàn)在,我們推薦絕大多數(shù)情況還是使用InnoDB,因?yàn)?.6后已經(jīng)成為了官方的默認(rèn)引擎。大多數(shù)朋友都知道在哪些場景中適用MySQL(幾乎所有需要持久化結(jié)構(gòu)化數(shù)據(jù)的場景)。
MySQL5.6中引入了多線程復(fù)制和GTID。這使得故障恢復(fù)和主從的運(yùn)維變得很方便。另外,MySQL5.7(目前處于GA版本)是MySQL的一個重大更新,主要是讀寫性能和復(fù)制性能上有了長足的進(jìn)步。如果有單機(jī)數(shù)據(jù)庫技術(shù)選型的朋友,基本上只需要考慮5.7或者M(jìn)ariaDB就好了。而且5.6、5.7由Oracle接手后,性能和穩(wěn)定性上都有了明顯的提升。
PostgreSQL的歷史也非常悠久。其前身是UCB的Ingres,主持這個項(xiàng)目的Michael Stronebraker于2023年獲得圖靈獎。后來項(xiàng)目更名為Post-Ingres,項(xiàng)目基于BSD license下開源。1995年,幾個UCB的學(xué)生為Post-Ingres開發(fā)了SQL的接口,正式發(fā)布了PostgreSQL95,隨后一步步在開源社區(qū)中成長起來。和MySQL一樣,PostgreSQL也是一個單機(jī)的關(guān)系型數(shù)據(jù)庫,但是與MySQL方便用戶過度擴(kuò)展的SQL文法不同的是,PostgreSQL的SQL支持非常強(qiáng)大,不管是內(nèi)置類型、JSON支持、GIS類型以及對于復(fù)雜查詢的支持、PL/SQL等,都比MySQL強(qiáng)大得多。從代碼質(zhì)量上來看,PostgreSQL的代碼質(zhì)量是優(yōu)于MySQL的。另外,相對于MySQL5.7以前的版本,PostgreSQL的SQL優(yōu)化器比MySQL強(qiáng)大很多,幾乎所有稍微復(fù)雜的查詢PostgreSQL的表現(xiàn)都優(yōu)于MySQL。
從近幾年的趨勢上來看,PostgreSQL的勢頭很強(qiáng)勁。PostgreSQL的不足之處在于沒有MySQL那樣強(qiáng)大的社區(qū)和群眾基礎(chǔ)。MySQL經(jīng)過那么多年的發(fā)展,積累了很多的運(yùn)維工具和最佳實(shí)踐,但是PostgreSQL擁有更優(yōu)秀的設(shè)計(jì)和更豐富的功能。電腦培訓(xùn)發(fā)現(xiàn)PostgreSQL9以后的版本也足夠穩(wěn)定。在做新項(xiàng)目技術(shù)選型的時(shí)候,是一個很好的選擇。另外,也有很多新的數(shù)據(jù)庫項(xiàng)目是基于PostgreSQL源碼的基礎(chǔ)上進(jìn)行二次開發(fā),比如Greenplum等。