官术网_书友最值得收藏!

第2章 MySQL數據庫入門知識介紹

2.1 MySQL介紹

2.1.1 MySQL簡介

前面已經介紹過,MySQL屬于傳統的關系型數據庫產品,其開放式的架構使得用戶的選擇性很強,而且隨著技術的逐漸成熟,MySQL支持的功能也越來越多,性能也在不斷地提高,對平臺的支持也在增多,此外,社區的開發與維護人數也很多。當下,MySQL因為其功能穩定、性能卓越,且在遵守GPL協議的前提下,可以免費使用與修改,因此深受用戶喜愛。

我們知道,關系型數據庫的特點是將數據保存在不同的表中,再將這些表放入不同的數據庫中,而不是將所有的數據統一放在一個大倉庫里,這樣的設計加快了MySQL的讀取速度,而且它的靈活性和可管理性也得到了很大的提高。訪問及管理MySQL數據庫的最常用標準化語言為SQL——結構化查詢語言。SQL使得對數據庫進行存儲、更新和存取信息的操作變得更加容易。例如,你能用SQL為一個網站檢索產品信息及存儲用戶信息、博文、帖子等,有關SQL的知識后文會詳細講解。

2.1.2 MariaDB數據庫的誕生背景介紹

自甲骨文公司收購MySQL之后,MySQL在商業數據庫與開源數據庫領域的市場占有份額都躍居第一,這樣的格局引起了部分業內人士的擔憂,因為商業數據庫的老大有可能將MySQL閉源,為了避免Oracle將MySQL閉源,而無開源的類MySQL數據庫可用,MySQL社區采用了分支的方式——MariaDB數據庫就這樣誕生了,MariaDB是一個向后兼容的數據庫產品,可能會在以后替代MySQL,其官方地址為https://mariadb.org/。不過,這里還是建議大家選擇更穩定且使用更廣泛的MySQL數據庫,可以先測試MariaDB數據庫,等使用的人員多一些,社區更活躍后再正式考慮使用也不遲。

2.1.3 為什么選擇MySQL數據庫

毫無疑問,選擇MySQL數據庫已是既成事實,絕大多數使用Linux操作系統的互聯網網站都在使用MySQL作為其后端的數據庫存儲方式,從大型的BAT門戶到電商平臺、分類門戶等無一例外。那么,MySQL數據庫到底有哪些優勢和特點,讓大家不約而同地選擇它呢?

原因可能有以下幾點。

MySQL性能卓越,服務穩定,很少出現異常宕機的情況。

MySQL開放源代碼且無版權制約,自主性強,使用成本低。

MySQL歷史悠久,社區及用戶非常活躍,遇到問題,可以尋求幫助。

MySQL軟件體積小,安裝使用簡單,并且易于維護,安裝及維護成本低。

MySQL品牌口碑效應好,使得企業無須考慮即可直接用之。

LAMP、LNMP、LNMT(tomcat)等流行Web架構都含有MySQL。

MySQL支持多種操作系統,提供了多種API,支持多種開發語言,特別是對流行的Java、Python、PHP等語言都有很好的支持。

提示:官方給出的使用MySQL理由見http://www.mysql.com/why-mysql/topreasons. html。

2.2 MySQL數據庫分類與版本升級

MySQL數據庫的官方網站為http://www.mysql.com,其發布的MySQL版本采用雙授權政策,和大多數開源產品的路線一樣,MySQL數據庫也有社區版和企業版之分,且這兩個版本又各自分了四個版本依次發布,這四個版本分別為:Alpha版、Beta版、RC版和GA版本

2.2.1 MySQL數據庫企業版與社區版的區別

1.MySQL數據庫企業版介紹

MySQL企業版由MySQL AB公司內部專門的人員負責開發及維護,但同時也會吸納社區人員編寫的優秀代碼及算法,并且由他們嚴格按照軟件測試流程對這些采納的代碼進行測試,確定沒有問題之后才會進行發布。簡單地說,MySQL企業版是由MySQL公司內部發布的,它參考了社區版的先進代碼功能和算法,是MySQL公司的贏利產品,需要付費才能使用及提供服務支持,穩定性和可靠性無疑都是最好的,當然了,企業腰包得夠鼓才能買得起。據老男孩了解的信息,某知名分類門戶網站2008年就購買過MySQL企業版,價格不比那些閉源的商業數據庫便宜,也是大幾十萬。

2.MySQL數據庫社區版介紹

MySQL社區版則是由分散在世界各地的MySQL開發者、愛好者以及用戶參與開發與測試的,包括軟件代碼的管理、測試工作,也是他們在負責。社區也會設立BUG匯報機制,收集用戶在使用過程中遇到的BUG情況,相比于企業版,社區版的開發及測試環境沒有那么嚴格。

3.MySQL數據庫企業版與社區版的區別

MySQL是成熟產品,企業版與社區版之間在性能方面相差不大。它們的區別主要集中在以下幾個方面。

企業版本組織管理與測試環節控制更嚴格,穩定性更好。

企業版不遵守GPL協議,社區版遵守GPL協議,可以免費使用!

使用企業版后可以購買相關的服務,比如,享受7×24小時的技術支持以及定時打補丁等服務,但是用戶必須為此支付服務費用。社區版的服務質量與時效性等就無法與企業版相比了。

社區版本的維護服務只能靠社區提供,其無法像企業版本那樣獲得故障及補丁解決服務,但是,使用社區版是完全免費的方式。

2.2.2 MySQL數據庫的四種發布版本介紹

前面已經闡述過,MySQL的版本發布采用的是雙授權政策,即分為社區版和企業版,而這兩個版本又各自分為四個版本,依次發布:Alpha版、Beta版、RC版和GA版本

這四種發布版本之間的說明及區別具體如下。

(1)Alpha版

Alpha版一般只在開發的公司內部運行,不對外公開。主要是開發者自己對產品進行測試,檢查產品是否存在缺陷、錯誤,驗證產品功能與說明書、用戶手冊是否一致。MySQL屬于開放源代碼的開源產品,因此需要世界各地的開發者、愛好者和用戶參與軟件的開發、測試和手冊編寫等工作。自然也就必須對外公布此版本的源碼和產品了,以方便他人參與開發或測試工作,甚至編寫與修改用戶手冊。

(2)Beta版

Beta版一般是完成功能的開發和所有的測試工作之后的產品,不會存在較大的功能或性能上的BUG,通常會邀請或提供給用戶體驗與測試,以便更全面地測試軟件的不足之處或存在的問題。

(3)RC版

RC版屬于生產環境發布之前的一個小版本或稱候選版,是根據Beta版本的測試結果,收集到的BUG或缺陷等信息,進行修復和完善之后的一版產品。

(4)GA版

GA版是軟件產品正式發布的版本,也稱生產版本的產品。一般情況下,企業的生產環境都會選擇GA版本的MySQL軟件,用于真實的生產環境中。偶爾有個別大型企業會為追求新功能驅動而犧牲穩定性使用其他版本,但只是個例。

既然有四種發布版本,那么如何進行選擇呢?

MySQL AB官方網站會把各種數據庫版本都上傳到網站,以供不同的用戶下載,主要是MySQL數據庫是屬于開放源代碼的數據庫產品,其鼓勵全球的技術愛好者參與研發、測試、文檔編寫和經驗分享,甚至還包括產品的發展規劃。對于Development版本、Alpha版本和Beta版本,應禁止在生產環境中使用,因為很可能會存在重大的問題或是有些功能未被完全實現。絕大多數情況下,RC版本也是不允許使用在生產環境中的,畢竟這是一個在GA版本之前(也即生產版本發布之前)的小版本。另外,對于MySQL數據庫GA版本,也需要慎重選擇,開源社區的產品畢竟不是經過嚴格的測試工序完成的,是全球開源技術人員自愿完成的,會存在比商業產品穩定性弱的缺陷。更嚴格的選擇后面會有進一步的說明。

國內門戶提供的MySQL下載地址:http://mirrors.sohu.com/mysql/

2.3 MySQL數據庫軟件的命名介紹

MySQL數據庫軟件的版本號是由3個數字和一個后綴組成。例如,mysql-5.6.40. tar.gz的版本號,其數字的含義分別如下。

第1個數字(5)是主版本號,描述了文件格式。所有版本5的發行都有相同的文件格式。

第2個數字(6)是發行級別。主版本號和發行級別組合到一起便構成了發行序列號。

第3個數字(40)是指在此發行系列的版本號,隨每個新分發版而遞增。通常你需要已經選擇的發行(release)的最新版本(版本)。

每次更新之后,版本字符串的最后一個數字會遞增。如果是相對于前一個版本增加了新功能或有微小的不兼容性,那么字符串的第二個數字會遞增。如果文件格式改變,那么第一個數字會遞增。

至于版本號中的后綴,那是用來顯示發行的穩定性級別的,通過這一系列后綴顯示如何改進穩定性。可能的后綴有:alpha版、beta版、rc版、沒有后綴(穩定版或GA版)。這幾個后綴對應的說明可參見2.2.2節。

2.4 MySQL產品路線

2.4.1 MySQL產品路線變更歷史背景

早期,MySQL也是遵循版本號逐漸增加的方式發展,格式形如mysql-X.XX.XX.tar. gz,例如,老DBA都非常熟悉的生產場景下的版本:MySQL 4.1.7、MySQL 5.0.56等。

近幾年,為了提高MySQL產品的競爭優勢,提高性能、降低開發維護成本等,也為了方便企業用戶更精準地選擇合適的版本,MySQL在發展到5.1系列之后,又重新規劃為三條產品線。下面一起來看看。

2.4.2 MySQL-5.0.xx到MySQL-5.1.xx的產品線

第一條產品線為:MySQL 5.0.xx升級到MySQL 5.1.xx,這條產品線繼續完善與改進其用戶體驗和性能,同時又增加了新功能,可以說這條路線是MySQL早期產品的延續,這一系列產品的發布情況及歷史版本如下。

MySQL 5.1是當前的穩定發布系列版本。只針對漏洞修復重新發布;沒有增加會影響穩定性的新功能。

MySQL 5.0是前一個穩定發布系列版本。只針對嚴重漏洞修復和安全修復重新發布;沒有增加會影響該系列的重要功能,并且官方也很快停止了對其的支持。

MySQL 4.0和MySQL 3.23是舊的穩定發布系列版本。該版本建議不再使用,并且官方已經停止了對其的支持。

目前Red hat linux 7以及CentOS 7以前的官方yum源里附帶的還是MySQL 5.1的版本,但是在絕大多數的大型互聯網企業的重要場景里,已經罕見5.1版本了,當下,本系列的產品線已經發布到了5.2系列(非穩定版)。

2.4.3 MySQL-5.4.xx到MySQL-5.7.xx產品線

為了更好地整合MySQL AB公司社區和第三方公司開發的新存儲引擎,以及吸收新的實現算法等,從而更好地支持SMP架構并提高性能,第二條產品線做了大量的代碼重構。版本編號從5.4.xx開始,最新穩定版為5.7.xx,目前發展到了6.0.xx和8.0.xx(非穩定版)。

據官方講,MySQL 5.6是有史以來最好的版本,是世界上使用最廣的開源數據庫,它提供了一套新的、先進的功能,使我們能夠建設新一代基于網絡和嵌入式的應用和服務。

在企業中,目前是MySQL 5.5和MySQL 5.6并存的主流時代,MySQL 5.7是未來,本書的講解主要以MySQL 5.6大版本為主,同時兼顧MySQL 5.5,并盡可能兼顧MySQL 5.7。

2.4.4 MySQL-Cluster-6.0.xx到MySQL-Cluster-7.5.xx產品線

為了更好地推廣MySQL Cluster版本,提高MySQL Cluster的性能和穩定性,改進和增加功能,使其對Cluster存儲引擎提供更有效的支持與優化,因此研發了第三條產品線。該產品線的版本號為6.0.xx,目前已發展到7.5.xx。

圖2-1為MySQL各版本的發展參考圖,對應時間一般為最后更新時間,而非發布時間。

圖2-1 MySQL的各版本發展的參考圖

2.5 生產場景中如何選擇MySQL版本

2.5.1 MySQL數據庫發布特性

商業軟件研發和發行公司,都會提供經過完整測試,甚至多種用戶環境模擬測試及試用之后,才推出的穩定的生產環境版本,這也使得技術人員對于商業數據庫軟件的選擇,一般不需要有太多的顧慮與考慮。

在大公司(像BAT等),對于數據庫軟件版本的選擇,也會有相關人員詳細閱讀其新功能或改進點知識,并且會做很多相關的研究和測試工作,最后才逐步上線,而且是從邊緣業務慢慢過渡到核心業務。

目前,對于MySQL的企業版本,需要注冊賬號才可以下載到編譯過的安裝包或源代碼,而且賬號只有一個月的有效期;社區版本的MySQL產品,則不需要注冊賬號,只要填寫一些信息即可轉到下載頁面。

2.5.2 企業生產場景選擇MySQL數據庫的建議

企業生產場景下,數據庫是重中之重,因此選擇MySQL數據庫一定要慎重。下面是給出的一些選擇建議。

1)一定要選穩定版版本,即選擇開源的社區版的穩定版。

2)產品線選擇,建議選擇第二條產品線中的5.5或5.6版本。目前互聯網公司主流版本是5.5和5.6。

3)選擇MySQL數據庫至少發布半年以上的穩定版本。

4)要盡可能選擇前后幾個月沒有大的BUG修復的版本,而不是大量修復BUG的集中版本。

5)最好選擇向后較長時間沒有更新發布的版本。

6)要考慮開發人員開發程序使用的版本是否兼容你所選的版本。

7)首先作為內部開發測試數據庫環境,測試運行幾個月的時間。

8)優先對企業非核心業務采用新的數據庫穩定版本軟件。

9)向高手請教或者在及技術氛圍好的群里和大家一起交流,使用真正的高手用過的、好用的且BUG少的GA版本產品。

經過上述工序之后,若是沒有重要的功能BUG或性能瓶頸,則可以開始考慮作為任何業務數據服務的后端數據庫軟件了。

上述為選擇的流程建議,實際上很多中小公司都會直接選擇GA版的最新版本,如果業務中使用的功能比較單一,且數據和訪問量不是很大,一般也不會有什么大問題,上述選擇的建議,是以大規模大數據量高并發,使用數據庫功能較多的場景為前提進行講解的,對于這類場景,一定要慎重選擇。

參考資料:

http://baike.baidu.com/view/24816.htm

http://baike.baidu.com/view/2521908.htm

2.6 章節試題

1)在企業中如何正確選擇MySQL的版本?

2)請描述MySQL的不同產品路線及發展情況?

3)MySQL與MariaDB的基本區別是什么?

主站蜘蛛池模板: 田林县| 遂宁市| 宁城县| 东宁县| 旬邑县| 谢通门县| 准格尔旗| 平南县| 保德县| 邳州市| 偃师市| 西盟| 潞城市| 平顶山市| 龙里县| 同仁县| 黑河市| 文水县| 桦甸市| 河津市| 西贡区| 泽库县| 安岳县| 龙南县| 乌拉特中旗| 邓州市| 连城县| 东乌珠穆沁旗| 烟台市| 奈曼旗| 遂昌县| 南华县| 天台县| 丹棱县| 融水| 神农架林区| 绍兴市| 遵义县| 南皮县| 桃江县| 深水埗区|