{eval=Array;=+count(Array);}
如果把Oracle DBA轉(zhuǎn)到PostgreSQL數(shù)據(jù)庫上是比較容易的,畢竟PostgreSQL數(shù)據(jù)庫與Oracle數(shù)據(jù)庫很相似。
PostgreSQL幾乎支持所有的SQL標(biāo)準(zhǔn),支持類型相當(dāng)豐富。PostgreSQL數(shù)據(jù)庫的源代碼要比MySQL數(shù)據(jù)庫的源代碼更容易讀懂,如果團(tuán)隊(duì)的C語言能力比較強(qiáng)的話,就可以在PostgreSQL數(shù)據(jù)庫上做開發(fā),比方說實(shí)現(xiàn)類似greenplum的系統(tǒng),這樣也能與現(xiàn)在的分布式趨勢(shì)接軌。
為了說明PostgreSQL的功能,下面從“從Oracle遷移到Mysql之前必須知道的50件事”簡(jiǎn)要對(duì)比一下PostgreSQL數(shù)據(jù)庫與MySQL數(shù)據(jù)庫之間的差異。
1、對(duì)子查詢的優(yōu)化表現(xiàn)不佳。(PostgreSQL可解決)
2、 對(duì)復(fù)雜查詢的處理較弱。(PostgreSQL可解決)
3、 查詢優(yōu)化器不夠成熟。(PostgreSQL可解決)
PostgreSQL完全支持SQL-92標(biāo)準(zhǔn),對(duì)SQL的支持也很全面,可以支持復(fù)雜的SQL查詢。
4、 性能優(yōu)化工具與度量信息不足。(PostgreSQL可解決)
PostgreSQL提供了執(zhí)行計(jì)劃和詳細(xì)的cost值,可以方便看到SQL的執(zhí)行效率。
5、 審計(jì)功能相對(duì)較弱。
6、 安全功能不成熟,沒有用戶組與角色的概念,沒有回收權(quán)限的功能(僅可以授予權(quán)限)。當(dāng)一個(gè)用戶從不同的主機(jī)/網(wǎng)絡(luò)以同樣的用戶名/密碼登錄之后,可能被當(dāng)作完全不同的用戶來處理,沒有類似于Oracle的內(nèi)置的加密功能。
7、 身份驗(yàn)證功能是完全內(nèi)置的,不支持LDAP、Active Directory或其它類似的外部身份驗(yàn)證功能。
8、 Mysql Cluster可能與你想象的有較大差異。
9、 存儲(chǔ)過程與觸發(fā)器的功能有限。(PostgreSQL可解決)
PostgreSQL提供了完善的存儲(chǔ)過程和觸發(fā)器支持。
10、 垂直擴(kuò)展性較弱。
11、 不支持MPP(大規(guī)模并行處理)。(PostgreSQL可解決)
PostgreSQL是類似Oracle數(shù)據(jù)庫的多進(jìn)程架構(gòu),而不像MySQL是多線程的架構(gòu),所以能支持MPP。
12、 支持SMP(對(duì)稱多處理器),但是如果每個(gè)處理器超過4或8個(gè)核(core)時(shí),Mysql的擴(kuò)展性表現(xiàn)較差。
13、 對(duì)于時(shí)間、日期、間隔等時(shí)間類型沒有秒以下級(jí)別的存儲(chǔ)類型。
14、 可用來編寫存儲(chǔ)過程、觸發(fā)器、計(jì)劃事件以及存儲(chǔ)函數(shù)的語言功能較弱。
15、 沒有基于回滾(roll-back)的恢復(fù)功能,只有前滾(roll-forward)的恢復(fù)功能。
16、 不支持快照功能。
17、 不支持?jǐn)?shù)據(jù)庫鏈(database link)。有一種叫做Federated的存儲(chǔ)引擎可以作為一個(gè)中轉(zhuǎn)將查詢語句傳遞到遠(yuǎn)程服務(wù)器的一個(gè)表上,不過,它功能很粗糙并且漏洞很多。
18、 數(shù)據(jù)完整性檢查非常薄弱,即使是基本的完整性約束,也往往不能執(zhí)行。(PostgreSQL可解決)
PostgreSQL提供完善的數(shù)據(jù)完整性檢查機(jī)制,支持外鍵。
19、 優(yōu)化查詢語句執(zhí)行計(jì)劃的優(yōu)化器提示非常少。
20、 只有一種表連接類型:嵌套循環(huán)連接(nested-loop),不支持排序-合并連接(sort-merge join)與散列連接(hash join)。(PostgreSQL可解決)
PostgreSQL則支持這些表連接類型。
21、 大部分查詢只能使用表上的單一索引;在某些情況下,會(huì)存在使用多個(gè)索引的查詢,但是查詢優(yōu)化器通常會(huì)低估其成本,它們常常比表掃描還要慢。(PostgreSQL可解決)
PostgreSQL數(shù)據(jù)不存在這個(gè)問題,假設(shè)表T的兩個(gè)字段col1的col2上有兩個(gè)索引,idx_1和idx_2,那么select * from t where col1=:a and col2=:b;查詢時(shí),PostgreSQL數(shù)據(jù)庫有可能把這個(gè)查詢轉(zhuǎn)化為select * from t where col1=:a intersect select * from t where col2=:b,這樣兩個(gè)索引都可以使用上。
22、不支持位圖索引(bitmap index)。每種存儲(chǔ)引擎都支持不同類型的索引。大部分存儲(chǔ)引擎都支持B-Tree索引。
23、 管理工具較少,功能也不夠成熟。
24、沒有成熟能夠令人滿意的IDE工具與調(diào)試程序。可能不得不在文本編輯器中編寫存儲(chǔ)過程,并且通過往表(調(diào)試日志表)中插入記錄的方式來做調(diào)試。
25、 每個(gè)表都可以使用一種不同的存儲(chǔ)引擎。(PostgreSQL可解決)
26、 每個(gè)存儲(chǔ)引擎在行為表現(xiàn)、特性以及功能上都可能有很大差異。(PostgreSQL可解決)
27、大部分存儲(chǔ)引擎都不支持外鍵。(PostgreSQL可解決)
28、默認(rèn)的存儲(chǔ)引擎(MyISAM)不支持事務(wù),并且很容易損壞。(PostgreSQL可解決)
29、最先進(jìn)最流行的存儲(chǔ)引擎InnoDB由Oracle擁有。(PostgreSQL可解決)
30、有些執(zhí)行計(jì)劃只支持特定的存儲(chǔ)引擎。特定類型的Count查詢,在這種存儲(chǔ)引擎中執(zhí)行很快,在另外一種存儲(chǔ)引擎中可能會(huì)很慢。(PostgreSQL可解決)
PostgreSQL只有一種存儲(chǔ)引擎,所以不存在上面的情況。而PostgreSQL支持完善的事務(wù)。
31、執(zhí)行計(jì)劃并不是全局共享的,,僅僅在連接內(nèi)部是共享的。
32、全文搜索功能有限, 只適用于非事務(wù)性存儲(chǔ)引擎。 Ditto用于地理信息系統(tǒng)/空間類型和查詢。(PostgreSQL可解決)
PostgreSQL數(shù)據(jù)庫支持全文搜索,支持更多類型的索引,如B-tree,R-tree, Hash, GiST, GIN,R-tree,GIST,GIN索引可用于空間類型和查詢。
33、沒有資源控制。一個(gè)完全未經(jīng)授權(quán)的用戶可以毫不費(fèi)力地耗盡服務(wù)器的所有內(nèi)存并使其崩潰,或者可以耗盡所有CPU資源。
34、沒有集成商業(yè)智能(business intelligence), OLAP **數(shù)據(jù)集等軟件包。
35、 沒有與Grid Control類似的工具
36、 沒有類似于RAC的功能。如果你問”如何使用Mysql來構(gòu)造RAC”,只能說你問錯(cuò)了問題。
37、不支持用戶自定義類型或域(domain)。(PostgreSQL可解決)
PostgreSQL支持豐富的類型,同時(shí)也支持自定義類型。
38、 每個(gè)查詢支持的連接的數(shù)量最大為61。
39、MySQL支持的SQL語法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。不支持遞歸查詢、通用表表達(dá)式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。支持部分類似于Merge或者類似特性的SQL語法擴(kuò)展,不過相對(duì)于Oracle來講功能非常簡(jiǎn)單。(PostgreSQL可解決)
這些PostgreSQL數(shù)據(jù)庫都支持,如窗口函數(shù)。
40、不支持功能列(基于計(jì)算或者表達(dá)式的列,Oracle11g 開始支持計(jì)算列,以及早期版本就支持虛列(rownum,rowid))。
41、不支持函數(shù)索引,只能創(chuàng)建基于具體列的索引。(PostgreSQL可解決)
PostgreSQL支持函數(shù)索引。
42、不支持物化視圖。
43、不同的存儲(chǔ)引擎之間,統(tǒng)計(jì)信息差別很大,并且所有的存儲(chǔ)引擎支持的統(tǒng)計(jì)信息都只支持簡(jiǎn)單的基數(shù)(cardinality)與一定范圍內(nèi)的記錄數(shù)(rows-in-a-range)。 換句話說,數(shù)據(jù)分布統(tǒng)計(jì)信息是有限的。更新統(tǒng)計(jì)信息的機(jī)制也不多。
44、沒有內(nèi)置的負(fù)載均衡與故障切換機(jī)制。
45、 復(fù)制(Replication)功能是異步的,并且有很大的局限性。例如,它是單線程的(single-threaded),因此一個(gè)處理能力更強(qiáng)的Slave的恢復(fù)速度也很難跟上處理能力相對(duì)較慢的Master。
46、 Cluster并不如想象的那么完美?;蛟S我已經(jīng)提過這一點(diǎn),但是這一點(diǎn)值得再說一遍。
47、數(shù)據(jù)字典(INFORMATION_SCHEMA)功能很有限,并且訪問速度很慢(在繁忙的系統(tǒng)上還很容易發(fā)生崩潰)。
48、不支持在線的Alter Table操作。
49、 不支持Sequence。(PostgreSQL可解決)
PostgreSQL支持sequence。
50、 類似于ALTER TABLE或CREATE TABLE一類的操作都是非事務(wù)性的。它們會(huì)提交未提交的事務(wù),并且不能回滾也不能做災(zāi)難恢復(fù)。Schame被保存在文件系統(tǒng)上,這一點(diǎn)與它使用的存儲(chǔ)引擎無關(guān)。(PostgreSQL可解決)
PostgreSQL不存在這個(gè)問題。
以上個(gè)人淺見,歡迎批評(píng)指正。
認(rèn)同我的看法,請(qǐng)點(diǎn)個(gè)贊再走,感謝!
喜歡我的,請(qǐng)關(guān)注我,再次感謝!
很高興能夠看到和回答這個(gè)問題!
選擇適合企業(yè)的數(shù)據(jù)庫需要相當(dāng)?shù)囊?guī)劃,因?yàn)槲磥淼倪x擇將是困難的,而且成本很高。 因此,必須在第一時(shí)間做出正確的選擇。 MySQL和PostgreSQL是兩個(gè)最流行的開源數(shù)據(jù)庫,這往往是數(shù)據(jù)庫管理員托管的最后兩個(gè)數(shù)據(jù)庫。 下面檔將對(duì)兩種開源數(shù)據(jù)庫進(jìn)行分析和比較,幫助您選擇符合您操作需求的數(shù)據(jù)庫。
可靠性是PostgreSQL的主要目標(biāo)之一。 我們都知道PostgreSQL的功能很強(qiáng)大,而且基礎(chǔ)很好,能夠支持任務(wù)和關(guān)鍵任務(wù)。 PostgreSQL提供高質(zhì)量的文檔服務(wù),包括完整的免費(fèi)在線手冊(cè)和舊版手冊(cè)的存檔。 社區(qū)支持非常有效,獨(dú)立公司也提供了商業(yè)支持。 Mysql和pgsql出現(xiàn)在一些高流量的網(wǎng)站上,可用于大型分布式系統(tǒng),所有支持服務(wù),支持有效性指數(shù)。 Mysql支持嵌入式應(yīng)用,pgsql仍然支持傳統(tǒng)的B/S架構(gòu)。 MySQL可以產(chǎn)生快速的讀取訪問和各種查詢,但具有復(fù)雜的屬性和數(shù)據(jù)完整性檢查,并不完全令人滿意:pgsql是業(yè)務(wù)類的,針對(duì)MyISAM硬盤上的mysql開發(fā)的,因?yàn)楹苌龠M(jìn)行數(shù)據(jù)完整性檢查,所以對(duì)于敏感數(shù)據(jù)、快節(jié)奏、高讀寫要求的數(shù)據(jù),ACID支持InnoDB功能是最好的選擇,而且pgsql是一個(gè)完全集成的數(shù)據(jù)庫,只有一個(gè)存儲(chǔ)引擎。
PostgreSQL對(duì)數(shù)據(jù)庫的訪問提供了強(qiáng)大的安全控制,不僅使用了Kerberos和OpenSSL等先進(jìn)的企業(yè)安全工具,還根據(jù)業(yè)務(wù)需求定制了認(rèn)證方法,以確保數(shù)據(jù)質(zhì)量。 數(shù)據(jù)庫管理員最鐘愛的功能是時(shí)間恢(PITR),它提供了靈活性和高可用性,允許你快速創(chuàng)建故障轉(zhuǎn)移服務(wù)器,在特定時(shí)間快速捕獲和恢復(fù)。 但這還不是全部。 該項(xiàng)目提供了各種PostgreSQL管理技術(shù),使PostgreSQL能夠提供高可用性、負(fù)載均衡和同步,這樣你就可以使用這些功能來滿足你的特定需求。 Pgsql有非常強(qiáng)大的sql編程功能,有非常豐富的統(tǒng)計(jì)功能和統(tǒng)計(jì)語法,可以多語言編寫過程,r的支持也非常好,這個(gè)mysql會(huì)從mysql的數(shù)據(jù)中心刪除和處理,但是數(shù)據(jù)分析主要是Hadoop+PGSQL。當(dāng)我們使PostgreSQL對(duì)數(shù)據(jù)庫時(shí),看的見的文件僅僅是文件嗎?
非常穩(wěn)定的系統(tǒng)PostgreSQL,如Innodb等引擎,在應(yīng)對(duì)停電等極端沖擊方面取得了顯著的進(jìn)步,但很多MySQL用戶卻面臨著服務(wù)器上數(shù)據(jù)庫不足的問題--MySQL庫是MyISAM,它的性能稍微好一些
任何系統(tǒng)都有一個(gè)性能極限,在高讀寫速度下,當(dāng)負(fù)載接近時(shí),PG效率指數(shù)可以保持一個(gè)雙曲線甚至對(duì)數(shù)曲線,峰值不會(huì)下降。
對(duì)于WEB應(yīng)用來說,屬性復(fù)制是非常重要的。 MySQL也是異步復(fù)制,pgsql可以同步、異步、半同步復(fù)制。 還有基于sync mysql復(fù)制binlog如oracle金門,基于jet復(fù)制,難以同步,所以比較適合復(fù)制,基于pgsql的wal復(fù)制,可以同步。 此外,pgsql還提供噴墨復(fù)制器。 Pgsql支持numa架構(gòu)比mysql略好,不是讀MYSQL的特點(diǎn),pgsql可以完全異步,mysql的內(nèi)存表不夠?qū)嵱茫?/u>PostgresqI數(shù)據(jù)庫安全測(cè)試與實(shí)踐如下如所示:
Pgsql有多種集群結(jié)構(gòu)可以選擇,plproxy可以保持鏡像或背光操作者的級(jí)別,slony可以在字段級(jí)設(shè)置同步級(jí)別,standby可以創(chuàng)建WAL集群分區(qū)文件,同步頻率和集群策略可以輕松改變,操作非常簡(jiǎn)單;mysql發(fā)酵簡(jiǎn)單,系統(tǒng)表、操作者、可執(zhí)行數(shù)據(jù)類型非常簡(jiǎn)單,非常容易簡(jiǎn)單查詢。
Mysql分區(qū)表應(yīng)該比Pgsql分區(qū)基于繼承表更好。 它是R樹中使用的索引,但空間功能在pgsql中并不豐富,而且空間訪問速度比pgsql慢;pgsql更適合比較嚴(yán)格的業(yè)務(wù)場(chǎng)景,如金融、電信、ERP、CRM等。 MySQL比較適合互聯(lián)網(wǎng)場(chǎng)景,比如google、Facebook、淘寶等。
答案寫到這里,我想您應(yīng)該明白了,PostgreSQL與MySQL相比各有千秋,兩者都是世界上非常先進(jìn)的數(shù)據(jù)庫管理軟件,通過使用PostgreSQL與MySQL,企業(yè)可以非常方便地管理內(nèi)部數(shù)據(jù)。Mysql分區(qū)表應(yīng)該比Pgsql分區(qū)基于繼承表更好。而PostgreSQL數(shù)據(jù)庫完全符合ACID原則(原子性、一致性、隔離性和耐久性) 并且PostgreSQL提供高質(zhì)量的文檔服務(wù),包括完整的免費(fèi)在線手冊(cè)和舊版手冊(cè)的存檔。可以看出,未來必將會(huì)有更多的廠商或者企業(yè)選擇PostgreSQL。
以上便是我的一些見解和回答,可能不能如您所愿,但我真心希望能夠?qū)δ兴鶐椭?!不清楚的地方您還可以關(guān)注我的頭條號(hào)“每日精彩科技”我將竭盡所知幫助您!
碼字不易,感覺寫的還行的話,還請(qǐng)點(diǎn)個(gè)贊哦!
PostgreSQL不是Oracle公司的,這是相對(duì)于MySQL最大的優(yōu)勢(shì),沒有之一!
MySQL是目前最受歡迎的開源數(shù)據(jù)庫,PostgreSQL則是我認(rèn)為最先進(jìn)的開源數(shù)據(jù)庫。MySQL是C/C++混合開發(fā),PostgreSQL則是完全的C語言開發(fā),這是在技術(shù)方面的差異,接下來我詳細(xì)列一下PostgreSQL相對(duì)于MySQL優(yōu)勢(shì),當(dāng)然其實(shí)這些也都能招到,我就列舉幾個(gè)比較關(guān)鍵的優(yōu)勢(shì)。
PostgreSQL穩(wěn)定性非常強(qiáng),InnoDB即使是在斷電這種場(chǎng)景下,PostgreSQL也是相當(dāng)穩(wěn)定的,這個(gè)MySQL用戶應(yīng)該是深有體會(huì)的,很多估計(jì)都經(jīng)歷過服務(wù)器級(jí)別的數(shù)據(jù)丟失。
MySQL是單存儲(chǔ)引擎,PostgreSQL是多存儲(chǔ)引擎,包括InnoDB、MyISAM等。
刪除臨時(shí)表的時(shí)候,PostgreSQL語句沒有TEMP、TEMPORARY關(guān)鍵字,DROP TABLE通過數(shù)據(jù)庫連接的排列被刪除。MySQL支持TEMP、TEMPORARY關(guān)鍵字,DROP TABLE語句只允許刪除臨時(shí)表,要手動(dòng)刪除。PostgreSQL支持CASCADE選擇刪除表的依賴對(duì)象,PostgreSQL的TRUNCATE TABLE支持功能更多。MySQL TRUNCATE TABLE不支持CASCADE食物安全,數(shù)據(jù)刪除之后就沒辦法回滾了。
PostgreSQL支持多種高級(jí)數(shù)據(jù)類型,比如array,用戶也可以定義類型,MySQL只支持標(biāo)準(zhǔn)類型。PostgreSQL支持布爾型,支持IP地址數(shù)據(jù)類型,支持常量和函數(shù)調(diào)用。PostgreSQL支持JSON和其他NoSQL功能,本機(jī)支持XML,允許索引JSON數(shù)據(jù),MySQL支持JSON,不過不支持其他的NoSQL功能。PostgreSQL的對(duì)象統(tǒng)計(jì)功能也很強(qiáng),這一點(diǎn)MySQL也有差距。
PostgreSQL是多進(jìn)程、MySQL是多線程。PostgreSQL支持大多數(shù)命令類型上觸發(fā)的觸發(fā)器。MySQL是異步復(fù)制,PostgreSQL支持同步、異步、半同步復(fù)制。PostgreSQL要求所有數(shù)據(jù)必須完全滿足需求,只要出一個(gè)錯(cuò)誤整個(gè)數(shù)據(jù)入庫過程都要失敗,不過MySQL沒這樣的問題。
最后一個(gè)優(yōu)勢(shì),也是我在文章開頭說到的,也是我認(rèn)為最大的優(yōu)勢(shì),MySQL誕生于商業(yè)公司,現(xiàn)在是讓人生厭的Oracle控制,盡管MySQL現(xiàn)在依然是開源免費(fèi)的,可是在Oracle手里總是會(huì)讓人擔(dān)心。Java在oracle手機(jī)搞了些啥大家應(yīng)該都知道吧,現(xiàn)在Oracle動(dòng)不動(dòng)出來惡心惡心大家,反正甲骨文是個(gè)不靠譜的公司,隨時(shí)想要搞點(diǎn)事情。
PostgreSQL則是誕生于加州伯克利,伯克利還是對(duì)計(jì)算機(jī)技術(shù)有過突出貢獻(xiàn)的高校的,PostgreSQL、FreeBSD都是非常有代表性的,這個(gè)不會(huì)存在像Oracle那么惡心,所以這個(gè)也是一個(gè)極大的優(yōu)勢(shì)。
一、 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ù)庫這方面要好一些。
二、任何系統(tǒng)都有它的性能極限,在高并發(fā)讀寫,負(fù)載逼近極限下,PG的性能指標(biāo)仍可以維持雙曲線甚至對(duì)數(shù)曲線,到頂峰之后不再下降,而 MySQL 明顯出現(xiàn)一個(gè)波峰后下滑(5.5版本之后,在企業(yè)級(jí)版本中有個(gè)插件可以改善很多,不過需要付費(fèi))。
三、PG 多年來在 GIS 領(lǐng)域處于優(yōu)勢(shì)地位,因?yàn)樗胸S富的幾何類型,實(shí)際上不止幾何類型,PG有大量字典、數(shù)組、bitmap 等數(shù)據(jù)類型,相比之下mysql就差很多,instagram就是因?yàn)镻G的空間數(shù)據(jù)庫擴(kuò)展POSTGIS遠(yuǎn)遠(yuǎn)強(qiáng)于MYSQL的my spatial而采用PGSQL的。
四、PG 的“無鎖定”特性非常突出,甚至包括 vacuum 這樣的整理數(shù)據(jù)空間的操作,這個(gè)和PGSQL的MVCC實(shí)現(xiàn)有關(guān)系。
五、PG 的可以使用函數(shù)和條件索引,這使得PG數(shù)據(jù)庫的調(diào)優(yōu)非常靈活,mysql就沒有這個(gè)功能,條件索引在web應(yīng)用中很重要。
六、PG有極其強(qiáng)悍的 SQL 編程能力(9.x 圖靈完備,支持遞歸?。蟹浅XS富的統(tǒng)計(jì)函數(shù)和統(tǒng)計(jì)語法支持,比如分析函數(shù)(ORACLE的叫法,PG里叫window函數(shù)),還可以用多種語言來寫存儲(chǔ)過程,對(duì)于R的支持也很好。這一點(diǎn)上MYSQL就差的很遠(yuǎn),很多分析功能都不支持,ucloud內(nèi)部數(shù)據(jù)存儲(chǔ)主要是MYSQL,但是數(shù)據(jù)分析主要是HADOOP+PGSQL。
七、PG 的有多種集群架構(gòu)可以選擇,plproxy 可以支持語句級(jí)的鏡像或分片,slony 可以進(jìn)行字段級(jí)的同步設(shè)置,standby 可以構(gòu)建WAL文件級(jí)或流式的讀寫分離集群,同步頻率和集群策略調(diào)整方便,操作非常簡(jiǎn)單。
八、一般關(guān)系型數(shù)據(jù)庫的字符串有限定長(zhǎng)度8k左右,無限長(zhǎng) TEXT 類型的功能受限,只能作為外部大數(shù)據(jù)訪問。而 PG 的 TEXT 類型可以直接訪問,SQL語法內(nèi)置正則表達(dá)式,可以索引,還可以全文檢索,或使用xml xpath。用PG的話,文檔數(shù)據(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ù)制。
十,pgsql對(duì)于numa架構(gòu)的支持比mysql強(qiáng)一些,比MYSQL對(duì)于讀的性能更好一些,pgsql提交可以完全異步,而mysql的內(nèi)存表不夠?qū)嵱茫ㄒ驗(yàn)楸礞i的原因)
最后說一下我感覺 PG 不如 MySQL 的地方。
第一,MySQL有一些實(shí)用的運(yùn)維支持,如 slow-query.log ,這個(gè)pg肯定可以定制出來,但是如果可以配置使用就更好了。
第二是mysql的innodb引擎,可以充分優(yōu)化利用系統(tǒng)所有內(nèi)存,超大內(nèi)存下PG對(duì)內(nèi)存使用的不那么充分,
第三點(diǎn),MySQL的復(fù)制可以用多級(jí)從庫,但是在9.2之前,PGSQL不能用從庫帶從庫。
第四點(diǎn),從測(cè)試結(jié)果上看,mysql 5.5的性能提升很大,單機(jī)性能強(qiáng)于pgsql,5.6應(yīng)該會(huì)強(qiáng)更多.
第五點(diǎn),對(duì)于web應(yīng)用來說,mysql 5.6 的內(nèi)置MC API功能很好用,PGSQL差一些。
另外一些:
pgsql和mysql都是背后有商業(yè)公司,而且都不是一個(gè)公司。大部分開發(fā)者,都是拿工資的。
說mysql的執(zhí)行速度比pgsql快很多是不對(duì)的,速度接近,而且很多時(shí)候取決于你的配置。
對(duì)于存儲(chǔ)過程,函數(shù),視圖之類的功能,現(xiàn)在兩個(gè)數(shù)據(jù)庫都可以支持了。
另外多線程架構(gòu)和多進(jìn)程架構(gòu)之間沒有絕對(duì)的好壞,oracle在unix上是多進(jìn)程架構(gòu),在windows上是多線程架構(gòu)。
很多pg應(yīng)用也是24/7的應(yīng)用,比如skype. 最近幾個(gè)版本VACUUM基本不影響PGSQL 運(yùn)行,8.0之后的PGSQL不需要cygwin就可以在windows上運(yùn)行。
至于說對(duì)于事務(wù)的支持,mysql和pgsql都沒有問題。
PostgreSQL
PostgreSQL標(biāo)榜自己是世界上最先進(jìn)的開源數(shù)據(jù)庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價(jià)格和傲慢的客服。最初是1985年在加利福尼亞大學(xué)伯克利分校開發(fā)的,作為Ingres數(shù)據(jù)庫的后繼。PostgreSQL是完全由社區(qū)驅(qū)動(dòng)的開源項(xiàng)目。它提供了單個(gè)完整功能的版本,而不像MySQL那樣提供了多個(gè)不同的社區(qū)版、商業(yè)版與企業(yè)版。PostgreSQL基于自由的BSD/MIT許可,組織可以使用、復(fù)制、修改和重新分發(fā)代碼,只需要提供一個(gè)版權(quán)聲明即可。
MySQL
MySQL聲稱自己是最流行的開源數(shù)據(jù)庫。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收購。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。
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ù)庫
除了存儲(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ù)庫是個(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ù)庫,能夠進(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ù)庫提供完全的 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ì)語法支持。
MySQL:支持 CREATE PROCEDURE 和 CREATE FUNCTION 語句。存儲(chǔ)過程可以用 SQL 和 C++ 編寫。用戶定義函數(shù)可以用 SQL、C 和 C++ 編寫。
PostgreSQL:沒有多帶帶的存儲(chǔ)過程,都是通過函數(shù)實(shí)現(xiàn)的。用戶定義函數(shù)可以用 PL/pgSQL(專用的過程語言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 編寫。
6)外部數(shù)據(jù)源支持
可以把 70 種外部數(shù)據(jù)源 (包括 Mysql, Oracle, CSV, hadoop …) 當(dāng)成自己數(shù)據(jù)庫中的表來查詢。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ù)庫中的一個(gè)公共模型。這樣,DBA就可以訪問和操作其它系統(tǒng)管理的數(shù)據(jù),就像在本地Postgres表中一樣。例如,使用FDW for MongoDB,數(shù)據(jù)庫管理員可以查詢來自文檔數(shù)據(jù)庫的數(shù)據(jù),并使用SQL將它與來自本地Postgres表的數(shù)據(jù)相關(guān)聯(lián)。借助這種方法,用戶可以將數(shù)據(jù)作為行、列或JSON文檔進(jìn)行查看、排序和分組。他們甚至可以直接從Postgres向源文檔數(shù)據(jù)庫寫入(插入、更細(xì)或刪除)數(shù)據(jù),就像一個(gè)一體的無縫部署。也可以對(duì)Hadoop集群或MySQL部署做同樣的事。FDW使Postgres可以充當(dāng)企業(yè)的中央聯(lián)合數(shù)據(jù)庫或“Hub”。
7)沒有字符串長(zhǎng)度限制
一般關(guān)系型數(shù)據(jù)庫的字符串有限定長(zhǎng)度8k左右,無限長(zhǎng) TEXT 類型的功能受限,只能作為外部大數(shù)據(jù)訪問。而PostgreSQL的 TEXT 類型可以直接訪問,SQL語法內(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ǔ)
沒有具體使用過,具體可以自己搜索下。參考鏈接:https://mp.weixin.qq.com/s/cjor82wgDu5gzDvTYpLDWw
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語法(ANSI SQL標(biāo)準(zhǔn))的很小一部分。不支持遞歸查詢、通用表表達(dá)式(Oracle的with 語句)或者窗口函數(shù)(分析函數(shù))。
10)對(duì)索引的支持更強(qiáng)
PostgreSQL 的可以使用函數(shù)和條件索引,這使得PostgreSQL數(shù)據(jù)庫的調(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:B+TREE。PostgreSQL支持 B-樹、哈希、R-樹和 Gist 索引。
11)集群支持更好
Mysql Cluster可能與你的想象有較大差異。開源的cluster軟件較少。復(fù)制(Replication)功能是異步的并且有很大的局限性。例如,它是單線程的(single-threaded),因此一個(gè)處理能力更強(qiáng)的Slave的恢復(fù)速度也很難跟上處理能力相對(duì)較慢的Master。
PostgreSQL有豐富的開源cluster軟件支持。plproxy 可以支持語句級(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語句中使用子查詢效率低下,而且絕大多數(shù)情況下可以使用帶條件的多表連接來替代子查詢,但是子查詢的存在在很多時(shí)候仍然不可避免。而且使用子查詢的SQL語句與使用帶條件的多表連接相比具有更高的程序可讀性。幾乎任何數(shù)據(jù)庫的子查詢 (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ù)庫對(duì)象加鎖開銷,引起數(shù)據(jù)庫整體的并發(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ù)庫上或一個(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ù)倉庫的應(yīng)用中可能是一個(gè)問題。
當(dāng)我們選擇哪種數(shù)據(jù)庫對(duì)我們的項(xiàng)目最合適時(shí),必須在數(shù)據(jù)庫之間進(jìn)行比較。PostgreSQL和MySQL都是開源社區(qū)提供的兩種最廣泛的數(shù)據(jù)庫。這兩個(gè)數(shù)據(jù)庫都有其優(yōu)點(diǎn)和缺點(diǎn),因此更好的選擇取決于特定的要求和目標(biāo)。
MySQL是一種開放源代碼且流行的數(shù)據(jù)庫管理系統(tǒng),用于管理 關(guān)系數(shù)據(jù)庫 。Oracle提供了訪問和管理該數(shù)據(jù)庫的支持。與其他數(shù)據(jù)庫相比,它是快速,可伸縮且易于使用的數(shù)據(jù)庫管理系統(tǒng)。它通常與PHP腳本一起使用,以創(chuàng)建功能強(qiáng)大且動(dòng)態(tài)的服務(wù)器端或基于Web的企業(yè)應(yīng)用程序。
PostgreSQL 是一個(gè)先進(jìn)的,開放源代碼的[對(duì)象]-關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的主要目標(biāo)是實(shí)現(xiàn)標(biāo)準(zhǔn)和可擴(kuò)展性. PostgreSQL, 或者說是 Postgres, 試圖把對(duì) ANSI/ISO SQL標(biāo)準(zhǔn)的采用與修正結(jié)合起來。
對(duì)比其他的RDBMS, PostgreSQL以它對(duì)于對(duì)象-關(guān)系和或關(guān)系型數(shù)據(jù)庫功能,比如對(duì)于可靠事務(wù),例如原子性,一致性,隔離性和持久性(ACID)的完全支持,這些東西的高度需求和集合的支持,以示其獨(dú)特性。
PostgreSQL是高度可編程的, 因而可以使用被稱作“存儲(chǔ)過程”的自定義程序進(jìn)行擴(kuò)展. 這些功能可以被創(chuàng)建用來簡(jiǎn)化一個(gè)重復(fù)、復(fù)雜并且常常需要數(shù)據(jù)庫操作的任務(wù)的執(zhí)行。
1、PostgreSQL是一個(gè)非常安全,獨(dú)立且功能豐富的開源數(shù)據(jù)庫。
2、PostgreSQL支持許多高級(jí)數(shù)據(jù)類型,例如多維數(shù)組,用戶定義的類型等。
3、PostgreSQL很好地遵循了SQL標(biāo)準(zhǔn),并支持“高級(jí)” SQL內(nèi)容,例如窗口函數(shù)或公共表表達(dá)式。
4、它提供了Oracle和SQL Server支持的所有性能優(yōu)化。
1、就數(shù)據(jù)庫排名而言,MySQL比PostgreSQL更受歡迎。
2、在MySQL中,獲得社區(qū)支持和搜索答案比PostgreSQL更容易。
3、復(fù)制是在MySQL而非PostgreSQL中很好地實(shí)現(xiàn)的。
如有不同觀點(diǎn),歡迎發(fā)表評(píng)論。如果喜歡我的回答,歡迎“點(diǎn)贊、分享”。
postgreSQL 和 MySql 都是支持 SQL標(biāo)準(zhǔn)(比如sql92, sql99),最主要的一點(diǎn)是: mysql 自從被oracle收購之后,社區(qū)擔(dān)心它的命運(yùn)像java一樣,于是大量開源項(xiàng)目紛紛轉(zhuǎn)向 postgresql。
postgresql 的管理工具:pgadmin 非常便捷,可以細(xì)粒度的操作數(shù)據(jù)庫。
PostGis,MySQL雖然5.7支持geo(抄),但相比PostGis完善的地理坐標(biāo)系,MySQL的geo更像是殘次品
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答