MySQL 數據庫簡介
1. 數據庫的概念
數據庫是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。是按照數據結構來組織、存儲和管理數據的倉庫。目前常用的數據庫主要分為開源 MySQL 數據庫(包括官方版 MySQL、Percona MySQL MariDB)和商業版數據庫 ( 包括 SQL Server、Oracle、DB2 )。
例如一個學校全部學生學籍信息、選課情況、學分統計、考試成績查詢都是利用數據庫對學校相關數據進行管理和存儲的,而數據庫則是配置在學校機房服務器的,利用數據庫技術可以對這些數據進行管理,以便于教學工作高效、有序的開展。
而數據庫又按照是否采用關系模型劃分為兩種:
- 關系型數據庫
- 非關系型數據庫
1.1 關系型數據(SQL)
關系型數據庫,是指采用了關系模型來組織數據的數據庫,從語言功能層面來講,一般是指用 SQL 語言來進行操作管理的關系型數據庫。常用的關系型數據庫有 MySQL、Oracle、SQLServer、PostGreSQL。
1.2 非關系型數據庫(NoSQL)
NoSQL 通常指的是 non-relational ,也可以理解為 Not Only SQL,泛指非關系型數據庫。常見的非關系型數據庫有 MongDB、HBase、Redis。
1.3 新型數據庫(NewSQL)
NewSQL 是對各種新的可擴展/高性能數據庫的簡稱,這類數據庫不僅具有 NoSQL 對海量數據的存儲管理能力,還保持了傳統數據庫支持 ACID 和 SQL 等特性。常見的 NewSQL 有 Google Spanner/F1、阿里 OceanBase、騰訊 TDSQL、TiDB、Cockroach。
2. MySQL 發展歷史
-
1979 年,MySQL 的歷史最早可以追溯到 1979 年,有一個人叫 Monty Widenius 在一個名為 TcX 的小公司打工并用 BASIC 設計了一個報表工具,可以在 4M 主頻和 16KB 內存的計算機上運行。過了不久,又將此工具使用 C 語言重寫,移植到 Unix 平臺,當時,它只是一個很底層的面向報表的存儲引擎;
-
1996 年,MySQL 1.0 發布,只面向一小撥人,相當于內部發布。到了 96 年 10 月,MySQL 3.11.1 發布了;
-
1999 - 2000 年,有一家公司在瑞典成立了,叫 MySQL AB (AB 是瑞典語“股份公司”的意思)。 雇了幾個人,與 Sleepycat 合作,開發出了 Berkeley DB 引擎, 因為 BDB 支持事務處理,所以,MySQL 從此開始支持事務處理了;
-
2000 年 4 月,MySQL 對舊的存儲引擎進行了整理,命名為 MyISAM。同時,2001 年,Heikiki Tuuri 向 MySQL 提出建議,希望能集成他們的存儲引擎 InnoDB ,這個引擎同樣支持事務處理,還支持行級鎖;
-
2004 年 10 月,發布了經典的 4.1 版本。 2005 年 10 月,有發布了里程碑的一個版本,MySQL 5.0. 在5.0 中加入了游標,存儲過程,觸發器,視圖和事務的支持。在 5.0 之后的版本里,MySQL 明確地表現出邁向高性能數據庫的發展步伐;
-
2011 年 4 月,MySQL 5.6 發布,作為被 Oracle 收購后,第一個正式發布并做了大量變更的版本(5.5版本主要是對社區開發的功能的集成),對復制模式,優化器等做了大量的變更,其中最重要的主從 GTID 復制模式,大大降低了 MySQL 高可用操作的復雜性;
-
2016 年 9 月,Oracle 決定跳過 MySQL 5.x 命名系列,并拋棄之前的 MySQL 6,7 兩個分支(6,7 是兩個從來沒有對外發布的兩個分支),直接進入 MySQL 8 版本命名,自此正式進入 MySQL 8.0 時代。
3. MySQL 與同類型數據庫對比
3.1 MySQL優缺點
MySQL優點:
-
運行速度快:MySQL 體積小,命令執行的速度快;
-
使用成本低:MySQL 是開源的,且提供免費版本,對大多數用戶來說大大降低了使用成本;
-
使用容易:與其他大型數據庫的設置和管理相比,其復雜程度較低,易于使用;
-
可移植性強:MySQL 能夠運行與多種系統平臺上,如 Windouws,Linux,Unix 等;
-
適用更多用戶:MySQL 支持最常用的數據管理功能,適用于中小型企業甚至大型網站應用。
MySQL 缺點:
-
MySQL 最大的缺點是其安全系統,主要是復雜而非標準,另外只有到調用 mysqladmin 來重讀用戶權限時才發生改變;
-
MySQL 沒有一種存儲過程(Stored ProcedureStored Procedure)語言,這是對習慣于企業級數據庫的程序員的最大限制;
-
MySQL不支持熱備份;
-
MySQL 的另一個主要的缺陷之一是缺乏標準的 RI(Referential Integrity-RI)機制;Rl 限制的缺乏(在給定字段域上的一種固定的范圍限制)可以通過大量的數據類型來補償;
-
MySQL 的價格隨平臺和安裝方式變化。Linux 的 MySQL 如果由用戶自己或系統管理員而不是第三方安裝則是免費的,第三方安裝則必須付許可費。Unix 或 Linux 自行安裝是免費的,Unix 或 Linux 第三方安裝則需花費 200 美元。
3.2 Oracle 優缺點
Orace 優點:
-
開放性:Oracle 能在大部分主流平臺上運行(包括 Windows)完全支持所有工業標準采用完全開放策略使客戶選擇適合解決方案對開發商全力支持;
-
安全性:獲得最高認證級別的 ISO 標準認證;
-
Oracle 性能高:保持開放平臺下 TPC-D 和 TPC-C 世界記錄;
-
客戶端支持及應用模式:Oracle 多層次網絡計算支持多種工業標準用 ODBC、JDBC、OCI 等網絡客戶連接;
-
使用風險:Oracle 長時間開發經驗完全向下兼容得廣泛應用地風險低。
Oracle 缺點:
-
對硬件的要求很高;
-
價格比較昂貴;
-
管理維護麻煩一些;
-
操作比較復雜,需要技術含量較高。
3.3 SQLServer 優缺點
SQLServer 優點:
-
易用性:適合分布式組織的可伸縮性、用于決策支持的數據倉庫功能、與許多其他服務器軟件緊密關聯的集成性、良好的性價比等;
-
數據管理與分析帶來了靈活性:允許單位在快速變化的環境中從容響應,從而獲得競爭優勢。從數據管理和分析角度看,將原始數據轉化為商業智能和充分利用 Web 帶來的機會非常重要;
-
完備的數據庫和數據分析包:SQLServer 為快速開發新一代企業級商業應用程序、為企業贏得核心競爭優勢打開了勝利之門;
-
基準測試可伸縮性和速度獎的記錄保持者:SQLServer 是一個具備完全 Web 支持的數據庫產品,提供了對可擴展標記語言(XML)的核心支持以及在 Internet 上和防火墻外進行查詢的能力;
SQLServer 缺點:
- 伸縮性并行性:SQL server 并行實施和共存模型并成熟難處理日益增多用戶數和數據卷伸縮性有限。
- 安全性:沒有獲得任何安全證書;
- 性能 :SQL Server 多用戶時性能佳 ;
- 客戶端支持及應用模式: 客戶端支持及應用模式。只支持 C/S 模式,SQL Server C/S 結構只支持 Windows 客戶用 ADO、DAO、OLEDB、ODBC連接;
- 使用風險:SQL server 完全重寫代碼經歷了長期測試斷延遲許多功能需要時間來證明并十分兼容。
3.4 MySQL 的市場占比
我們分別在百度指數中查詢 MySQL,Oracle,和 SQLSever 這三種關系型數據庫的近半年的平均指數,可以看到 MySQL 數據庫已經遠超同濟!
4、MySQL 的版本
MySQL 分為官方版 Mysql、MariaDB 社區版、Percona 企業版,其中官方原版高負載性能一般,兼容性好,MariaDB 繼續開源,高負載性能較好,兼容性一般。如圖對比, Percona 企業版高負載性能最好,兼容性好。
Percona 版的 MySQL 是 Percona 公司對原版 MySQL 進行性能優化之后再發布的版本,其性能比官方原版好,但是 Percona 版的 MySQL 發布一般要晚于官方原版 MySQL 幾個月。在企業生產環境中,一般推薦使用 Percona 版的 MySQL,對于新手而言,本套教程中則使用 MySQL 官方目前最新版本 MySQL8.0。
5. 為什么要學習 MySQL?
隨著互聯網技術迅猛的發展,“LNMPR” 一詞被越來越多的人熟悉,其中 “L”、“N”、“M”、“P”、“R"分別代表 “Linux”、“Nginx”、“MySQL”、PHP”、“Redis”,而 LNMPR 是后端開發工程師必備技能,學習 LNMPR 相關技術也是各大后端開發工程師提升自己競爭力的有效途徑,而 MySQL 作為各大互聯網企業重要的數據存儲、管理技術,MySQL 數據庫工程師的需求也越來越急迫,特別是對有經驗的優秀人才需求量巨大。
6. 學習基礎
學習本套教程之前您需要先了解以下幾點:
- 了解一些基礎的 Linux 命令;
- 需要安裝數據庫連接操作工具,如 Navicat。