mysql發展歷程 各分支版本溯源


       首先為什么要了解mysql的歷史,了解一個軟件的前生后世有時候還是很有必要,特別是對於走在架構之路或者是想深入了解一個軟件的時候,在不同版本中由於進行了很多的改進或者說加入了新的功能,也有可能是軟件本身進行了重構比如:hadoop1到hadoop2就是比較典型的重構,源代碼的組織結構和思想發生了翻天覆地的變化,所以我們有時候並沒有重視版本帶來的一些問題。所以出現有些功能或者配置文件等都發生了改變,會提示某項功能不支持或者某個配置被某個項代替等諸多注意的問題。

        我們通常在遇到問題的時候,第一時間就會去百度一下或者google一下,但是很多文章沒有給出版本信息,導致用其他版本的問題,解決當前遇到的版本的問題。

  越來越多的企業級項目應用“見證”了MySQL數據庫的飛速發展,MySQL數據庫本身正在逐漸完善並走向成熟。以前會有人詬病MySQL為什么沒有視圖,沒有存儲過程,沒有觸發器,沒有事件調度器。而現在,MySQL還沒有什么呢?  我們簡單來看看MySQL的發展歷程。

       國內的鏡像地址你可以訪問這里,下載相關的比較久遠的版本

       http://mirrors.sohu.com/mysql/
       http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/
       http://mirrors.163.com/mysql/Downloads/
 


 

      簡單來說,MySQL數據庫的發展可以概括為三個階段:

  1、初期開源數據庫階段。

  2、Sun MySQL階段。

  3、Oracle MySQL階段。
      

  很多人以為MySQL是最近15年內才出現的數據庫,其實MySQL數據庫的歷史可以追溯到1979年,那時Bill Gates退學沒多久,微軟公司也才剛剛起步,而Larry的Oracle公司也才成立不久。那時有一個天才程序員Monty Widenius為一個名為TcX的小公司打工,並且用BASIC設計了一個報表工具,使其可以在4MHz主頻和16KB內存的計算機上運行。沒過多久,Monty又將此工具用C語言進行了重寫並移植到了UNIX平台。當時,這只是一個很底層的且僅面向報表的存儲引擎,名叫Unireg。

  雖然TcX這個小公司資源有限,但Monty天賦極高,面對資源有限的不利條件,反而更能發揮他的潛能。Monty總是力圖寫出最高效的代碼,並因此養成了習慣。與Monty在一起的還有一些別的同事,很少有人能堅持把那些代碼持續寫到20年后,而Monty卻做到了。

  1990年,TcX公司的客戶中開始有人要求為他的API提供SQL支持。當時有人提議直接使用商用數據庫,但是Monty覺得商用數據庫的速度難以令人滿意。於是,他直接借助於mSQL的代碼,將它集成到自己的存儲引擎中。令人失望的是,效果並不太令人滿意,於是,Monty雄心大起,決心自己重寫一個SQL支持。

  1996年,MySQL 1.0發布,它只面向一小撥人,相當於內部發布。到了1996年10月,MySQL 3.11.1發布(MySQL沒有2.x版本),最開始只提供Solaris下的二進制版本。一個月后,Linux版本出現了。

  在接下來的兩年里,MySQL被依次移植到各個平台。在發布時,MySQL數據庫采用的許可策略有些與眾不同:允許免費使用,但是不能將MySQL與自己的產品綁定在一起發布。如果想一起發布,就必須使用特殊許可,意味着要花“銀子”。當然,商業支持也是需要花“銀子”的。其他方面,隨用戶怎么用都可以。這種特殊許可為MySQL帶來了一些收入,從而為它的持續發展打下了良好的基礎。

  MySQL關系型數據庫於1998年1月發行第一個版本。它使用系統核心的多線程機制提供完全的多線程運行模式,並提供了面向C、C++、Eiffel、Java、Perl、PHP、Python及Tcl等編程語言的編程接口(API),支持多種字段類型,並且提供了完整的操作符支持。

  1999~2000年,MySQL AB公司在瑞典成立。Monty雇了幾個人與Sleepycat合作,開發出了Berkeley DB引擎, 因為BDB支持事務處理,所以MySQL從此開始支持事務處理了。

  2000年4月,MySQL對舊的存儲引擎ISAM進行了整理,將其命名為MyISAM。2001年,Heikki Tuuri向MySQL提出建議,希望能集成他的存儲引擎InnoDB,這個引擎同樣支持事務處理,還支持行級鎖。該引擎之后被證明是最為成功的MySQL事務存儲引擎。

  2003年12月,MySQL 5.0版本發布,提供了視圖、存儲過程等功能。

  2008年1月,MySQL AB公司被Sun公司以10億美金收購,MySQL數據庫進入Sun時代。在Sun時代,Sun公司對其進行了大量的推廣、優化、Bug修復等工作。

  2008年11月,MySQL 5.1發布,它提供了分區、事件管理,以及基於行的復制和基於磁盤的NDB集群系統,同時修復了大量的Bug。

  2009年4月,Oracle公司以74億美元收購Sun公司,自此MySQL數據庫進入Oracle時代,而其第三方的存儲引擎InnoDB早在2005年就被Oracle公司收購。

  2010年12月,MySQL 5.5發布,其主要新特性包括半同步的復制及對SIGNAL/RESIGNAL的異常處理功能的支持,最重要的是InnoDB存儲引擎終於變為當前MySQL的默認存儲引擎。MySQL 5.5不是時隔兩年后的一次簡單的版本更新,而是加強了MySQL各個方面在企業級的特性。Oracle公司同時也承諾MySQL 5.5和未來版本仍是采用GPL授權的開源產品。

  隨着MySQL的不斷成熟及開放式的插件存儲引擎架構的形成,越來越多的開發人員加入到MySQL存儲引擎的開發中。而隨着InnoDB存儲引擎的不斷完善,同時伴隨着LAMP架構的崛起,在未來的數年中,MySQL數據庫仍將繼續飛速發展。

 


 

  MySQL是開源的數據庫,這意味着任何人都可以在其源碼的基礎上分支出自己的MySQL版本,並且可以在原MySQL數據庫的基礎上進行一定的修改,這是開源賦予用戶的權力。
  MariaDB是由MySQL創始人之一Monty分支的一個版本
      MariaDB的官方網站為http://mariadb.org/。
      在MySQL數據庫被Oracle公司收購后,Monty擔心MySQL數據庫發展的未來,從而分支出一個版本。這個版本和其他分支有很大的不同,其默認使用嶄新的Maria存儲引擎,是原MyISAM存儲引擎的升級版本。此外,其增加了對Hash Join的支持和對Semi Join的優化,使MariaDB在復雜的分析型SQL語句中較原版本的MySQL性能提高很多。另外,除了包含原有的一些存儲引擎,如InnoDB、Memory,還整合了PBXT、FederatedX存儲引擎。不得不承認,MariaDB數據庫是目前MySQL分支版本中非常值得使用的一個版本,尤其是在OLAP的應用中,對Hash Join的支持和對Semi Join的優化可以大大提高MySQL數據庫在這方面的查詢性能。MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人會從MySQL5.5中了解到MariaDB的所有功能。從2012年11月12日起發布的10.0.0版開始,不再依照MySQL的版號。10.0.x版以5.5版為基礎,加上移植自MySQL 5.6版的功能和自行開發的新功能。
  關於MariaDB、MySQL、MaxDB名字的由來,這里有個不得不說的小插曲。Monty有一個女兒,名叫My,因此他將自己開發的數據庫命名為MySQL。Monty還有一個兒子,名為Max,因此在2003年,SAP公司與MySQL公司建立合作伙伴關系后,Monty又將與SAP合作開發的數據庫命名為MaxDB。而現在的MariaDB中的Maria是Monty小孫女的名字。
  Drizzle是基於原MySQL 6.0代碼分支出的一個版本
      官方網站為http://www.drizzle.org/。
      Drizzle有個很明顯的區別於MySQL的地方就是,它的核心代碼很有限,目前也致力於繼續保持微小內核的方式。Drizzle支持一系列的接口,其他模塊能很好地以插件方式加載進來,這樣用戶可以按照自己的需要進行擴展。同時,對於用戶來說使用了什么模塊更加一目了然,更加個性化。Drizzle的特點為:
  ·一個更適合雲計算組件和Web應用的數據庫。
  ·專為多CPU/多核CPU服務器在高並發情況下而設計。
  ·高效的內存使用。
  ·開放源代碼、開源社區,開放型設計。
  Percona Server是Percona公司分支的一個MySQL數據庫版本
       官方網站為 https://www.percona.com
       https://www.percona.com/doc/percona-server/5.7/installation/yum_repo.html
        https://www.percona.com/software/mysql-database/percona-server
      該版本對高負載情況下的InnoDB存儲引擎進行了一定的優化,為DBA提供一些非常有用的性能診斷工具,另外有更多的參數和命令可以用來控制服務器行為。Percona公司最大的貢獻是發布了免費開源的XtraBackup工具,可實現對InnoDB存儲引擎表的在線熱備份操作。
 
  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM