MySQL 8.0 中被移除的选项和变量有哪些?

MySQL 8.0 中被移除的选项和变量有哪些?

MySQL 8.0 是目前最新的 MySQL 版本,它在保留了之前版本的优点的同时,还新增了一些功能和改进了一些已有特性。然而,随着时间的推移,MySQL 在每个版本中都会移除一些已经过时或者不再需要的选项和变量,以提高其性能和可靠性。在本篇文章中,我们将会回顾 MySQL 8.0 中被移除的一些选项和变量,以帮助您更好地理解 MySQL 8.0 并避免出现一些不必要的错误。

阅读更多:MySQL 教程

sql_mode

首先要介绍的是 sql_mode,它实际上并不属于被移除的选项和变量,但是在 MySQL 8.0 版本中,MySQL 开发者对它进行了一些重大变更,这里需要说明一下。

在 MySQL 8.0 中,MySQL 开发者将“ONLY_FULL_GROUP_BY”选项添加到了默认的 sql_mode 中,以更加严格地执行 SQL 标准。这意味着如果在查询中使用了 GROUP BY,那么在 SELECT 中需要列出所有 GROUP BY 子句中列出的列。在之前的 MySQL 版本中,默认的 sql_mode 并没有包含 ONLY_FULL_GROUP_BY 选项,而可控性更好的“STRICT_ALL_TABLES”选项也被移除了。

如果您的 MySQL 8.0 数据库在执行查询时出现了 ONLY_FULL_GROUP_BY 错误,您可以通过调整 sql_mode 来解决,以下代码演示了如何调整 sql_mode:

SET sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER';

在这里,“ONLY_FULL_GROUP_BY”是指定的选项,“NO_AUTO_CREATE_USER”是 mysql 配置文件中默认启用的选项。您可以调整这些选项来满足您的实际需求。

log_slow_queries

在 MySQL 8.0 中,log_slow_queries 变量被移除了,您需要使用 slow_query_log 变量来代替它。slow_query_log 变量允许您启用或关闭 MySQL 中的慢查询日志,并控制该日志的记录方式和位置。以下代码展示了如何启用慢查询日志:

SET GLOBAL slow_query_log = 'ON';

如果您希望将慢查询日志写入文件而不是电子邮件,您可以使用 slow_query_log_file 变量,以下是一个示例:

SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';

innodb_log_file_size 和 innodb_log_buffer_size

在 MySQL 8.0 中,innodb_log_file_size 和 innodb_log_buffer_size 变量被移除了。这两个变量控制 InnoDB 存储引擎中日志文件的大小和缓冲区的大小,如果您在升级到 MySQL 8.0 时遇到这些变量的问题,可以使用以下变量来代替它们:

  • innodb_log_file_size: innodb_log_file_size = [文件大小],文件大小是 InnoDB 日志文件的大小,控制着 InnoDB 写入日志文件的速度。如果您需要控制日志文件大小,请尝试在 MySQL 8.0 中使用”innodb_log_file_size”变量。以下是一个示例:
SET GLOBAL innodb_log_file_size = 536870912;
  • innodb_log_buffer_size:innodb_log_buffer_size 设置缓存大小,控制着 InnoDB 写入日志文件的速度。此外,innodb_log_buffer_size 还决定了将多少个事务合并到 InnoDB 的缓存中。如果您需要控制缓冲区的大小,请尝试在 MySQL 8.0 中使用”innodb_log_buffer_size”变量,以下是一个示例:
SET GLOBAL innodb_log_buffer_size = 16777216;

query_cache

在 MySQL 8.0 中,query_cache 变量也被移除了。query_cache 是一个 MySQL 内置的缓存机制,用于缓存查询结果以提高查询性能。然而,在 MySQL 8.0 中,由于 query_cache 的性能瓶颈和缓存失效的问题,MySQL 开发者将其移除了。

如果您在之前的 MySQL 版本中使用 query_cache 变量,则需要修改您的应用程序以避免出现问题。相反,MySQL 8.0 中提供了其他提高查询性能的方法,比如更好的索引设计,更优秀的查询优化和更快的磁盘 IO。

myisam_use_mmap 和 myisam_mmap_size

在 MySQL 8.0 中,myisam_use_mmap 和 myisam_mmap_size 变量也被移除了。myisam_use_mmap 变量指示 MySQL 是否使用内存映射文件来访问 MyISAM 表,并且 myisam_mmap_size 变量指示分配给内存映射的最大内存量。这两个变量在之前的 MySQL 版本中用于控制 MyISAM 表的访问性能和内存使用。

然而,在 MySQL 8.0 中,MySQL 开发者将 MyISAM 存储引擎标记为“废弃”,意味着在未来的版本中可能会彻底移除,因此这些变量也失去了意义。

确认已移除的变量和选项

如果您不确定哪些变量和选项已被移除,在 MySQL 8.0 中可以通过查阅官方文档来获得更多的信息。另外,MySQL 8.0 还提供了一个 SHOW VARIABLES 命令,可以列出所有 MySQL 变量的信息,包括其是否被移除。

以下是一个示例:

SHOW VARIABLES WHERE Variable_name LIKE '%removed';

该命令将列出 MySQL 中已标记为“removed”的所有变量。

结论

总的来说,MySQL 8.0 中移除了一些过时或者不再需要的变量和选项,同时引入了新的功能和改进。在使用 MySQL 8.0 或者升级到 MySQL 8.0 时,应该特别注意这些移除的变量和选项,并采取必要的措施以避免潜在的问题。在查看官方文档和使用 SHOW VARIABLES 命令的帮助下,您可以更好地了解 MySQL 8.0 中的变化,并能够更加高效地使用 MySQL 数据库。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程