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

1.3 什么是MySQL

MySQL是一個小型關系數據庫管理系統,與其他大型數據庫管理系統(例如Oracle、DB2、SQL Server等)相比,MySQL規模小、功能有限,但是它體積小、速度快、成本低,且提供的功能對稍微復雜的應用來說已經夠用,這些特性使得MySQL成為世界上最受歡迎的開放源代碼數據庫。本節將介紹MySQL的特點。

1.3.1 客戶機-服務器軟件

主從式架構(Client-Server Model)或客戶端-服務器(Client/Server)結構簡稱C/S結構,是一種網絡架構,通常在該網絡架構下,軟件分為客戶端(Client)和服務器(Server)。

服務器是整個應用系統資源的存儲與管理中心,多個客戶端則各自處理相應的功能,共同實現完整的應用。在客戶端/服務器結構中,客戶端用戶的請求被傳送到數據庫服務器,數據庫服務器進行處理后,將結果返回給用戶,從而減少了網絡數據的傳輸量。

用戶使用應用程序時,首先啟動客戶端通過有關命令告知服務器進行連接以完成各種操作,而服務器則按照此請示提供相應的服務。每一個客戶端軟件的實例都可以向一個服務器或應用程序服務器發出請求。

這種系統的特點是,客戶端和服務器程序不在同一臺計算機上運行,這些客戶端和服務器程序通常歸屬不同的計算機。

主從式架構通過不同的途徑應用于很多不同類型的應用程序,比如,現在人們熟悉的在因特網上使用的網頁。例如,當顧客想要在當當網上買書的時候,電腦和網頁瀏覽器就被當作一個客戶端,同時,組成當當網的電腦、數據庫和應用程序被當作服務器。當顧客的網頁瀏覽器向當當網請求搜尋數據庫相關的圖書時,當當網服務器從其數據庫中找出所有該類型的圖書信息,結合成一個網頁,再發送給顧客的瀏覽器。服務器端一般使用高性能的計算機,并配合使用不同類型的數據庫,比如Oracle、Sybase、MySQL等;客戶端需要安裝專門的軟件,比如專門開發的客戶端工具瀏覽器等。

1.3.2 MySQL版本

針對不同用戶,MySQL分為兩個不同的版本。

·MySQL Community Server(社區版):該版本完全免費,但是官方不提供技術支持。

·MySQL Enterprise Server(企業版服務器):它能夠以很高性價比為企業提供數據倉庫應用,支持ACID事物處理,提供完整的提交、回滾、崩潰恢復和行級鎖定功能。但是該版本需付費使用,官方提供電話技術支持。

提示

MySQL Cluster主要用于架設集群服務器,需要在社區版或企業版的基礎上使用。

MySQL的命名機制由3個數字和1個后綴組成,例如MySQL-5.7.22。

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

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

(3)第3個數字(22)是此發行系列的版本號,隨每次新分發版本遞增。通常選擇已經發行的最新版本。

在MySQL開發過程中,同時存在多個發布系列,每個系列的成熟度處在不同階段。

(1)MySQL 5.7是最新開發的穩定(GA)發布系列,是將執行新功能的系列,目前已經可以正常使用。

(2)MySQL 5.6是比較穩定(GA)發布系列,只針對漏洞修復重新發布,沒有增加會影響穩定性的新功能。

(3)MySQL 5.1是前一穩定(產品質量)發布系列,只針對嚴重漏洞修復和安全修復重新發布,沒有增加會影響該系列的重要功能。

提示

對于MySQL 4.1、4.0和3.23等低于5.0的老版本,官方將不再提供支持。而所有發布的MySQL(Current Generally Available Release)版本已經經過嚴格標準的測試,可以保證其安全可靠地使用。針對不同的操作系統,讀者可以在MySQL官方下載頁面(http://dev.mysql.com/downloads/)下載相應的安裝文件。

1.3.3 MySQL的優勢

MySQL的主要優勢如下:

(1)速度:運行速度快。

(2)價格:MySQL對多數個人來說是免費的。

(3)容易使用:與其他大型數據庫的設置和管理相比,其復雜程度較低,易于學習。

(4)可移植性:能夠工作在眾多不同的系統平臺上,例如Windows、Linux、UNIX、Mac OS等。

(5)豐富的接口:提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等語言的API。

(6)支持查詢語言:MySQL可以利用標準SQL語法和支持ODBC(開放式數據庫連接)的應用程序。

(7)安全性和連接性:十分靈活和安全的權限和密碼系統,允許基于主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼安全。并且由于MySQL是網絡化的,因此可以在因特網上的任何地方訪問,提高數據共享的效率。

1.3.4 了解MySQL 5.7的新特性

和MySQL 5.6相比,MySQL 5.7的新功能主要包括以下幾個方面。

1.性能大幅度提升

MySQL 5.7在所有負載模型上都有顯著的性能改進,并創造了新的基準測試紀錄。MySQL 5.7在Point Select查詢測試中,測試成績是MySQL 5.6的3倍多。

2.支持JSON

JSON(JavaScript Object Notation)是一種存儲信息的格式,可以很好地替代XML。從MySQL 5.7將支持JSON,而在此版本之前,只能通過strings之類的通用形式來存儲JSON文件,這樣做的缺陷很明顯,就是必須要自行確認和解析數據、解決更新中的困難或在執行插入操作時忍受較慢的速度。

在MySQL 5.7中,新增了一種新的數據類型,用來在MySQL的表中存儲JSON格式的數據。原生支持JSON數據類型主要有如下好處:

(1)文檔校驗:只有符合JSON規范的數據段才能被寫入類型為JSON的列中,相當于有了自動JSON語法校驗。

(2)高效訪問:在JSON類型的列中存儲JSON文檔時,數據不會被視為純文本進行存儲,而是以一種優化后的二進制格式進行存儲,以便可以更快速地訪問其對象成員和數組元素。

(3)提升性能:通過在JSON類型的列上創建索引,可以提升數據查詢性能。

3.Performance Schema

對于任何數據管理系統而言,監控是必要的。MySQL提供的核心監控策略是Performance Schema。Performance Schema在MySQL 5.7中的改進包括大量新加入的監控項、降低占用空間和負載、通過新的SYS Schema機制顯著地提升易用性。

在監控方面,Performance Schema提供了如下新功能:

(1)元數據鎖(Metadata Locking):任何已經開始的事務將一直持有表的元數據鎖直到事務提交。由于開始的事務會持有事務關聯的所有表的元數據鎖,因此任何DDL操作在前面的事務提交前是不能夠執行的。

(2)進度跟蹤(Stage Tracking):長時間跟蹤操作的進度。

(3)事務:監控服務層和存儲引擎層的事務的全部方面。

(4)內存使用:通過統計內存使用的信息,從而了解內存的消耗情況。

(5)預編譯語句:通過預編譯語句提供聚合統計信息,并且展示服務使用的預編譯語句。

4.SYS Schema

MySQL SYS Schema是一個由一系列對象(視圖、存儲過程、存儲方法、表和觸發器)組成的數據Schema,主要存儲在Performance Schema和INFORMATION_SCHEMA的監測數據資源中。MySQL SYS Schema默認包含在MySQL 5.7中,并提供摘要視圖以解決以下問題:

(1)哪些進程占用了數據庫的所有資源?

(2)哪些主機對數據庫服務器的訪問量最大?

(3)數據庫實例上的內存都被用到了什么地方?

5.性能和可擴展性

改進InnoDB的可擴展性和臨時表的性能,從而實現更快的網絡和大數據加載等操作。

6.改進復制以提高可用性的性能

包括多源復制、增強多從線程功能、在線GTIDs和增強的半同步復制。

7.性能模式提供更好的視角

增加了許多新的監控功能,以減少空間和過載,使用新的SYS模式顯著提高易用性。

8.提高安全

以安全第一為宗旨,提供了很多新的功能,從而保證數據庫的安全。

9.優化

重寫了大部分解析器、優化器和成本模型,提高了可維護性、可擴展性和性能。

10.透明的頁級別壓縮

自MySQL 5.1開始,InnoDB支持表壓縮特性。InnoDB頁級別的壓縮是MySQL 5.7的一個新特性,它補充了InnoDB的表級壓縮,它們可以在同一個服務實例上并存。用戶現在可以選擇最適合他們使用場景的壓縮方式,甚至基于不同的表選擇不同的壓縮方式。

對于壓縮算法,目前支持Zlib和LZ4。當一個頁被寫入時,它就被指定的壓縮算法壓縮。壓縮后的數據寫到磁盤上,隨后“hole punching”機制會在頁的末尾處釋放空塊。如果壓縮失敗,數據則被原樣寫入。

InnoDB現在也支持32KB和64KB的頁大小設置,這對于頁級的壓縮來說是一個很好的補充。一般來說,更大的頁通常會增加冗余的數據量。MySQL 5.7增加了用戶可配置填充因子和頁合并抑制的新特性,這樣可以讓InnoDB更好地使用存儲空間。

11.本地分區

在早期版本中,對InnoDB分區的支持依賴于ha_partition處理器,這個處理器可以為每一個分區創建一個新的處理器,當使用很多分區時,這個處理器也相應地浪費了很多資源。

在MySQL 5.7 InnoDB中包含對本地分區的支持,可以使用更少的整體資源。InnoDB的本地分區也為較好地整體分區鋪平了道路。這包含并行查詢進程、改進分區裁剪、外鍵支持、全局二級索引和在分區表上的全文本搜索之類的功能。作為這項工作的一部分,也已經從分區處理器類中的特性部分分離出了它自己的分區接口。InnoDB本地分區功能可以明顯降低負載,減少多達90%的內存需求。

12.緩存保留

在MySQL 5.7服務器重啟時,InnoDB自動保留緩存池中最熱的25%的數據。這樣的好處是,用戶不需要任何預加載或預熱數據緩存的工作,也不需要承擔MySQL重啟帶來的性能損失。

主站蜘蛛池模板: 汉源县| 邹城市| 英吉沙县| 天柱县| 百色市| 临潭县| 当涂县| 平江县| 会东县| 榆社县| 松滋市| 六安市| 青冈县| 宝应县| 武城县| 乃东县| 祁阳县| 湘潭县| 大厂| 湘阴县| 克东县| 永平县| 桦川县| 盘山县| 靖边县| 淳安县| 射阳县| 拉孜县| 新田县| 汝南县| 西贡区| 沂水县| 鱼台县| 苗栗市| 湾仔区| 乐都县| 佛教| 华阴市| 称多县| 湛江市| 文安县|