新聞中心
MySQL與PostgreSQL比較 哪個(gè)數(shù)據(jù)庫(kù)更好
如果打算為項(xiàng)目選擇一款免費(fèi)、開源的數(shù)據(jù)庫(kù),那么你可能會(huì)在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是

創(chuàng)新互聯(lián)專注于龍山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站制作。龍山網(wǎng)站建設(shè)公司,為龍山等地區(qū)提供建站服務(wù)。全流程按需求定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
免費(fèi)、開源、強(qiáng)大、且功能豐富的數(shù)據(jù)庫(kù)。你主要的問題可能是:哪一個(gè)才是最好的開源數(shù)據(jù)庫(kù),MySQL還是PostgreSQL呢?該選擇哪一個(gè)開源數(shù)據(jù)
庫(kù)呢?
在選擇數(shù)據(jù)庫(kù)時(shí),你所做的是個(gè)長(zhǎng)期的決策,因?yàn)楹竺嫒绻俑淖儧Q定將是非常困難且代價(jià)高昂的。你希望一開始就選擇正確。兩個(gè)流行的開源數(shù)據(jù)庫(kù)MySQL與PostgreSQL常常成為最后要選擇的產(chǎn)品。對(duì)這兩個(gè)開源數(shù)據(jù)庫(kù)的高層次概覽將會(huì)有助于你選擇最適合自己需要的。
MySQL
MySQL
相對(duì)來說比較年輕,首度出現(xiàn)在1994年。它聲稱自己是最流行的開源數(shù)據(jù)庫(kù)。MySQL就是LAMP(用于Web開發(fā)的軟件包,包括
Linux、Apache及Perl/PHP/Python)中的M。構(gòu)建在LAMP棧之上的大多數(shù)應(yīng)用都會(huì)使用MySQL,包括那些知名的應(yīng)用,如
WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設(shè)計(jì)目標(biāo)是成為一個(gè)快速的Web服務(wù)器后端,使用快速的
索引序列訪問方法(ISAM),不支持ACID。經(jīng)過早期快速的發(fā)展之
后,MySQL開始支持更多的存儲(chǔ)引擎,并通過InnoDB引擎實(shí)現(xiàn)了ACID。MySQL還支持其他存儲(chǔ)引擎,提供了臨時(shí)表的功能(使用MEMORY存
儲(chǔ)引擎),通過MyISAM引擎實(shí)現(xiàn)了高速讀的數(shù)據(jù)庫(kù),此外還有其他的核心存儲(chǔ)引擎與第三方引擎。
MySQL的文檔非常豐富,有很多質(zhì)量不錯(cuò)的免費(fèi)參考手冊(cè)、圖書與在線文檔,還有來自于Oracle和第三方廠商的培訓(xùn)與支持。
MySQL
近幾年經(jīng)歷了所有權(quán)的變更和一些頗具戲劇性的事件。它最初是由MySQL
AB開發(fā)的,然后在2008年以10億美金的價(jià)格賣給了Sun公司,Sun公司又在2010年被Oracle收購(gòu)。Oracle支持MySQL的多個(gè)版
本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費(fèi)下載的,另外一
些則是收費(fèi)的。其核心代碼基于GPL許可,對(duì)于那些不想使用GPL許可的開發(fā)者與廠商來說還有商業(yè)許可可供使用。
現(xiàn)在,基于最初的
MySQL代碼還有更多的數(shù)據(jù)庫(kù)可供選擇,因?yàn)閹讉€(gè)核心的MySQL開發(fā)者已經(jīng)發(fā)布了MySQL分支。最初的MySQL創(chuàng)建者之一 Michael
"Monty"
Widenius貌似后悔將MySQL賣給了Sun公司,于是又開發(fā)了他自己的MySQL分支MariaDB,它是免費(fèi)的,基于GPL許可。知名的
MySQL開發(fā)者Brian Aker所創(chuàng)建的分支Drizzle對(duì)其進(jìn)行了大量的改寫,特別針對(duì)多CPU、云、網(wǎng)絡(luò)應(yīng)用與高并發(fā)進(jìn)行了優(yōu)化。
PostgreSQL
PostgreSQL標(biāo)榜自己是世界上最先進(jìn)的開源數(shù)據(jù)庫(kù)。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價(jià)格和傲慢的客服。它擁有很長(zhǎng)的歷史,最初是1985年在加利福尼亞大學(xué)伯克利分校開發(fā)的,作為Ingres數(shù)據(jù)庫(kù)的后繼。
PostgreSQL
是完全由社區(qū)驅(qū)動(dòng)的開源項(xiàng)目,由全世界超過1000名貢獻(xiàn)者所維護(hù)。它提供了單個(gè)完整功能的版本,而不像MySQL那樣提供了
多個(gè)不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復(fù)制、修改和重新分發(fā)代碼,只需要提供一個(gè)版權(quán)聲
明即可。
可靠性是PostgreSQL的最高優(yōu)先級(jí)。它以堅(jiān)如磐石的品質(zhì)和良好的工程化而聞名,支持高事務(wù)、任務(wù)關(guān)鍵型應(yīng)用。
PostgreSQL的文檔非
常精良,提供了大量免費(fèi)的在線手冊(cè),還針對(duì)舊版本提供了歸檔的參考手冊(cè)。PostgreSQL的社區(qū)支持是非常棒的,還有來自于獨(dú)立廠商的商業(yè)支持。
數(shù)
據(jù)一致性與完整性也是PostgreSQL的高優(yōu)先級(jí)特性。PostgreSQL是完全支持ACID特性的,它對(duì)于數(shù)據(jù)庫(kù)訪問提供了強(qiáng)大的安全性
保證,充分利用了企業(yè)安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據(jù)自己的業(yè)務(wù)規(guī)則確保數(shù)據(jù)質(zhì)量。在眾多的管理特性
中,point-in-time
recovery(PITR)是非常棒的特性,這是個(gè)靈活的高可用特性,提供了諸如針對(duì)失敗恢復(fù)創(chuàng)建熱備份以及快照與恢復(fù)的能力。但這并不是
PostgreSQL的全部,項(xiàng)目還提供了幾個(gè)方法來管理PostgreSQL以實(shí)現(xiàn)高可用、負(fù)載均衡與復(fù)制等,這樣你就可以使用適合自己特定需求的功能
了。
平臺(tái)
MySQL與PostgreSQL都出現(xiàn)在一些高流量的Web站點(diǎn)上:
MySQL:Slashdot、Twitter、Facebook與Wikipedia
PostgreSQL:Yahoo使用了一個(gè)修改的PostgreSQL數(shù)據(jù)庫(kù)來處理每天數(shù)以億計(jì)的事件,還有Reddit和Disqus
MySQL
與PostgreSQL都能運(yùn)行在多個(gè)操作系統(tǒng)上,如Linux、Unix、Mac OS
X與Windows。他們都是開源、免費(fèi)的,因此測(cè)試他們時(shí)的唯一代價(jià)就是你的時(shí)間與硬件。他們都很靈活且具有可伸縮性,可用在小型系統(tǒng)和大型分布式系統(tǒng)
上。MySQL在一個(gè)領(lǐng)域上要比PostgreSQL更進(jìn)一步,那就是它的觸角延伸到了嵌入式領(lǐng)域,這是通過libmysqld實(shí)現(xiàn)的。
PostgreSQL不支持嵌入式應(yīng)用,依然堅(jiān)守在傳統(tǒng)的客戶端/服務(wù)器架構(gòu)上。
MySQL通常被認(rèn)為是針對(duì)網(wǎng)站與應(yīng)用的快速數(shù)據(jù)庫(kù)后端,
能夠進(jìn)行快速的讀取和大量的查詢操作,不過在復(fù)雜特性與數(shù)據(jù)完整性檢查方面不太盡如人意。
PostgreSQL是針對(duì)事務(wù)型企業(yè)應(yīng)用的嚴(yán)肅、功能完善的數(shù)據(jù)庫(kù),支持強(qiáng)ACID特性和很多數(shù)據(jù)完整性檢查。他們二者都在某些任務(wù)上具有很快的速
度,MySQL不同存儲(chǔ)引擎的行為有較大差別。MyISAM引擎是最快的,因?yàn)樗粓?zhí)行很少的數(shù)據(jù)完整性檢查,適合于后端讀操作較多的站點(diǎn),不過對(duì)于包含
敏感數(shù)據(jù)的讀/寫數(shù)據(jù)庫(kù)來說就是個(gè)災(zāi)難了,因?yàn)镸yISAM表最終可能會(huì)損壞。MySQL提供了修復(fù)MySQL表的工具,不過對(duì)于敏感數(shù)據(jù)來說,支持
ACID特性的InnoDB則是個(gè)更好的選擇。
與之相反,PostgreSQL則是個(gè)只有單一存儲(chǔ)引擎的完全集成的數(shù)據(jù)庫(kù)。你可以通過調(diào)整postgresql.conf文件的參數(shù)來改進(jìn)性能,也可以調(diào)整查詢與事務(wù)。PostgreSQL文檔對(duì)于性能調(diào)優(yōu)提供了非常詳盡的介紹。
MySQL與PostgreSQL都是高可配置的,并且可以針對(duì)不同的任務(wù)進(jìn)行相應(yīng)的優(yōu)化。他們都支持通過擴(kuò)展來添加額外的功能。
一個(gè)常見的誤解就是MySQL要比PostgreSQL更容易學(xué)習(xí)。關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都是非常復(fù)雜的,這兩個(gè)數(shù)據(jù)庫(kù)的學(xué)習(xí)曲線其實(shí)是差不多的。
標(biāo)準(zhǔn)兼容性
PostgreSQL
旨在實(shí)現(xiàn)SQL兼容性(當(dāng)前標(biāo)準(zhǔn)是ANSI-SQL:2008)。MySQL則兼容大部分SQL,不過還有自己的擴(kuò)展,可以支
持NoSQL特性,這在參考手冊(cè)中都有介紹。每種方式都有優(yōu)缺點(diǎn)。兼容標(biāo)準(zhǔn)會(huì)讓數(shù)據(jù)庫(kù)管理員、數(shù)據(jù)庫(kù)開發(fā)者與應(yīng)用開發(fā)者更舒服一些,因?yàn)檫@意味著他們只需
學(xué)習(xí)一套標(biāo)準(zhǔn)、一套特性和命令即可。這會(huì)節(jié)省時(shí)間,提升效率,也不會(huì)被鎖定在特定的廠商上。
支持使用非標(biāo)準(zhǔn)的自定義功能的人們認(rèn)為這樣可
以快速采用新的特性,而不必等待標(biāo)準(zhǔn)進(jìn)程完成。ANSI/ISO標(biāo)準(zhǔn)在不斷演化,因此標(biāo)準(zhǔn)兼容性也是個(gè)
變化的目標(biāo):知名的關(guān)系型數(shù)據(jù)庫(kù)Microsoft SQL Server、Oracle與IBM DB2也只是部分兼容于標(biāo)準(zhǔn)。
結(jié)論
雖
然有不同的歷史、引擎與工具,不過并沒有明確的參考能夠表明這兩個(gè)數(shù)據(jù)庫(kù)哪一個(gè)能夠適用于所有情況。很多組織喜歡使用PostgreSQL,因?yàn)?/p>
它的可靠性好,在保護(hù)數(shù)據(jù)方面很擅長(zhǎng),而且是個(gè)社區(qū)項(xiàng)目,不會(huì)陷入廠商的牢籠之中。MySQL更加靈活,提供了更多選項(xiàng)來針對(duì)不同的任務(wù)進(jìn)行裁剪。很多時(shí)
候,對(duì)于一個(gè)組織來說,對(duì)某個(gè)軟件使用的熟練程度要比特性上的原因更重要。
為什么選擇PostgreSQL而不是MySQL
MySQL之所以仍然如此流行是因?yàn)槊總€(gè)Linux Web托管軟件包中都包含它。但隨著Oracle將其收購(gòu),MySQL的開源程度大不如前。而PostgreSQL不僅發(fā)展更快,還加入了JSON支持,成為少數(shù)幾個(gè)支持NoSQL的關(guān)系型數(shù)據(jù)庫(kù)之一。
MySQL/MariaDB的當(dāng)前版本是5.7.6(MariaDB為MySQL創(chuàng)建者M(jìn)onty Widenius創(chuàng)建的一個(gè)MySQL分支),PostgreSQL的版本是9.4.1。
PostgreSQL最近增加了JSON支持,與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,它提供了更大的數(shù)據(jù)存儲(chǔ)靈活性,因此,這方面PostgreSQL勝過MySQL。
PostgreSQL采用類似MIT的許可協(xié)議,允許開發(fā)人員做任何事情,包括在開源或閉源產(chǎn)品中商用,而MySQL的客戶端遵循GPL許可協(xié)議,所以開發(fā)人員必須向Oracle付費(fèi)或者將自己的應(yīng)用程序開源。
MySQL提供了插件程序API,支持C/C++或任何兼容C的語(yǔ)言,而且從5.7.3版本開始支持全文搜索,PostgreSQL有一個(gè)類似的系統(tǒng)但支持的語(yǔ)言更多,包括C/C++、Java、.Net、Perl、 Python、Ruby、Tcl、ODBC等,它甚至可以在單獨(dú)的進(jìn)程中運(yùn)行用戶提供的代碼;除了所有關(guān)系型數(shù)據(jù)庫(kù)都包含的有關(guān)數(shù)據(jù)庫(kù)、表和列的一般信息外,PostgreSQL系統(tǒng)目錄中還可以包含關(guān)于數(shù)據(jù)類型、函數(shù)和存取方法的信息,開發(fā)人員可以通過修改這些信息實(shí)現(xiàn)擴(kuò)展。
PostgreSQL學(xué)習(xí)系列—EXPLAIN ANALYZE查詢計(jì)劃解讀
PostgreSQL命令 EXPLAIN ANALYZE 是日常工作中了解和優(yōu)化SQL查詢過程所用到的最強(qiáng)大工具,后接如 SELECT ... , UPDATE ... 或者 DELETE ... 等SQL語(yǔ)句,命令執(zhí)行后并不返回?cái)?shù)據(jù),而是輸出查詢計(jì)劃,詳細(xì)說明規(guī)劃器通過何種方式來執(zhí)行給定的SQL語(yǔ)句。
下面是從 Postgres Using EXPLAIN 提取的查詢:
它生成的查詢計(jì)劃:
Postgres構(gòu)建了一個(gè)規(guī)劃節(jié)點(diǎn)的樹結(jié)構(gòu),以表示所采取的不同操作,其中root根和每個(gè) - 指向其中一個(gè)操作。在某些情況下, EXPLAIN ANALYZE 會(huì)提供除執(zhí)行時(shí)間和行數(shù)之外的額外執(zhí)行統(tǒng)計(jì)信息,例如上面例子中的 Sort 及 Hash 。除第一個(gè)沒有 - 的行之外的任何行都是諸如此類的信息,因此查詢的結(jié)構(gòu)是:
每個(gè)樹分支代表子動(dòng)作,從里到外以確定哪個(gè)是“第一個(gè)”發(fā)生(盡管同一級(jí)別的節(jié)點(diǎn)順序可能不同)。
在 tenk_unique1 索引上執(zhí)行的第一個(gè)操作是 Bitmap Index Scan :
這對(duì)應(yīng)于SQL WHERE t1.unique1 100 。Postgres查找與條件 unique1 100 匹配的行位置。此處不會(huì)返回行數(shù)據(jù)本身。成本估算 (cost=0.00..5.04 rows=101 width=0) 意味著Postgres預(yù)期將“花費(fèi)” 任意計(jì)算單位的 5.04 來找到這些行。0.00是此節(jié)點(diǎn)開始工作的成本(在這種情況下,即為查詢的啟動(dòng)時(shí)間)。 rows 是此索引掃描將返回的預(yù)估行數(shù), width 是這些返回行的預(yù)估大?。ㄒ宰止?jié)為單位)(0是因?yàn)檫@里只關(guān)心位置,而不是行數(shù)據(jù)的內(nèi)容)。
因?yàn)槭褂昧?ANALYZE 選項(xiàng)運(yùn)行 EXPLAIN ,所以查詢被實(shí)際執(zhí)行并捕獲了計(jì)時(shí)信息。 (actual time=0.049..0.049 rows=100 loops=1) 表示索引掃描執(zhí)行了1次( loops 值),結(jié)果返回了100行,實(shí)際時(shí)間是0 ..如果節(jié)點(diǎn)執(zhí)行了多次,實(shí)際時(shí)間是每次迭代的平均值,可以將該值乘以循環(huán)次數(shù)以獲取實(shí)際時(shí)間。基于成本的最小/最大時(shí)間的概念,范圍值也可能會(huì)有所不同。通過這些值,我們可以為該查詢生成一個(gè)成本比率,每個(gè)成本單位為0.049ms / 5.04單位≈0.01ms/單位。
索引掃描的結(jié)果將傳遞給 Bitmap Heap Scan 操作。在此節(jié)點(diǎn)中,Postgres將獲取別名為t1的tenk1表中行的位置,根據(jù) unique1 100 條件篩選并獲取行。
當(dāng)乘以之前計(jì)算的0.01值時(shí),我們可以得到成本預(yù)期的大概時(shí)間(229.20 - 5.07)*0.01≈2.24ms,同時(shí)每行實(shí)際時(shí)間為除以4后的結(jié)果:0.526ms。這可能是因?yàn)槌杀竟浪闶侨〉纳舷薅皇侨∷行枳x取的行,也或者因?yàn)镽echeck條件總是生效。
和表順序讀取行(a Seq Scan )相比, Bitmap Index Scan 和 Bitmap Heap Scan 關(guān)聯(lián)操作成本要昂貴得多,但是因?yàn)樵谶@種情況下只需要訪問相對(duì)較少的行,所以關(guān)聯(lián)操作最終會(huì)變得更快。通過在獲取行之前將行按照物理順序排序來進(jìn)一步加速,這會(huì)將單獨(dú)獲取的成本降到最低。節(jié)點(diǎn)名稱中的“Bitmap”完成了排序操作。
表掃描的結(jié)果(tenk1表中滿足 unique1 100 條件的那些行)將在讀取時(shí)被插入到內(nèi)存的哈希表中。正如我們從成本中看到的那樣,這根本不需要時(shí)間。
哈希節(jié)點(diǎn)包括散列桶(hash buckets)和批次數(shù)(batches)相關(guān)的信息,以及內(nèi)存使用峰值情況。如果批次 1,則還會(huì)包括未顯示的磁盤使用信息。內(nèi)存占用在100行* 244字節(jié)= 24.4 kB時(shí)是有意義的,它非常接近28kB,我們假定這是哈希鍵本身所占用的內(nèi)存。
接下來,Postgres從別名為t2的tenk2表讀取所有的10000行,并根據(jù)tenk1表行的Hash檢查它們。散列連接意味著將一個(gè)表的行輸入到內(nèi)存中的散列(先前的操作中已構(gòu)建),之后掃描另一個(gè)表的行,并根據(jù)散列表探測(cè)其值以進(jìn)行匹配。在第二行可以看到“匹配”的條件, Hash Cond: (t2.unique2 = t1.unique2) 。請(qǐng)注意,因?yàn)椴樵兪菑膖enk1和tenk2中選擇所有值,所以在散列連接期間每行的寬度加倍。
現(xiàn)在已經(jīng)收集了滿足條件的所有行,可以對(duì)結(jié)果集進(jìn)行排序 Sort Key: t1.fivethous 。
Sort節(jié)點(diǎn)包含排序算法 quicksort 相關(guān)的信息 ,排序是在內(nèi)存中還是在磁盤上完成(這將極大地影響速度),以及排序所需的內(nèi)存/磁盤空間量。
熟悉如何解讀查詢計(jì)劃會(huì)非常有助于優(yōu)化查詢。例如,Seq Scan節(jié)點(diǎn)通常表示添加索引的必要性,讀取速度可能要快得多。
翻譯并編輯,原文出處:
MySQL與PostgreSQL相比哪個(gè)更好
MySQL
MySQL聲稱自己是最流行的開源數(shù)據(jù)庫(kù)。LAMP中的M指的就是MySQL。構(gòu)建在LAMP上的應(yīng)用都會(huì)使用MySQL,如WordPress、Drupal等大多數(shù)php開源程序。MySQL最初是由MySQL AB開發(fā)的,然后在2008年以10億美金的價(jià)格賣給了Sun公司,Sun公司又在2010年被Oracle收購(gòu)。Oracle支持MySQL的多個(gè)版本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費(fèi)下載的,另外一些則是收費(fèi)的。其核心代碼基于GPL許可,由于MySQL被控制在Oracle,社區(qū)擔(dān)心會(huì)對(duì)MySQL的開源會(huì)有影響,所以開發(fā)了一些分支,比如: MariaDB和Percona。
PostgreSQL
PostgreSQL標(biāo)榜自己是世界上最先進(jìn)的開源數(shù)據(jù)庫(kù)。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價(jià)格和傲慢的客服。最初是1985年在加利福尼亞大學(xué)伯克利分校開發(fā)的,作為Ingres數(shù)據(jù)庫(kù)的后繼。PostgreSQL是完全由社區(qū)驅(qū)動(dòng)的開源項(xiàng)目。它提供了單個(gè)完整功能的版本,而不像MySQL那樣提供了多個(gè)不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復(fù)制、修改和重新分發(fā)代碼,只需要提供一個(gè)版權(quán)聲明即可。
MySQL與PostgreSQL的對(duì)比
MySQL的背后是一個(gè)成熟的商業(yè)公司,而PostgreSQL的背后是一個(gè)龐大的志愿開發(fā)組。這使得MySQL的開發(fā)過程更為慎重,而PostgreSQL的反應(yīng)更為迅速。這樣的兩種背景直接導(dǎo)致了各自固有的優(yōu)點(diǎn)和缺點(diǎn)。
PostgreSQL相對(duì)于MySQL的優(yōu)勢(shì)
1)不僅僅是關(guān)系型數(shù)據(jù)庫(kù)
除了存儲(chǔ)正常的數(shù)據(jù)類型外,還支持存儲(chǔ):
array,不管是一位數(shù)組還是多為數(shù)組均支持
json(hStore)和jsonb,相比使用text存儲(chǔ)接送要高效很多
json和jsonb之間的區(qū)別
jsonb和json在更高的層面上看起來幾乎是一樣的,但在存儲(chǔ)實(shí)現(xiàn)上是不同的。
json存儲(chǔ)完的文本,json列會(huì)每次都解析存儲(chǔ)的值,它不支持索引,但你可以為查詢創(chuàng)建表達(dá)式索引。
jsonb存儲(chǔ)的二進(jìn)制格式,避免了重新解析數(shù)據(jù)結(jié)構(gòu)。它支持索引,這意味著你可以不使用指定的索引就能查詢?nèi)魏温窂健?/p>
當(dāng)我們比較寫入數(shù)據(jù)速度時(shí),由于數(shù)據(jù)存儲(chǔ)的方式的原因,jsonb會(huì)比json稍微的慢一點(diǎn)。json列會(huì)每次都解析存儲(chǔ)的值,這意味著鍵的順序要和輸入的時(shí)候一樣。但jsonb不同,以二進(jìn)制格式存儲(chǔ)且不保證鍵的順序。因此,如果你有軟件需要依賴鍵的順序,jsonb可能不是你的應(yīng)用的最佳選擇。使用jsonb的優(yōu)勢(shì)還在于你可以輕易的整合關(guān)系型數(shù)據(jù)和非關(guān)系型數(shù)據(jù), PostgreSQL對(duì)于mongodb這類的基于文檔的數(shù)據(jù)庫(kù)是個(gè)不小的威脅,畢竟如果一個(gè)表中只有一列數(shù)據(jù)的類型是半結(jié)構(gòu)化的,沒有必要為了遷就它而整個(gè)表的設(shè)計(jì)采用schemaless的結(jié)構(gòu)。
2)支持地理信息處理擴(kuò)展
PostGIS 為PostgreSQL提供了存儲(chǔ)空間地理數(shù)據(jù)的支持,使PostgreSQL成為了一個(gè)空間數(shù)據(jù)庫(kù),能夠進(jìn)行空間數(shù)據(jù)管理、數(shù)量測(cè)量與幾何拓?fù)浞治?。在功能上,和MYSQL對(duì)比,PostGIS具有下列優(yōu)勢(shì):
O2O業(yè)務(wù)場(chǎng)景中的LBS業(yè)務(wù)使用PostgreSQL + PostGIS有無法比擬的優(yōu)勢(shì)。
3)可以快速構(gòu)建REST API
PostgREST 可以方便的為任何 PostgreSQL 數(shù)據(jù)庫(kù)提供完全的 RESTful API 服務(wù)。
4)支持樹狀結(jié)構(gòu)
支持R-trees這樣可擴(kuò)展的索引類型,可以更方便地處理一些特殊數(shù)據(jù)。MySQL 處理樹狀的設(shè)計(jì)會(huì)很復(fù)雜, 而且需要寫很多代碼, 而 PostgreSQL 可以高效處理樹結(jié)構(gòu)。
5)有極其強(qiáng)悍的 SQL 編程能力
支持遞歸,有非常豐富的統(tǒng)計(jì)函數(shù)和統(tǒng)計(jì)語(yǔ)法支持。
MySQL:支持 CREATE PROCEDURE 和 CREATE FUNCTION 語(yǔ)句。存儲(chǔ)過程可以用 SQL 和 C++ 編寫。用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。
PostgreSQL:沒有單獨(dú)的存儲(chǔ)過程,都是通過函數(shù)實(shí)現(xiàn)的。用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語(yǔ)言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
6)外部數(shù)據(jù)源支持
可以把 70 種外部數(shù)據(jù)源 (包括 Mysql, Oracle, CSV, hadoop …) 當(dāng)成自己數(shù)據(jù)庫(kù)中的表來查詢。Postgres有一個(gè)針對(duì)這一難題的解決方案:一個(gè)名為“外部數(shù)據(jù)封裝器(Foreign Data Wrapper,F(xiàn)DW)”的特性。該特性最初由PostgreSQL社區(qū)領(lǐng)袖Dave Page四年前根據(jù)SQL標(biāo)準(zhǔn)SQL/MED(SQL Management of External Data)開發(fā)。FDW提供了一個(gè)SQL接口,用于訪問遠(yuǎn)程數(shù)據(jù)存儲(chǔ)中的遠(yuǎn)程大數(shù)據(jù)對(duì)象,使DBA可以整合來自不相關(guān)數(shù)據(jù)源的數(shù)據(jù),將它們存入Postgres數(shù)據(jù)庫(kù)中的一個(gè)公共模型。這樣,DBA就可以訪問和操作其它系統(tǒng)管理的數(shù)據(jù),就像在本地Postgres表中一樣。例如,使用FDW for MongoDB,數(shù)據(jù)庫(kù)管理員可以查詢來自文檔數(shù)據(jù)庫(kù)的數(shù)據(jù),并使用SQL將它與來自本地Postgres表的數(shù)據(jù)相關(guān)聯(lián)。借助這種方法,用戶可以將數(shù)據(jù)作為行、列或JSON文檔進(jìn)行查看、排序和分組。他們甚至可以直接從Postgres向源文檔數(shù)據(jù)庫(kù)寫入(插入、更細(xì)或刪除)數(shù)據(jù),就像一個(gè)一體的無縫部署。也可以對(duì)Hadoop集群或MySQL部署做同樣的事。FDW使Postgres可以充當(dāng)企業(yè)的中央聯(lián)合數(shù)據(jù)庫(kù)或“Hub”。
7)沒有字符串長(zhǎng)度限制
一般關(guān)系型數(shù)據(jù)庫(kù)的字符串有限定長(zhǎng)度8k左右,無限長(zhǎng) TEXT 類型的功能受限,只能作為外部大數(shù)據(jù)訪問。而PostgreSQL的 TEXT 類型可以直接訪問,SQL語(yǔ)法內(nèi)置正則表達(dá)式,可以索引,還可以全文檢索,或使用xml xpath。MySQL 的各種text字段有不同的限制,要手動(dòng)區(qū)分 small text, middle text, large text… PostgreSQL 沒有這個(gè)限制,text 能支持各種大小。
8)支持圖結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)
沒有具體使用過,具體可以自己搜索下。參考鏈接:
9)支持窗口函數(shù)
窗口函數(shù)提供跨行相關(guān)的當(dāng)前查詢行集執(zhí)行計(jì)算的能力。僅當(dāng)調(diào)用跟著OVER子句的聚集函數(shù),作為窗口函數(shù);否則它們作為常規(guī)的聚合函數(shù)。窗口也是一種分組,但和 group by 的分組不同。窗口,可以提供分組之外,還可以執(zhí)行對(duì)每個(gè)窗口進(jìn)行計(jì)算??梢韵嘞癯墒莋roup by 后,然后對(duì)每個(gè)分組進(jìn)行計(jì)算,而不像Group by ,只是單純地分組。MySQL 不支持 OVER 子句, 而PostgreSQL支持。OVER 子句能簡(jiǎn)單的解決 “每組取 top 5” 的這類問題。MySQL支持的SQL語(yǔ)法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。不支持遞歸查詢、通用表表達(dá)式(Oracle的with 語(yǔ)句)或者窗口函數(shù)(分析函數(shù))。
10)對(duì)索引的支持更強(qiáng)
PostgreSQL 的可以使用函數(shù)和條件索引,這使得PostgreSQL數(shù)據(jù)庫(kù)的調(diào)優(yōu)非常靈活,mysql就沒有這個(gè)功能,條件索引在web應(yīng)用中很重要。對(duì)于索引類型:
MySQL:取決于存儲(chǔ)引擎。MyISAM:BTREE,InnoDB:BTREE。
PostgreSQL:支持 B-樹、哈希、R-樹和 Gist 索引。
InnoDB的表和索引都是按相同的方式存儲(chǔ)。也就是說表都是索引組織表。這一般要求主鍵不能太長(zhǎng)而且插入時(shí)的主鍵最好是按順序遞增,否則對(duì)性能有很大影響。PostgreSQL不存在這個(gè)問題。
索引類型方面,MySQL取決于存儲(chǔ)引擎。MyISAM:BTREE,InnoDB:BTREE。PostgreSQL支持 B-樹、哈希、R-樹和 Gist 索引。
11)集群支持更好
Mysql Cluster可能與你的想象有較大差異。開源的cluster軟件較少。復(fù)制(Replication)功能是異步的并且有很大的局限性。例如,它是單線程的(single-threaded),因此一個(gè)處理能力更強(qiáng)的Slave的恢復(fù)速度也很難跟上處理能力相對(duì)較慢的Master。
PostgreSQL有豐富的開源cluster軟件支持。plproxy 可以支持語(yǔ)句級(jí)的鏡像或分片,slony 可以進(jìn)行字段級(jí)的同步設(shè)置,standby 可以構(gòu)建WAL文件級(jí)或流式的讀寫分離集群,同步頻率和集群策略調(diào)整方便,操作非常簡(jiǎn)單。
另外,PostgreSQL的主備復(fù)制屬于物理復(fù)制,相對(duì)于MySQL基于binlog的邏輯復(fù)制,數(shù)據(jù)的一致性更加可靠,復(fù)制性能更高,對(duì)主機(jī)性能的影響也更小。對(duì)于WEB應(yīng)用來說,復(fù)制的特性很重要,mysql到現(xiàn)在也是異步復(fù)制,pgsql可以做到同步,異步,半同步復(fù)制。還有mysql的同步是基于binlog復(fù)制,類似oracle golden gate,是基于stream的復(fù)制,做到同步很困難,這種方式更加適合異地復(fù)制,pgsql的復(fù)制基于wal,可以做到同步復(fù)制。同時(shí),pgsql還提供stream復(fù)制。
12)事務(wù)隔離做的更好
MySQL 的事務(wù)隔離級(jí)別 repeatable read 并不能阻止常見的并發(fā)更新, 得加鎖才可以, 但悲觀鎖會(huì)影響性能, 手動(dòng)實(shí)現(xiàn)樂觀鎖又復(fù)雜. 而 PostgreSQL 的列里有隱藏的樂觀鎖 version 字段, 默認(rèn)的 repeatable read 級(jí)別就能保證并發(fā)更新的正確性, 并且又有樂觀鎖的性能。
13)對(duì)于字符支持更好一些
MySQL 里需要 utf8mb4 才能顯示 emoji 的坑, PostgreSQL 沒這個(gè)坑。
14)對(duì)表連接支持較完整
對(duì)表連接支持較完整,MySQL只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。PostgreSQL都支持。
15)存儲(chǔ)方式支持更大的數(shù)據(jù)量
PostgreSQL主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數(shù)據(jù)量。
16)時(shí)間精度更高
MySQL對(duì)于時(shí)間、日期、間隔等時(shí)間類型沒有秒以下級(jí)別的存儲(chǔ)類型,而PostgreSQL可以精確到秒以下。
17)優(yōu)化器的功能較完整
MySQL對(duì)復(fù)雜查詢的處理較弱,查詢優(yōu)化器不夠成熟,explain看執(zhí)行計(jì)劃的結(jié)果簡(jiǎn)單。性能優(yōu)化工具與度量信息不足。
PostgreSQL很強(qiáng)大的查詢優(yōu)化器,支持很復(fù)雜的查詢處理。explain返回豐富的信息。提供了一些性能視圖,可以方便的看到發(fā)生在一個(gè)表和索引上的select、delete、update、insert統(tǒng)計(jì)信息,也可以看到cache命中率。網(wǎng)上有一個(gè)開源的pgstatspack工具。
18)序列支持更好
MySQL 不支持多個(gè)表從同一個(gè)序列中取 id, 而 PostgreSQL 可以。
19)對(duì)子查詢支持更好
對(duì)子查詢的支持。雖然在很多情況下在SQL語(yǔ)句中使用子查詢效率低下,而且絕大多數(shù)情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時(shí)候仍然不可避免。而且使用子查詢的SQL語(yǔ)句與使用帶條件的多表連接相比具有更高的程序可讀性。幾乎任何數(shù)據(jù)庫(kù)的子查詢 (subquery) 性能都比 MySQL 好。
20)增加列更加簡(jiǎn)單
MySQL表增加列,基本上是重建表和索引,會(huì)花很長(zhǎng)時(shí)間。PostgreSQL表增加列,只是在數(shù)據(jù)字典中增加表定義,不會(huì)重建表.
MySQL相對(duì)于PostgreSQL的優(yōu)勢(shì)
1)MySQL比PostgreSQL更流行
流行對(duì)于一個(gè)商業(yè)軟件來說,也是一個(gè)很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗(yàn),意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。易用,很容易安裝。第三方工具,包括可視化工具,讓用戶能夠很容易入門。
2)回滾實(shí)現(xiàn)更優(yōu)
innodb的基于回滾段實(shí)現(xiàn)的MVCC機(jī)制,相對(duì)PG新老數(shù)據(jù)一起存放的基于XID的MVCC機(jī)制,是占優(yōu)的。新老數(shù)據(jù)一起存放,需要定時(shí)觸發(fā)VACUUM,會(huì)帶來多余的IO和數(shù)據(jù)庫(kù)對(duì)象加鎖開銷,引起數(shù)據(jù)庫(kù)整體的并發(fā)能力下降。而且VACUUM清理不及時(shí),還可能會(huì)引發(fā)數(shù)據(jù)膨脹。
3)在Windows上運(yùn)行更可靠
與PostgreSQL相比,MySQL更適宜在Windows環(huán)境下運(yùn)行。MySQL作為一個(gè)本地的Windows應(yīng)用程序運(yùn)行(在 NT/Win2000/WinXP下,是一個(gè)服務(wù)),而PostgreSQL是運(yùn)行在Cygwin模擬環(huán)境下。PostgreSQL在Windows下運(yùn)行沒有MySQL穩(wěn)定,應(yīng)該是可以想象的。
4)線程模式相比進(jìn)程模式的優(yōu)勢(shì)
MySQL使用了線程,而PostgreSQL使用的是進(jìn)程。在不同線程之間的環(huán)境轉(zhuǎn)換和訪問公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多。
進(jìn)程模式對(duì)多CPU利用率比較高。進(jìn)程模式共享數(shù)據(jù)需要用到共享內(nèi)存,而線程模式數(shù)據(jù)本身就是在進(jìn)程空間內(nèi)都是共享的,不同線程訪問只需要控制好線程之間的同步。
線程模式對(duì)資源消耗比較少。所以MySQL能支持遠(yuǎn)比PostgreSQL多的更多的連接。但PostgreSQL中有優(yōu)秀的連接池軟件軟件,如pgbouncer和pgpool,所以通過連接池也可以支持很多的連接。
5)權(quán)限設(shè)置上更加完善
MySQL在權(quán)限系統(tǒng)上比PostgreSQL某些方面更為完善。PostgreSQL只支持對(duì)于每一個(gè)用戶在一個(gè)數(shù)據(jù)庫(kù)上或一個(gè)數(shù)據(jù)表上的 INSERT、SELECT和UPDATE/DELETE的授權(quán),而MySQL允許你定義一整套的不同的數(shù)據(jù)級(jí)、表級(jí)和列級(jí)的權(quán)限。對(duì)于列級(jí)的權(quán)限, PostgreSQL可以通過建立視圖,并確定視圖的權(quán)限來彌補(bǔ)。MySQL還允許你指定基于主機(jī)的權(quán)限,這對(duì)于目前的PostgreSQL是無法實(shí)現(xiàn)的,但是在很多時(shí)候,這是有用的。
6)存儲(chǔ)引擎插件化機(jī)制
MySQL的存儲(chǔ)引擎插件化機(jī)制,使得它的應(yīng)用場(chǎng)景更加廣泛,比如除了innodb適合事務(wù)處理場(chǎng)景外,myisam適合靜態(tài)數(shù)據(jù)的查詢場(chǎng)景。
7)適應(yīng)24/7運(yùn)行
MySQL可以適應(yīng)24/7運(yùn)行。在絕大多數(shù)情況下,你不需要為MySQL運(yùn)行任何清除程序。PostgreSQL目前仍不完全適應(yīng)24/7運(yùn)行,這是因?yàn)槟惚仨毭扛粢欢螘r(shí)間運(yùn)行一次VACUUM。
8)更加試用于簡(jiǎn)單的場(chǎng)景
PostgreSQL只支持堆表,不支持索引組織表,Innodb只支持索引組織表。
索引組織表的優(yōu)勢(shì):表內(nèi)的數(shù)據(jù)就是按索引的方式組織,數(shù)據(jù)是有序的,如果數(shù)據(jù)都是按主鍵來訪問,那么訪問數(shù)據(jù)比較快。而堆表,按主鍵訪問數(shù)據(jù)時(shí),是需要先按主鍵索引找到數(shù)據(jù)的物理位置。
索引組織表的劣勢(shì):索引組織表中上再加其它的索引時(shí),其它的索引記錄的數(shù)據(jù)位置不再是物理位置,而是主鍵值,所以對(duì)于索引組織表來說,主鍵的值不能太大,否則占用的空間比較大。
對(duì)于索引組織表來說,如果每次在中間插入數(shù)據(jù),可能會(huì)導(dǎo)致索引分裂,索引分裂會(huì)大大降低插入的性能。所以對(duì)于使用innodb來說,我們一般最好讓主鍵是一個(gè)無意義的序列,這樣插入每次都發(fā)生在最后,以避免這個(gè)問題。
由于索引組織表是按一個(gè)索引樹,一般它訪問數(shù)據(jù)塊必須按數(shù)據(jù)塊之間的關(guān)系進(jìn)行訪問,而不是按物理塊的訪問數(shù)據(jù)的,所以當(dāng)做全表掃描時(shí)要比堆表慢很多,這可能在OLTP中不明顯,但在數(shù)據(jù)倉(cāng)庫(kù)的應(yīng)用中可能是一個(gè)問題。
總結(jié)
MySQL從一開始就沒有打算做所有事情,因而它在功能方面有一定的局限性,并不能滿足一些先進(jìn)應(yīng)用程序的要求。MySQL對(duì)某些功能(例如引用、事務(wù)、審計(jì)等)的實(shí)現(xiàn)方式使得它與其他的關(guān)系型數(shù)據(jù)庫(kù)相比缺少了一些可靠性。對(duì)于簡(jiǎn)單繁重的讀取操作,使用PostgreSQL可能有點(diǎn)小題大做,同時(shí)性能也比MySQL這樣的同類產(chǎn)品要差。除非你需要絕對(duì)的數(shù)據(jù)完整性,ACID遵從性或者設(shè)計(jì)復(fù)雜,否則PostgreSQL對(duì)于簡(jiǎn)單的場(chǎng)景而言有點(diǎn)多余。
如何你確定只在MySQL和PostgreSQL中進(jìn)行選擇,以下規(guī)則總是有效的:
如果你的操作系統(tǒng)是Windows,你應(yīng)該使用MySQL。
當(dāng)絕對(duì)需要可靠性和數(shù)據(jù)完整性的時(shí)候,PostgreSQL是更好的選擇。
如果需要數(shù)據(jù)庫(kù)執(zhí)行定制程序,那么可擴(kuò)展的PostgreSQL是更好的選擇。
你的應(yīng)用處理的是地理數(shù)據(jù),由于R-TREES的存在,你應(yīng)該使用PostgreSQL。
如果你對(duì)數(shù)據(jù)庫(kù)并不了十分了解,甚至不知道事務(wù)、存儲(chǔ)過程等究竟是什么,你應(yīng)該使用MySQL。
三分鐘!徹底搞懂PostgreSQL 和 MySQL 區(qū)別之分
PostgreSQL 和 MySQL 是將數(shù)據(jù)組織成表的關(guān)系數(shù)據(jù)庫(kù)。這些表可以根據(jù)每個(gè)表共有的數(shù)據(jù)鏈接或關(guān)聯(lián)。關(guān)系數(shù)據(jù)庫(kù)使您的企業(yè)能夠更好地了解可用數(shù)據(jù)之間的關(guān)系,并幫助獲得新的見解以做出更好的決策或發(fā)現(xiàn)新的機(jī)會(huì)。
PostgreSQL 和 MySQL 都依賴于 SQL(結(jié)構(gòu)化查詢語(yǔ)言),這是與管理系統(tǒng)交互的標(biāo)準(zhǔn)語(yǔ)言。SQL 允許使用具有簡(jiǎn)單結(jié)構(gòu)的幾行源代碼連接表,大多數(shù)非技術(shù)員工可以快速學(xué)習(xí)。
使用 SQL,分析師不需要知道訂單表在磁盤上的位置、如何執(zhí)行查找以查找特定訂單或如何連接訂單表和客戶表。數(shù)據(jù)庫(kù)編譯查詢并計(jì)算出正確的數(shù)據(jù)點(diǎn)。
MySQL 和 PostgreSQL 都支持 JavaScript Object Notation (JSON) 存儲(chǔ)和傳輸數(shù)據(jù),盡管 PostgreSQL 也支持 JSONB,這是 JSON 的二進(jìn)制版本,它消除了鍵的重復(fù)和無關(guān)的空格。
除了傳統(tǒng)的支持機(jī)制外,這兩個(gè)數(shù)據(jù)庫(kù)都提供強(qiáng)大的社區(qū)支持。
PostgreSQL,也稱為 Postgres,是一種開源關(guān)系數(shù)據(jù)庫(kù),因其可靠性、靈活性和對(duì)開放技術(shù)標(biāo)準(zhǔn)的支持而享有盛譽(yù)。PostgreSQL 支持非關(guān)系和關(guān)系數(shù)據(jù)類型。它被稱為當(dāng)今可用的最兼容、最穩(wěn)定和最成熟的關(guān)系數(shù)據(jù)庫(kù)之一,并且可以輕松處理復(fù)雜的查詢。
PostgreSQL 的特性包括:
PostgreSQL 這是一個(gè)“一刀切”的解決方案,適用于許多尋求經(jīng)濟(jì)高效的方法來改進(jìn)其數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS) 的企業(yè)。它具有足夠的可擴(kuò)展性和多功能性,可以通過強(qiáng)大的擴(kuò)展生態(tài)系統(tǒng)快速支持各種專業(yè)用例,涵蓋時(shí)間序列數(shù)據(jù)類型和地理空間分析等工作。作為開源數(shù)據(jù)庫(kù)解決方案構(gòu)建的 PostgreSQL 完全不受許可限制、供應(yīng)商鎖定的可能性或過度部署的風(fēng)險(xiǎn)。PostgreSQL 通過對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (ORDBMS) 進(jìn)行管理。
PostgreSQL 負(fù)責(zé)管理業(yè)務(wù)活動(dòng)的在線事務(wù)處理 (OLTP)協(xié)議的企業(yè)數(shù)據(jù)庫(kù)管理員提供了理想的解決方案,包括電子商務(wù)、客戶關(guān)系管理系統(tǒng) (CRM) 和財(cái)務(wù)分類帳。它也是管理接收、創(chuàng)建和生成的數(shù)據(jù)分析的理想選擇。
這些是 PostgreSQL 的一些主要優(yōu)點(diǎn):
MySQL — 一種快速、可靠、可擴(kuò)展且易于使用的開源關(guān)系數(shù)據(jù)庫(kù)系統(tǒng) — 旨在處理關(guān)鍵任務(wù)、高負(fù)載的生產(chǎn)應(yīng)用程序。它是一種常見且易于啟動(dòng)的數(shù)據(jù)庫(kù),內(nèi)存、磁盤和 CPU 利用率較低,有關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDMS) 管理。MySQL Community Edition 是一個(gè)由活躍的在線社區(qū)支持的免費(fèi)下載版本。
MySQL 功能包括所有 SQL 標(biāo)準(zhǔn)命令以及事務(wù)和 ACID 合規(guī)性(代表原子性、一致性、隔離性和持久性)。
兩個(gè)最常見的關(guān)系數(shù)據(jù)庫(kù)是什么 MySQL 和 Oracle。MySQL 不是 SQL Server 的同義詞,SQL Server 是 Microsoft 許可產(chǎn)品,與 MAC OS X 缺乏兼容性。
MariaDB 經(jīng)常與 MySQL 混淆,它是 MySQL 的一個(gè)開源分支,速度更快,提供更多存儲(chǔ)引擎 (12),但功能有限。MySQL 和 MariaDB 使用的存儲(chǔ)引擎都是 InnoDB。InnoDB 提供標(biāo)準(zhǔn)的 ACID 兼容特性。與 MySQL 不同,MariaDB 不支持?jǐn)?shù)據(jù)屏蔽或動(dòng)態(tài)列表。
MySQL 通常用作 Web 數(shù)據(jù)庫(kù)來存儲(chǔ)各種信息類型,從單個(gè)信息數(shù)據(jù)點(diǎn)到為組織提供的產(chǎn)品或服務(wù)的完整列表。它是LAMP(Linux 操作系統(tǒng)、Apache HTTP 服務(wù)器、MySQL RDBMS 和 PHP 編程語(yǔ)言)的基礎(chǔ)組件,這是一種有助于創(chuàng)建API、Web 應(yīng)用程序和網(wǎng)站的軟件堆棧模型。
MySQL Workbench 是一個(gè)單一的、集成的可視化 SQL 平臺(tái),用于 MySQL 數(shù)據(jù)庫(kù)的創(chuàng)建、開發(fā)、設(shè)計(jì)和管理。
MySQL 為市場(chǎng)提供了許多好處,包括:
PostgreSQL 和 MySQL 之間有很多不同之處。特性、功能和優(yōu)勢(shì)方面的一些差異如下:
總之,PostgreSQL 和 MySQL 都有不同的用途,它們之間的選擇取決于企業(yè)目標(biāo)和資源。一般來說,PostgreSQL 是一個(gè)更強(qiáng)大、更高級(jí)的數(shù)據(jù)庫(kù)管理系統(tǒng),非常適合需要在大型環(huán)境中快速執(zhí)行復(fù)雜查詢的組織。但是,對(duì)于預(yù)算和空間更受限制的公司來說,MySQL 是一個(gè)理想的解決方案。
當(dāng)前名稱:包含postgresql分支的詞條
當(dāng)前地址:http://biofuelwatch.net/article/dscdpoc.html


咨詢
建站咨詢
