MySQL - 版本
MySQL - 版本指南
Section titled “MySQL - 版本指南”软件版本控制是演进和改进的关键过程。新版本引入了强大的功能、提升了性能、修补了安全漏洞并移除了过时的组件。了解您正在使用的 MySQL 版本对于充分发挥其潜力并确保应用程序安全和可维护性至关重要。
将您的应用程序运行在稳定、受积极支持的 MySQL 版本上,例如最新的通用版(General Availability, GA)发布,以受益于最新的安全补丁和功能,这是一种重要的最佳实践。
简史:从 5.x 到 8.x
Section titled “简史:从 5.x 到 8.x”MySQL 拥有丰富的历史,5.x 系列多年来一直是网络的基础。每个主要版本都带来了显著的改进。
- MySQL 5.1 (2008): 引入了事件调度和表分区等功能。
- MySQL 5.5 (2010): 通过将高性能、事务性的
InnoDB设置为默认存储引擎,标志着一个重要的里程碑。 - MySQL 5.6 (2013): 专注于性能,改进了查询优化器、
InnoDB和复制功能。 - MySQL 5.7 (2015): 进一步提升了性能,并增加了原生的
JSON数据类型,预示着向支持更灵活数据模型的转变。
虽然这些版本具有开创性,但它们现在已达到生命周期终止(End-of-Life, EOL),不应再用于新开发。所有新项目都应基于 MySQL 8.x 构建。
现代 MySQL:8.x 版本的主要特性
Section titled “现代 MySQL:8.x 版本的主要特性”MySQL 8.0 于 2018 年首次发布,代表着一次重大的飞跃。它引入了大量增强功能,重点关注性能、现代 SQL 特性、开发者体验和可靠性。
现代 SQL 特性
Section titled “现代 SQL 特性”8.0 版本使 MySQL 符合现代 SQL 标准,从而实现更强大、更易读的查询。
- 通用表表达式(
Common Table Expressions, CTEs): 使用WITH子句,您可以创建命名的临时结果集,使复杂查询更清晰、更易读。支持递归和非递归CTE。 - 窗口函数(
Window Functions): 它们对与当前行相关的一组表行执行计算。这对于计算运行总计、移动平均或对结果进行排名等任务非常有用,无需复杂的自连接。
- 改进的优化器: 查询优化器变得更智能,具有哈希连接等功能,可以显著加快连接大型表的查询速度。
- 降序索引: 索引现在可以按降序存储,消除了需要反向排序的查询的性能损失。
TempTable存储引擎: 一种更高效的内部临时表处理引擎,提高了复杂查询的性能。
开发者体验与数据类型
Section titled “开发者体验与数据类型”- JSON 增强: 原生
JSON数据类型得到了显著改进,新增了直接在数据库内搜索和操作JSON文档的功能。 - 默认表达式: 列现在可以使用表达式作为其默认值,例如
data JSON DEFAULT ('{}')。 - 可靠的 DDL: 原子性数据定义语言(
Data Definition Language, DDL)语句确保CREATE、ALTER或DROP等操作要么完全完成,要么完全不执行,从而防止部分修改的schema。
应避免的:已弃用和已移除的功能
Section titled “应避免的:已弃用和已移除的功能”随着进步而来的是改变。MySQL 8.0 弃用或移除了几个较旧的功能。您应该更新您的代码以避免使用它们。
- 查询缓存已移除: 查询缓存是旧版本中的一个功能,由于可伸缩性问题,在 8.0 中已完全移除。现代应用程序应专注于查询优化和应用程序级缓存。
utf8mb3字符集: 这是旧的utf8别名,现已弃用。始终使用utf8mb4以确保完整的 Unicode 支持,包括表情符号。ZEROFILL属性: 此数值类型属性已弃用。数字前导零的格式化应在您的应用程序代码中处理。FLOAT(M,D)和DOUBLE(M,D): 为浮点类型指定精度和标度已弃用。请使用不带这些参数的FLOAT和DOUBLE,或者对于精确数值数据使用DECIMAL。- 密码管理: 旧的
PASSWORD()函数已移除。请使用更安全的caching_sha2_password认证插件。
检查您的版本并规划未来
Section titled “检查您的版本并规划未来”您可以通过一个简单的查询轻松检查当前 MySQL 服务器的版本:
SELECT VERSION();输出可能类似于:8.0.34。
对于任何项目,您都应该有一个保持数据库更新的策略。使用托管式云数据库服务(如 Amazon RDS、Google Cloud SQL 或 Azure Database for MySQL)可以简化此过程,因为云提供商通常会为您处理补丁和主要版本升级。