跳转到内容

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小时商业级技术支持服务

参考文献

[编辑 | 编辑源代码]