本文是從知乎上扒下來的兩個我的認爲比較好的回答,通讀全文可能仍是隻知其一;不知其二,留做後期學習慢慢咀嚼。原網址:https://www.zhihu.com/question/19866767html
SQL,在這裏我理解成SQL Server。三者是目前市場佔有率最高(依安裝量而非收入)的關係數據庫,並且頗有表明性。排行第四的DB2(屬IBM公司),與Oracle的定位和架構很是類似,就不贅述了。算法
Oracle:中文譯做甲骨文,這是一家傳奇的公司,有一個傳奇的大老闆Larry Ellision。 Ellision 32歲還一事無成,讀了三個大學,沒獲得一個學位文憑,換了十幾家公司,老婆也離他而去。開始創業時只有1200美圓,卻使得Oracle公司連續12年銷售額每一年翻一番。sql
Oracle成立於1977年,早期的理論基礎,反而來自於一篇IBM的論文《A Relational Model of Data for Large Shared Data Banks》【1】。做者CODD選取了關係代數的五種運算,並基於運算,架構了一種新型的數據存儲模型。基於這種模型,Oracle成爲了一個很是典型的關係數據庫。所以也變的嚴謹、安全、高速、穩定,而且變的愈來愈龐大。數據庫
因爲其誕生早、結構嚴謹、高可用、高性能等特色,使其在傳統數據庫應用中大殺四方,金融、通訊、能源、運輸、零售、製造等各個行業的大型公司基本都是用了Oracle,早些年的時候,世界500強幾乎100%都是Oracle的用戶。windows
MySQL :MySQL的最初的核心思想,主要是開源、簡便易用。其開發可追溯至1985年,而第一個內部發行版本誕生,已是1995年。到1998年,MySQL已經能夠支持10中操做系統了,其中就包括win平臺。但依然問題多多,如不支持事務操做、子查詢 、外鍵、存儲過程和視圖等功能。下圖是一個截止至2006年的數據庫市場佔有率【2】:
緩存
圖中能夠看出,MySQL的爆發實際是在0一、02年,尤爲是02年發佈的4.0 Beta版,正式選定InnoDB做爲默認引擎,對事務處理能力及數據緩存能力有了極大的提升。同年4.1版開始支持子查詢,至此MySQL終於蛻變成一個成熟的關係型數據庫系統。05年的5.0版本又添加了存儲過程、服務端遊標、觸發器、查詢優化以及分佈式事務功能,但同年被Oracle抄了後路,InnoDB被Oracle收編。08年,MySQL被Sun收購,09年,Oracle收購了Sun和MySQL。安全
因爲MySQL的早期定位,其主要應用場景就是互聯網開發。基本上,互聯網的爆發成就了MySQL,LAMP架構風靡天下。而因爲MySQL更多的的追求輕量、易用,以及早期的事物操做及複雜查詢優化的缺失,在傳統的數據庫應用場景中,份額極少。服務器
SQL Server:一提到SQL Server,你們通常都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase and Ashton-Tate三家公司攔下的生意,是爲IBM(又出現了)公司的OS/2操做系統開發的。隨着OS/2項目的失敗,你們也分道揚鑣。 Microsoft天然轉向本身的win操做系統,做爲windows NT軟件方案的一部分。而Sybase則專一於Linux/Unix方向的數據庫開發。架構
MS SQL Server主要面向中小企業。其最大的優點就是在於集成了MS公司的各種產品及資源,提供了強大的可視化界面、高度集成的管理開發工具,在快速構建商業智能(BI)方面很有建樹。 MS SQL Server是MS公司在軟件集成方案中的重要一環,也爲WIN系統在企業級應用中的普及作出了很大貢獻。併發
關於「大型數據庫」,並無嚴格的界定,有說以數據量爲準,有說以恢復時間爲準。若是綜合數據庫應用場景來講,大型數據庫應用有如下特色:海量數據、高吞吐量;複雜邏輯、高計算量,以及高可用性。從這點上來講,Oracle,DB2就是比較典型的大型數據庫,Sybase SQL Server也算是吧。下面分別說明以前三種數據庫的應用場景。
Oracle:Oracle的應用,主要在傳統行業的數據化業務中,好比:銀行、金融這樣的對可用性、健壯性、安全性、實時性要求極高的業務;零售、物流這樣對海量數據存儲分析要求很高的業務。此外,高新制造業如芯片廠也基本都離不開Oracle;電商也有不少使用者,如京東(正在投奔Oracle)、阿里巴巴(計劃去Oracle化)。並且因爲Oracle對複雜計算、統計分析的強大支持,在互聯網數據分析、數據挖掘方面的應用也愈來愈多。
一個典型場景是這樣的:
某電信公司(非國內)下屬某分公司的數據中心,有4臺Oracle Sun的大型服務器用來安裝Solaris操做系統和Oracle並提供計算服務,3臺Sun Storage磁盤陣列來提供Oracle數據存儲,12臺IBM小型機,一臺Oracle Exadata服務器,一臺500T的磁帶機用來存儲歷史數據,San鏈接內網,使用Tuxedo中間件來保證擴展性和無損遷移。創建支持高併發的Oracle數據庫,經過OLTP系統用來對海量數據實時處理、操做,創建高運算量的Oracle數據倉庫,用OLAP系統用來分析營收數據及提供自動報表。總預算約750萬美金。
MySQL:MySQL基本是生於互聯網,長於互聯網。其應用實例也大都集中於互聯網方向,MySQL的高併發存取能力並不比大型數據庫差,同時價格便宜,安裝使用簡便快捷,深受廣大互聯網公司的喜好。而且因爲MySQL的開源特性,針對一些對數據庫有特別要求的應用,能夠經過修改代碼來實現定向優化,例如SNS、LBS等互聯網業務。
一個典型的應用場景是:
某互聯網公司,成立之初,僅有PC數臺,經過LAMP架構迅速搭起網站框架。隨着業務擴張、市場擴大,迅速發展成爲6臺Dell小型機的中型網站。如今花了三年,終於成爲垂直領域的最大網站,計劃中的數據中心,擁有Dell機架式服務器40臺,總預算20萬美金。
MS SQL Server:windows生態系統的產品,好處壞處都很分明。好處就是,高度集成化,微軟也提供了整套的軟件方案,基本上一套win系統裝下來就齊活了。所以,不那麼缺錢,但很缺IT人才的中小企業,會偏心 MS SQL Server 。例如,自建ERP系統、商業智能、垂直領域零售商、餐飲、事業單位等等。
1996年,Bill Gates親自出手,從Borland挖來了大牛Anders,搞定了C#語言。微軟02年搞定了http://ASP.NET。成熟的.NET、Silverlight技術,爲 MS SQL Server贏得了部分互聯網市場,其中就有曾經的全球最大社交網站MySpace,其發展歷程頗有表明性,可做爲一個比較特別的例子【3】。其巔峯時有超過1.5億的註冊用戶及每個月400億的訪問量。應該算是MS SQL Server支撐的最大的數據應用了。
3、架構
其實要說執行的區別,主要仍是架構的區別。正是架構致使了相同SQL在執行過程當中的解釋、優化、效率的差別。這裏只作粗略說明,就不細說了:
Oracle: 數據文件包括:控制文件、數據文件、重作日誌文件、參數文件、歸檔文件、密碼文件。這是根據文件功能行進行劃分,而且全部文件都是二進制編碼後的文件,對數據庫算法效率有極大的提升。因爲Oracle文件管理的統一性,就能夠對SQL執行過程當中的解析和優化,指定統一的標準:RBO(基於規則的優化器)、CBO(基於成本的優化器)經過優化器的選擇,以及無敵的HINT規則,給與了SQL優化極大的自由,對CPU、內存、IO資源進行方方面面的優化。
MySQL:最大的一個特點,就是自由選擇存儲引擎。每一個表都是一個文件,均可以選擇合適的存儲引擎。常見的引擎有 InnoDB、 MyISAM、 NDBCluster等。但因爲這種開放插件式的存儲引擎,好比要求數據庫與引擎之間的鬆耦合關係。從而致使文件的一致性大大下降。在SQL執行優化方面,也就有着一些不可避免的瓶頸。在多表關聯、子查詢優化、統計函數等方面是軟肋,並且只支持極簡單的HINT。
SQL Server :數據架構基本是縱向劃分,分爲:Protocol Layer(協議層), Relational Engine(關係引擎), Storage Engine(存儲引擎), SQLOS。SQL執行過程就是逐層解析的過程,其中Relational Engine中的優化器,是基於成本的(CBO),其工做過程跟Oracle是很是類似的。在成本之上也是支持很豐富的HINT,包括:鏈接提示、查詢提示、表提示。
注:本人經驗尚淺,且未從事過DBA相關職業,歡迎糾正錯誤及共同窗習。
【1:】:《A Relational Model of Data for Large Shared Data Banks》, http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
【2】:數據庫市場佔有率, http://online.creativesystemdesigns.com/projects/databases.asp
【3】:《MySpace架構歷程》, http://wenku.baidu.com/view/ab4a826527d3240c8447ef45.html
-------------------------------------------------------華麗分割線----------------------------------------------------------------------------
----1.Oracle:最貴,功能最多,安裝最不方便,Oracle環境裏的其餘相關組件最多,支持平臺數量通常,使用中等方便,開發中等方便,運維中等方便,不開源,速度最慢,最安全。
----2.Microsoft SQL Server 2014:中等貴,功能最少,安裝中等方便,Microsoft SQL Server 2014環境裏的其餘相關組件最少,支持平臺最少,使用最方便,開發最方便,運維最方便,不開源,速度中等,通常安全。
----3.Mysql:免費,功能中等,安裝最方便,Mysql環境裏的其餘相關組件數量中等,支持平臺最多,使用最不方便,開發最不方便,運維最不方便,有開源版本,速度最快,最不安全。
----1.對於初學數據庫的孩子來講,好比學生,建議學習Microsoft SQL Server 2014。緣由主要是方便。微軟平臺,從Windows操做系統、VS開發工具、C#語言等等,不管安裝、使用、學習都很方便,而且書籍也不少。使用這個平臺,能讓你更集中注意力在學習上,避免不少無關因素的打擾。好比,安裝Oracle的話,須要瞭解不少非數據庫知識,學生時期,原本時間就少,所以不推薦在此時期學習Oracle。
----2.對於在國企、事業單位裏的人來講,建議精通Windows\Office\C#\Microsoft SQL Server 2014,由於這類工做崗位上會常常作一些小軟件的快速開發,以及數據的快速處理。
----3.對於在百度、阿里巴巴這類互聯網企業的人來講,建議精通MySQL。由於這類企業不肯意花錢購買正版軟件,同時又須要對源代碼進行定製,所以MySQL最適合這類企業。
----4.對於專門從事大型軟件項目開發,以及電信、電商、金融等,這類企業有錢,而且對數據安全最重視,所以,這類企業適合使用Oracle。