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.5引入了InnoDB作为默认存储引擎;MySQL 5.6增强了InnoDB性能并支持全文索引;MySQL 5.7大幅提升了复制功能和JSON支持。
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小时商业级技术支持服务
- ↑ 1.0 1.1 1.2 Oracle中国:MySQL是什么
- ↑ 2.0 2.1 新网:最流行的开源数据库MySQL
- ↑ 阿里云开发者社区:MySQL起源
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 博文视点:专访"MySQL之父"
- ↑ 5.0 5.1 5.2 百度百科:Michael Widenius
- ↑ 6.0 6.1 6.2 腾讯云开发者社区:MySQL逻辑架构
- ↑ 7.0 7.1 7.2 阿里云开发者社区:MySQL核心架构
- ↑ 8.0 8.1 8.2 8.3 阿里云开发者社区:MySQL存储引擎深度解析
- ↑ 9.0 9.1 阿里云开发者社区:InnoDB和MyISAM的区别
- ↑ 10.0 10.1 10.2 Oracle:MySQL 8.0新增特性
- ↑ 11.0 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 阿里云开发者社区:MySQL 5.X和8.0的区别
- ↑ 知乎:Stack Overflow 2025开发者调查结果
- ↑ dbaplus:PostgreSQL反超MySQL
- ↑ 14.0 14.1 14.2 腾讯云:MySQL企业版与社区版区别
- ↑ 15.0 15.1 15.2 百度开发者中心:MySQL企业版与社区版全面对比