1. 程式人生 > Mysql入門教學 >01 MySQL 資料庫簡介

01 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 分為官方版 MysqlMariaDB 社群版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。