跳至內容

MySQL

出自轻之舟百科
MySQL
中文名 MySQL
英文名 MySQL
開發者 Oracle Corporation
首次發布 1995年5月23日
最新版本 8.0
編程語言 C、C++
操作系統 跨平台
類型 關係型數據庫管理系統
許可協議 GPL(社區版)、專有(企業版)

MySQL(官方發音為「My S-Q-L」,常讀作「My Sequel」)是一款開源的關係型數據庫管理系統(RDBMS),以SQL(結構化查詢語言)作為數據操作語言[1]。其名稱源於創始人Michael Widenius的女兒「My」。MySQL以高性能、可靠性、可擴展性和易用性著稱,被廣泛應用於網站、電子商務、數據倉庫等各類應用場景。包括Facebook、Netflix、Uber、Airbnb、Shopify和Booking.com在內的多家大型互聯網公司均在其核心業務中使用了MySQL[1]

MySQL的起源可以追溯到1979年,當時芬蘭程序員Michael 「Monty」 Widenius在TcX公司工作時,使用BASIC語言編寫了一個名為Unireg的報表工具,隨後用C語言重寫並移植到Unix平台[2]。1994年,Widenius和David Axmark開始開發mSQL(miniSQL)作為MySQL的前身,目標是構建一個輕量級數據庫系統[3]

1995年,Widenius和David Axmark正式發布了MySQL的第一個版本,並以Widenius大女兒的名字「My」命名該數據庫系統[4][5]。1999年,Widenius成立MySQL AB公司,MySQL從個人開發轉向團隊開發模式[2]

公司歷程

[編輯 | 編輯原始碼]

2008年1月,Sun Microsystems以約10億美元收購MySQL AB[4]。2009年4月,甲骨文公司(Oracle)以74億美元收購Sun Microsystems,MySQL隨之納入甲骨文旗下[4][5]。Widenius並不看好MySQL被甲骨文收購後的前途,曾發起「拯救MySQL」請願行動呼籲歐盟阻止收購,但未能成功[4]

2009年2月,Widenius離開Sun公司,在MySQL代碼庫的分支上開發了MariaDB,並以自己最小女兒的名字命名[4][5]。他還成立了Monty Program AB公司和MariaDB基金會,致力於推廣和維護MariaDB代碼庫及生態系統[4]

架構與特性

[編輯 | 編輯原始碼]

邏輯架構

[編輯 | 編輯原始碼]

MySQL採用分層邏輯架構,核心分為Server層和存儲引擎層兩個主要模塊[6][7]。Server層負責客戶端連接管理、SQL語法解析與校驗、查詢優化、執行計劃生成以及內置函數的處理,所有跨存儲引擎的通用功能(如存儲過程、觸發器、視圖等)均在此層實現[6][7]。存儲引擎層負責數據的存儲與提取,基於插件式架構設計,通過統一的存儲引擎API與Server層通信,使得MySQL可以靈活支持多種存儲引擎[7]

存儲引擎

[編輯 | 編輯原始碼]

MySQL支持多種存儲引擎,常見的包括InnoDB、MyISAM和Memory等[8]。InnoDB從MySQL 5.5.5版本開始成為默認存儲引擎[6],支持事務處理、行級鎖定、外鍵約束和MVCC(多版本並發控制),適用於需要數據一致性和高並發讀寫的應用場景[8][9]。MyISAM不支持事務和行級鎖定,但具有較高的查詢性能和較小的存儲空間占用,適合讀密集型應用[8][9]。Memory引擎將數據存儲在內存中,訪問速度快,但數據庫關閉後數據會丟失[8]

版本演進

[編輯 | 編輯原始碼]

MySQL 5.x系列

[編輯 | 編輯原始碼]

MySQL 5.x系列是歷史上使用最廣泛的版本分支。其中MySQL 5.5引入了InnoDB作為默認存儲引擎;MySQL 5.6增強了InnoDB性能並支持全文索引;MySQL 5.7大幅提升了複製功能和JSON支持。

MySQL 8.0

[編輯 | 編輯原始碼]

MySQL 8.0於2018年正式發布,是該產品線的重大版本升級。其主要新特性包括[10][11]

  • 事務性數據字典(Transactional Data Dictionary):將數據庫對象信息存儲在事務性表中,取代了傳統的元數據文件和非事務性系統表,增強元數據管理的可靠性[10]
  • 原子DDL(Atomic DDL):將數據字典更新、存儲引擎操作和二進制日誌寫入整合為單個原子事務,避免DDL操作部分成功的問題[10][11]
  • 窗口函數(Window Functions):支持通過OVER()子句配合PARTITION BY實現行間計算,簡化複雜分析查詢的編寫[11]
  • 通用表表達式(Common Table Expressions,CTE):支持在複雜查詢中使用嵌入式表,使查詢語句更加清晰和易於維護[11]
  • JSON增強:大幅提升JSON數據類型支持,新增JSON_TABLE等函數將JSON數據解析為關係表[11]
  • 降序索引和隱藏索引:支持索引按降序方式排序,索引可臨時隱藏以輔助性能調試[11]
  • 默認utf8mb4字符集:從MySQL 8.0開始,默認字符集從utf8改為utf8mb4,完整支持Unicode和表情符號[11]
  • 取消查詢緩存:出於性能和可維護性考慮,MySQL 8.0移除了查詢緩存模塊[11]
  • 增強的安全性:改進OpenSSL支持、新增身份驗證機制、SQL角色管理等安全功能[11]

市場與使用

[編輯 | 編輯原始碼]

MySQL在全球範圍內擁有廣泛的應用基礎。根據Oracle 2024年的數據,MySQL在DB-Engines排行榜上位列第二受歡迎的數據庫[1]。據Stack Overflow 2025年開發者調查報告,MySQL在專業開發者中的使用率為40.5%,在所有數據庫產品中排名第二,僅次於PostgreSQL(55.6%);在編程初學者群體中,MySQL以47.7%的使用率位居第一[12][13]。MySQL與Linux、Apache HTTP Server、PHP共同組成經典的LAMP(Linux、Apache、MySQL、PHP/Perl/Python)開源軟件棧,在Web開發領域具有重要地位[4]

許可與版本

[編輯 | 編輯原始碼]

MySQL採用雙授權政策,主要分為社區版(Community Edition)和企業版(Enterprise Edition)[14][15]

社區版基於GNU通用公共許可證(GPL)第2版發布,開源免費,任何人都可以自由下載、使用、修改和分發源代碼,社區版更新速度快,主要依賴在線論壇和郵件列表獲取技術支持[14][15]

企業版是商業授權版本,需要付費使用,提供比社區版更多的高級功能和商業級技術支持。主要附加功能包括[14][15]

  • 線程池(Thread Pooling):在高並發場景下提高系統吞吐量,官方測試顯示可使系統吞吐量提升30%至50%
  • 企業級安全功能:包括數據加密、審計日誌、訪問控制等
  • 半同步複製(Semi-Synchronous Replication):增強數據一致性
  • MySQL Enterprise Monitor等專業管理工具
  • 7×24小時商業級技術支持服務

參考文獻

[編輯 | 編輯原始碼]