1、MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開源數據庫。MySQL就是LAMP(用於
Web開發的軟件包,包括 Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如 WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設計目標是成為一個快速的Web服務器后端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之 后,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存 儲引擎),通過MyISAM引擎實現了高速讀的數據庫,此外還有其他的核心存儲引擎與第三方引擎。
2、PostgreSQL標榜自己是世界上最先進的開源數據庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在 加利福尼亞大學伯克利分校開發的,作為Ingres數據庫的后繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了 多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲 明即可。
雖然有不同的歷史、引擎與工具,不過並沒有明確的參考能夠表明這兩個數據庫哪一個能夠適用於所有情況。很多組織喜歡使用PostgreSQL,因為 它的可靠性好,在保護數據方面很擅長,而且是個社區項目,不會陷入廠商的牢籠之中。MySQL更加靈活,提供了更多選項來針對不同的任務進行裁剪。很多時 候,對於一個組織來說,對某個軟件使用的熟練程度要比特性上的原因更重要。
一開始,MySQL的設計目標是成為一個快速的Web服務器后端,使用快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之 后,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存 儲引擎),通過MyISAM引擎實現了高速讀的數據庫,此外還有其他的核心存儲引擎與第三方引擎。
2、PostgreSQL標榜自己是世界上最先進的開源數據庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那么昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在 加利福尼亞大學伯克利分校開發的,作為Ingres數據庫的后繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了 多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲 明即可。
雖然有不同的歷史、引擎與工具,不過並沒有明確的參考能夠表明這兩個數據庫哪一個能夠適用於所有情況。很多組織喜歡使用PostgreSQL,因為 它的可靠性好,在保護數據方面很擅長,而且是個社區項目,不會陷入廠商的牢籠之中。MySQL更加靈活,提供了更多選項來針對不同的任務進行裁剪。很多時 候,對於一個組織來說,對某個軟件使用的熟練程度要比特性上的原因更重要。
作者:知了
鏈接:https://www.zhihu.com/question/20010554/answer/74037965
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
鏈接:https://www.zhihu.com/question/20010554/answer/74037965
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
一、PG相對於MySQL的優勢:
1、在SQL的標准實現上要比MySQL完善,而且功能實現比較嚴謹;
2、存儲過程的功能支持要比MySQL好,具備本地緩存執行計划的能力;
3、對表連接支持較完整,優化器的功能較完整,支持的索引類型很多,復雜查詢能力較強;
4、PG主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數據量。
5、PG的主備復制屬於物理復制,相對於MySQL基於binlog的邏輯復制,數據的一致性更加可靠,復制性能更高,對主機性能的影響也更小。
6、MySQL的存儲引擎插件化機制,存在鎖機制復雜影響並發的問題,而PG不存在。
二、MySQL相對於PG的優勢:
1、innodb的基於回滾段實現的MVCC機制,相對PG新老數據一起存放的基於XID的MVCC機制,是占優的。新老數據一起存放,需要定時觸 發VACUUM,會帶來多余的IO和數據庫對象加鎖開銷,引起數據庫整體的並發能力下降。而且VACUUM清理不及時,還可能會引發數據膨脹;
2、MySQL采用索引組織表,這種存儲方式非常適合基於主鍵匹配的查詢、刪改操作,但是對表結構設計存在約束;
3、MySQL的優化器較簡單,系統表、運算符、數據類型的實現都很精簡,非常適合簡單的查詢操作;
4、MySQL分區表的實現要優於PG的基於繼承表的分區實現,主要體現在分區個數達到上千上萬后的處理性能差異較大。
5、MySQL的存儲引擎插件化機制,使得它的應用場景更加廣泛,比如除了innodb適合事務處理場景外,myisam適合靜態數據的查詢場景。
mysql支持存儲過程
mysql支持半同步復制,google的補丁
innodb的mvcc基本可以做到事務無鎖
mysql支持半同步復制,google的補丁
innodb的mvcc基本可以做到事務無鎖