扩展 MySQL 8.0  / 第一章简介  /  1.3 MySQL 5.6 的新特性

1.3 MySQL 5.6 的新特性

本节总结了 MySQL 5.6 中添加、弃用和删除的内容。配套部分列出了在 MySQL 5.6 中添加、弃用或删除的 MySQL 服务器选项和变量;请参阅 第 1.4 节,“MySQL 5.6 中添加、弃用或删除的服务器和状态变量和选项”

MySQL 5.6 新增功能

MySQL 5.6 中增加了以下特性:

  • 安全改进。  进行了以下安全改进:

  • MySQL 企业版。  审计日志插件生成的文件格式已更改,以便更好地与 Oracle Audit Vault 兼容。请参阅第 6.4.4 节,“MySQL 企业审计”第 6.4.4.3 节,“审计日志文件格式”

    MySQL 企业版中包含的审计日志插件现在可以根据用户帐户和事件状态过滤审计事件。几个新的系统变量为 DBA 提供了过滤控制。此外,通过添加多个状态变量,审核日志插件报告功能得到了改进。有关详细信息,请参阅 第 6.4.4.4 节“配置审计日志记录特征”审计日志插件状态变量

    MySQL 企业版现在包括一组基于 OpenSSL 库的加密函数,这些函数在 SQL 级别公开 OpenSSL 功能。这些功能使企业应用程序能够执行以下操作:

    • 使用公钥非对称加密实现额外的数据保护

    • 创建公钥和私钥以及数字签名

    • 执行非对称加密和解密

    • 使用加密哈希进行数字签名以及数据验证和确认

    有关详细信息,请参阅 第 6.5 节,“MySQL 企业加密”

    MySQL Enterprise Edition 现在包括 MySQL Enterprise Firewall,这是一个应用程序级防火墙,使数据库管理员能够根据与接受的语句模式的白名单进行匹配来允许或拒绝 SQL 语句的执行。这有助于加强 MySQL 服务器抵御 SQL 注入等攻击,或试图通过在合法查询工作负载特征之外使用它们来利用应用程序。有关详细信息,请参阅 第 6.4.5 节,“MySQL 企业防火墙”

  • 更改服务器默认设置。  从 MySQL 5.6.6 开始,几个 MySQL 服务器参数默认值与以前版本中的默认值不同。这些更改的动机是提供更好的开箱即用性能并减少数据库管理员手动更改设置的需要。有关详细信息,请参阅第 5.1.2.1 节,“对服务器默认值的更改”

  • InnoDB 增强功能。  添加了这些InnoDB增强功能:

    • 您可以在表上创建FULLTEXT索引 ,并使用 语法InnoDB查询它们。MATCH() ... AGAINST此功能包括一个新的邻近搜索运算符 ( @) 和几个新的配置选项和 INFORMATION_SCHEMA表:有关更多信息,请参阅 第 14.6.2.3 节,“InnoDB 全文索引”

    • ALTER TABLE 可以在不复制表、不阻塞对表的插入、更新和删除或两者的情况下执行 多个操作。这些增强功能统称为在线 DDL。有关详细信息,请参阅第 14.13 节,“InnoDB 和在线 DDL”

    • InnoDB现在支持语句的 子句,它允许在数据目录之外创建表。此增强功能提供了在更适合您的服务器环境的位置创建表的灵活性。例如,您可以将繁忙的表放在SSD 设备上,或将大表放在大容量 HDD设备上。 DATA DIRECTORY='directory'CREATE TABLE

      有关详细信息,请参阅 第 14.6.1.2 节,“在外部创建表”

    • InnoDB现在支持 “可传输表空间的概念,允许 每个表的文件表 空间(.ibd文件)从一个正在运行的 MySQL 实例中导出并导入到另一个正在运行的实例中,而不会因缓冲数据、正在进行的事务和内部数据而导致不一致或不匹配簿记详细信息,例如空间 IDLSN

      该命令的FOR EXPORT子句 FLUSH TABLE将任何未保存的更改从 InnoDB内存缓冲区 写入.ibd文件。.ibd将文件和一个单独的元数据文件复制 到另一台服务器后,语句的DISCARD TABLESPACEandIMPORT TABLESPACE子句 ALTER TABLE用于将表数据带入不同的 MySQL 实例。

      此增强功能提供了移动驻留在 file-per-table 表空间中的表的灵活性, 以更好地适应您的服务器环境。例如,您可以将繁忙的表移动到SSD设备,或将大表移动到大容量 HDD设备。有关详细信息,请参阅第 14.6.1.3 节,“导入 InnoDB 表”

    • 您现在可以将未压缩表的InnoDB 页面大小设置为 8KB 或 4KB,以替代默认的 16KB。此设置由 innodb_page_size 配置选项控制。您在创建 MySQL 实例时指定大小。 一个实例中的所有InnoDB 表空间共享相同的页面大小。较小的页面大小有助于避免某些工作负载和存储设备组合的冗余或低效 I/O,尤其是 块大小较小的SSD设备。

    • 自适应刷新 算法的改进 使 I/O 操作在各种 工作负载下更加高效和一致。新算法和默认配置值有望为大多数用户提高性能和并发性。高级用户可以通过几个配置选项微调他们的 I/O 响应能力。有关详细信息,请参阅 第 14.8.3.4 节,“配置缓冲池刷新”

    • 您可以编写 InnoDB通过 NoSQL 风格的 API 访问表的 MySQL 应用程序。此功能使用流行的 memcached守护进程来中继诸如ADDSETGET键值对之类的请求。这些存储和检索数据的简单操作避免了 SQL 开销,例如解析和构建 查询执行计划. 您可以通过 NoSQL API 和 SQL 访问相同的数据。例如,您可以使用 NoSQL API 进行快速更新和查找,使用 SQL 进行复杂查询并与现有应用程序兼容。有关详细信息,请参阅第 14.20 节,“InnoDB memcached 插件”

    • 表的优化器统计信息InnoDB 以更可预测的时间间隔收集,并且可以在服务器重新启动后保持不变,以提高 计划的稳定性。您还可以控制对InnoDB索引进行的采样量,以使优化器统计信息更加准确并改进查询执行计划。有关详细信息,请参阅 第 14.8.11.1 节,“配置持久优化器统计参数”

    • 新的优化适用于只读 事务,提高了临时查询和报告生成应用程序的性能和并发性。这些优化会在可行时自动应用,或者您可以指定START TRANSACTION READ ONLY以确保事务是只读的。有关详细信息,请参阅 第 8.5.3 节,“优化 InnoDB 只读事务”

    • 您可以将InnoDB 撤消日志系统表空间移出到一个或多个单独 的表空间中。撤消日志的 I/O 模式使这些新表空间成为迁移到 SSD 存储的良好候选者,同时将系统表空间保留在硬盘存储上。有关详细信息,请参阅第 14.6.3.3 节,“撤消表空间”

    • InnoDB您可以通过指定配置选项 来提高校验和功能的效率 innodb_checksum_algorithm=crc32,这会打开更快的校验和算法。此选项替换innodb_checksums选项。使用旧校验和算法(选项值innodb)写入的数据完全向上兼容;使用新校验和算法(选项值 crc32)修改的表空间不能降级到不支持该 innodb_checksum_algorithm选项的早期版本的 MySQL。

    • InnoDB 重做日志文件 的最大组合大小从 4GB 增加到 512GB。innodb_log_file_size 您可以通过该选项指定较大的值 。innodb_log_file_size启动行为现在会自动处理现有重做日志文件的大小与 和 指定的大小不匹配的情况 innodb_log_files_in_group

    • --innodb-read-only 选项允许您以只读模式运行 MySQL 服务器。您可以访问InnoDB只读介质(如 DVD 或 CD)上的表,或者设置一个包含多个实例的数据仓库,这些实例都共享同一个数据目录。有关使用详细信息,请参阅 第 14.8.2 节,“为只读操作配置 InnoDB”

    • 新的配置选项 允许您从熟悉的 0-9 范围内为压缩表 innodb_compression_level选择 压缩 级别。您还可以控制当更新操作导致页面再次被压缩时,缓冲池中的压缩页面是否存储在重做日志中。此行为由 配置选项控制。 InnoDBzlibinnodb_log_compressed_pages

    • InnoDB 压缩表中的 数据块包含一定量的空白空间(填充)以允许DML在不重新压缩新值的情况下修改行数据的操作。过多的填充会增加压缩失败的可能性,当数据在大量更改后确实需要重新压缩时,需要进行页面拆分。现在可以动态调整填充量,这样 DBA 就可以降低压缩失败率,而无需使用新参数重新创建整个表,或者使用不同的页面大小重新创建整个实例。相关的新配置选项是 innodb_compression_failure_threshold_pct, innodb_compression_pad_pct_max

    • 几个新的InnoDB相关 INFORMATION_SCHEMA表提供了有关InnoDB缓冲池的信息、有关表的元数据、索引和InnoDB数据字典中的外键,以及有关性能指标的低级信息,这些信息补充了 Performance Schema 表中的信息。

    • 为了减轻具有大量表的系统上的内存负载,InnoDB现在使用 LRU 算法释放与打开的表关联的内存,以选择未访问时间最长的表。要为打开的表保留更多内存来保存元数据InnoDB,请增加 table_definition_cache 配置选项的值。InnoDB将此值视为 数据字典缓存中打开表实例数的软限制” 。InnoDB有关其他信息,请参阅 table_definition_cache 文档。

    • InnoDB有几个内部性能增强,包括通过拆分内核互斥锁减少争用,将刷新操作从主线程移动到单独的线程,启用多个清除线程,以及减少大内存系统上缓冲池的争用。

    • InnoDB使用一种新的、更快的算法来检测 死锁。有关所有InnoDB 死锁的信息都可以写入 MySQL 服务器错误日志,以帮助诊断应用程序问题。

    • 为避免 重启服务器后的预热时间过长,尤其是对于具有大InnoDB 缓冲池的实例,您可以在重启后立即将页面重新加载到缓冲池中。MySQL 可以在关闭时转储一个紧凑的数据文件,然后查询该数据文件以找到 要在下次重新启动时重新加载的页面。您还可以随时手动转储或重新加载缓冲池,例如在基准测试期间或复杂的报告生成查询之后。请参阅 第 14.8.3.5 节,“保存和恢复缓冲池状态”了解详情。

    • 从 MySQL 5.6.16 开始,innochecksum 支持大于 2GB 的文件。以前,innochecksum只支持最大 2GB 的文件。

    • 从 MySQL 5.6.16 开始,新的全局配置参数 innodb_status_outputinnodb_status_output_locks允许您动态启用和禁用标准 InnoDBMonitor 和 InnoDBLock Monitor 以进行定期输出。通过创建和删除特殊命名的表来启用和禁用定期输出的监视器已被弃用,并且可能会在未来的版本中删除。有关其他信息,请参阅 第 14.17 节,“InnoDB 监视器”

    • 从 MySQL 5.6.17 开始, 在线 DDL 支持扩展到对常规表和分区InnoDB 表的以下操作:

    • 从 MySQL 5.6.42 开始,与 MySQL 捆绑的 zlib 库 版本从 1.2.3 版本提升到 1.2.11 版本。MySQL 在 zlib 库的帮助下实现压缩。

      如果您使用InnoDB压缩表,请参阅第 2.11.3 节,“MySQL 5.6 中的更改”以了解相关的升级影响。

  • 分区。  添加了这些表分区增强功能:

    • 分区的最大数量增加到 8192。这个数量包括表的所有分区和所有子分区。

    • 现在可以使用该 ALTER TABLE ... EXCHANGE PARTITION语句将分区表的分区或子分区表的子分区与具有相同结构的非分区表进行交换。例如,这可用于导入和导出分区。有关更多信息和示例,请参阅 第 19.3.3 节,“使用表交换分区和子分区”

    • 现在支持对一个或多个分区或子分区的显式选择,以用于查询,以及许多作用于分区表的数据修改语句。例如,假设一个 t包含一些整数列 的表c有 4 个分区,分别命名为 p0p1p2p3。然后查询仅返回分区中 小于 5 的SELECT * FROM t PARTITION (p0, p1) WHERE c < 5那些行。p0p1c

      以下语句支持显式分区选择:

      有关语法,请参阅各个语句的说明。有关其他信息和示例,请参阅 第 19.5 节,“分区选择”

    • 分区锁修剪通过帮助消除不受这些语句影响的分区上的锁,极大地提高了许多作用于具有许多分区的表的 DML 和 DDL 语句的性能。此类语句包括许多 SELECT, SELECT ... PARTITION, UPDATE, REPLACE, INSERT以及许多其他语句。有关更多信息,包括性能因此得到改进的语句的完整列表,请参阅 第 19.6.4 节,“分区和锁定”

  • 性能模式。  性能模式包括几个新特性:

    • 表输入和输出的检测。检测操作包括对持久基表或临时表的行级访问。影响行的操作是获取、插入、更新和删除。

    • 根据模式和/或表名按表过滤事件。

    • 按线程过滤事件。为线程收集更多信息。

    • 表和索引 I/O 以及表锁的汇总表。

    • 语句中的语句和阶段的检测。

    • 在服务器启动时配置仪器和消费者,这以前只能在运行时进行。

  • MySQL NDB 集群。  MySQL NDB Cluster 作为单独的产品发布;最新的 GA 版本基于 MySQL 5.6 并使用 7.3 版的NDB 存储引擎。集群支持在主线 MySQL Server 5.6 版本中不可用。有关 MySQL NDB Cluster 7.3 的更多信息,请参阅 第 18 章,MySQL NDB Cluster 7.3 和 NDB Cluster 7.4。目前最新的开发版本是MySQL NDB Cluster 7.4,基于7.4版本的NDB 存储引擎和 MySQL Server 5.6。MySQL NDB Cluster 7.4 目前可用于测试和评估。可以从https://mysql.net.cn/downloads/cluster/获得最新的 MySQL NDB Cluster 7.4 版本。

    有关 MySQL NDB Cluster 7.4 中所做改进的更多信息和概述,请参阅 第 18.2.4.2 节,“NDB Cluster 7.4 中的新增功能”

    MySQL NDB Cluster 7.2(之前的 GA 版本)基于 MySQL Server 5.5,但我们建议新部署使用 MySQL NDB Cluster 7.3。

  • 复制和记录。  添加了这些复制增强功能:

    • MySQL 现在支持使用 全局事务标识符(也称为 GTID)的基于事务的复制。这使得识别和跟踪每个事务成为可能,当它在原始服务器上提交时以及它被任何副本应用时。

      在复制设置中启用 GTID 主要是使用新 变量gtid_modeenforce_gtid_consistency 系统变量完成的。有关为支持 GTID 而引入的其他选项和变量的信息,请参阅第 17.1.4.5 节,“全局事务 ID 选项和变量”

      使用 GTID 时,在启动新副本或故障转移到新源时无需参考日志文件或这些文件中的位置,这大大简化了这些任务。有关使用或不使用二进制日志文件为 GTID 复制配置服务器的更多信息,请参阅 第 17.1.3.3 节,“使用 GTID 进行故障转移和横向扩展”

      基于 GTID 的复制是完全基于事务的,这使得检查源和副本的一致性变得简单。如果在给定源上提交的所有事务也在给定副本上提交,则可以保证两个服务器之间的一致性。

      有关 MySQL 复制中 GTID 的实现和使用的更完整信息,请参阅 第 17.1.3 节,“使用全局事务标识符复制”

    • MySQL 基于行的复制现在支持行图像控制。通过仅记录为每行更改(而不是所有列)唯一标识和执行更改所需的那些列,可以节省磁盘空间、网络资源和内存使用量。binlog_row_image您可以通过将服务器系统变量设置为值之一 minimal(仅记录必需的列)、 full(记录所有列)或 noblob(记录除不需要BLOB或 列之外的所有列)来确定是记录完整行还是最少行 TEXT。看 与二进制日志记录一起使用的系统变量,了解更多信息。

    • MySQL 服务器写入和读取的二进制日志现在是崩溃安全的,因为只有完整的事件(或事务)才会被记录或回读。默认情况下,服务器会记录事件的长度以及事件本身,并使用此信息来验证事件是否已正确写入。binlog_checksum您还可以通过设置系统变量使服务器使用 CRC32 校验和为事件写入校验和 。要使服务器从二进制日志中读取校验和,请使用 master_verify_checksum 系统变量。这 --slave-sql-verify-checksum 系统变量导致副本 SQL 线程从中继日志中读取校验和。

    • MySQL 现在支持将源连接信息和副本中继日志信息记录到表和文件中。这些表的使用可以通过 系统变量master_info_repositoryrelay_log_info_repository 系统变量独立控制。设置 master_info_repositoryTABLE会导致连接信息记录到 slave_master_info表中。设置 relay_log_info_repositoryTABLE会导致中继日志信息记录到slave_relay_log_info 表中。这两个表都是在 mysql系统数据库中自动创建的。

      为了使复制能够对意外停止具有弹性,slave_master_infoslave_relay_log_info表必须各自使用事务存储引擎,并且从 MySQL 5.6.6 开始,这些表是 InnoDB出于这个原因创建的。(错误 #13538891)如果您使用的是以前的 MySQL 5.6 版本,其中这两个表都使用 MyISAM,这意味着,在开始复制之前,您必须将它们都转换为事务存储引擎(例如 InnoDB) 如果您希望复制对意外停止具有弹性。在这种情况下,您可以通过适当的 ALTER TABLE ... ENGINE=...语句来执行此操作。当复制实际运行时,您不应 尝试更改这些表中的任何一个使用的存储引擎。

      有关详细信息,请参阅 第 17.3.2 节,“处理副本服务器的意外停止”

    • mysqlbinlog现在能够以其原始二进制格式备份二进制日志。当使用 --read-from-remote-server--raw选项调用时, mysqlbinlog连接到服务器,请求日志文件,并以与原始格式相同的格式写入输出文件。请参阅 第 4.6.8.3 节,“使用 mysqlbinlog 备份二进制日志文件”

    • MySQL 现在支持延迟复制,这样副本服务器就会故意落后于源服务器至少一段指定的时间。默认延迟为 0 秒。使用新MASTER_DELAY 选项CHANGE MASTER TO设置延迟。

      延迟复制可用于防止用户在源上犯错(DBA 可以将延迟的副本回滚到灾难发生之前的时间)或测试系统在出现延迟时的行为方式等目的。请参阅 第 17.3.10 节,“延迟复制”

    • MASTER_BIND 现在可以通过在发出CHANGE MASTER TO语句 时 使用该选项,使具有多个网络接口的副本仅使用其中一个(排除其他接口) 。

    • 添加了log_bin_basename 系统变量。此变量包含二进制日志文件的完整文件名和路径。而log_bin 系统变量仅显示是否启用二进制日志记录, log_bin_basename 反映了使用 --log-bin服务器选项设置的名称。

      同样, relay_log_basename 系统变量显示中继日志文件的文件名和完整路径。

    • MySQL 复制现在支持在副本上使用多线程并行执行事务。启用并行执行时,副本 SQL 线程充当多个副本工作线程的协调器,具体数量由 slave_parallel_workers 服务器系统变量。副本上多线程的当前实现假定数据和更新在每个数据库的基础上进行分区,并且给定数据库内的更新以与源上相同的相对顺序发生。但是,没有必要协调不同数据库之间的事务。然后事务也可以按数据库分布,这意味着副本上的工作线程可以处理给定数据库上的连续事务,而无需等待对其他数据库的更新完成。

      由于不同数据库上的事务在副本上的发生顺序可能与在源上的顺序不同,因此仅检查最近执行的事务并不能保证源上的所有先前事务都已在副本上执行。这对使用多线程副本时的日志记录和恢复有影响。有关在副本上使用多线程时如何解释二进制日志记录信息的信息,请参阅 第 13.7.5.35 节,“SHOW SLAVE STATUS 语句”

  • 优化器增强功能。  实施了这些查询优化器改进:

    • 优化器现在可以更有效地处理以下形式的查询(和子查询):

      SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,]N;

      这种类型的查询在仅显示较大结果集中的几行的 Web 应用程序中很常见。例如:

      SELECT col1, ... FROM t1 ... ORDER BY name LIMIT 10;
      SELECT col1, ... FROM t1 ... ORDER BY RAND() LIMIT 15;

      排序缓冲区的大小为 sort_buffer_size. 如果行的排序元素N足够小以适合排序缓冲区(如果指定了M+NM),服务器可以避免使用合并文件并完全在内存中执行排序。有关详细信息,请参阅 第 8.2.1.16 节,“LIMIT 查询优化”

    • 优化器实现磁盘扫描多范围读取。当表很大且未存储在存储引擎的缓存中时,使用二级索引上的范围扫描读取行可能会导致对基表的许多随机磁盘访问。通过磁盘扫描多范围读取 (MRR) 优化,MySQL 尝试通过首先仅扫描索引并收集相关行的键来减少范围扫描的随机磁盘访问次数。然后对键进行排序,最后使用主键的顺序从基表中检索行。Disk-sweep MRR 的动机是减少随机磁盘访问的次数,而是实现对基表数据的更顺序扫描。有关详细信息,请参阅 第 8.2.1.10 节,“多范围读取优化”

    • 优化器实现索引条件下推 (ICP),这是针对 MySQL 使用索引从表中检索行的情况的优化。如果没有 ICP,存储引擎会遍历索引以定位基表中的行,并将它们返回给 MySQL 服务器,MySQL 服务器会评估这些WHERE行的条件。在启用 ICP 的情况下,如果 WHERE仅使用索引中的字段可以评估部分条件,则 MySQL 服务器会推送这部分条件WHERE 条件下降到存储引擎。然后,存储引擎使用索引条目评估推送的索引条件,只有在满足条件时才会读取基行。ICP 可以减少存储引擎必须对基表执行的访问次数以及 MySQL 服务器必须对存储引擎执行的访问次数。有关详细信息,请参阅 第 8.2.1.5 节,“索引条件下推优化”

    • EXPLAIN语句现在提供 DELETEINSERTREPLACEUPDATE语句的执行计划信息。以前,仅为报表EXPLAIN 提供信息 。SELECT此外,该EXPLAIN 语句现在可以生成 JSON 格式的输出。请参阅 第 13.8.2 节,“EXPLAIN 语句”

    • 优化器更有效地处理 FROM子句中的子查询(即派生表)。子句中子查询的具体化 FROM被推迟到查询执行期间需要它们的内容时,这提高了性能。此外,在查询执行期间,优化器可能会向派生表添加索引以加快从中检索行的速度。有关详细信息,请参阅 第 8.2.2.4 节,“优化派生表”

    • 优化器使用半连接和物化策略来优化子查询执行。请参阅 第 8.2.2.1 节,“使用半连接转换优化子查询”第 8.2.2.2 节,“使用物化优化子查询”

    • Batched Key Access (BKA) 连接算法现在可用,它使用对连接表的索引访问和连接缓冲区。BKA算法支持内连接、外连接和半连接操作,包括嵌套外连接和嵌套半连接。BKA 的好处包括由于更有效的表扫描而提高了连接性能。有关详细信息,请参阅 第 8.2.1.11 节,“阻止嵌套循环和成批密钥访问连接”

    • 优化器现在具有跟踪功能,主要供开发人员使用。该接口由一组 系统变量和 表提供。有关详细信息,请参阅 MySQL 内部结构:跟踪优化器optimizer_trace_xxxINFORMATION_SCHEMA.OPTIMIZER_TRACE

  • 条件处理。  MySQL 现在支持该GET DIAGNOSTICS语句。GET DIAGNOSTICS为应用程序提供了一种从诊断区域获取信息的标准化方式,例如先前的 SQL 语句是否产生了异常以及它是什么。有关详细信息,请参阅 第 13.6.7.3 节,“GET DIAGNOSTICS 语句”

    此外,纠正了条件处理程序处理规则中的几个缺陷,使 MySQL 的行为更像标准 SQL:

    • 块作用域用于确定选择哪个处理程序。以前,存储程序被视为具有处理程序选择的单一范围。

    • 更准确地解决了条件优先级。

    • 诊断区域清理已更改。错误 #55843 导致在激活处理程序之前从诊断区域清除已处理的条件。这使得条件信息在处理程序中不可用。现在条件信息对处理程序可用,可以用GET DIAGNOSTICS语句检查它。如果在处理程序执行期间尚未清除条件信息,则在处理程序退出时清除条件信息。

    • 以前,一旦条件发生,处理程序就会被激活。现在它们不会被激活,直到条件发生的语句完成执行,此时选择最合适的处理程序。这对于引发多个条件的语句可能会有所不同,如果在语句执行期间稍后引发的条件比较早的条件具有更高的优先级并且两个条件在相同范围内有处理程序。以前,将选择引发第一个条件的处理程序,即使它的优先级低于其他处理程序。

    有关详细信息,请参阅第 13.6.7.6 节,“处理程序的作用域规则”

  • 数据类型。  这些数据类型更改已实施:

  • 主机缓存。  MySQL 现在提供了有关客户端连接到服务器时发生错误的原因的更多信息,并改进了对主机缓存的访问,其中包含客户端 IP 地址和主机名信息,用于避免 DNS 查找。这些更改已经实施:

    • 新的 状态变量提供有关不适用于特定客户端 IP 地址的连接错误的信息。 Connection_errors_xxx

    • 计数器已添加到主机缓存以跟踪适用于特定 IP 地址的错误,并且新的 host_cache性能模式表公开了主机缓存的内容,以便可以使用 SELECT语句对其进行检查。访问主机缓存内容可以回答诸如缓存了多少主机、哪些主机发生了何种连接错误或主机错误计数接近 max_connect_errors 系统变量限制等问题。

    • 现在可以使用 host_cache_size系统变量配置主机缓存大小。

    有关详细信息,请参阅第 5.1.11.2 节,“DNS 查找和主机缓存”第 22.12.10.1 节,“host_cache 表”

  • 开放地理信息系统。  OpenGIS 规范定义了测试两个几何值之间关系的函数。MySQL 最初实现这些函数时,它们使用对象边界矩形并返回与相应的基于 MBR 的函数相同的结果。现在可以使用使用精确对象形状的相应版本。这些版本以ST_前缀命名。例如,Contains() 使用对象边界矩形,而 ST_Contains()使用对象形状。有关详细信息,请参阅 第 12.17.9 节,“测试几何对象之间空间关系的函数”

MySQL 5.6 中弃用的功能

MySQL 5.6 中不推荐使用以下功能;您应该期望它们会在以后的系列中被删除。在显示备选方案的地方,应更新应用程序以使用它们。

对于使用 MySQL 5.6 中已弃用且已在更高 MySQL 系列中删除的功能的应用程序,当从 MySQL 5.6 源复制到更高系列副本时,语句可能会失败,或者可能对源和副本产生不同的影响。为避免此类问题,应修改使用 5.6 中弃用功能的应用程序以避免出现此类问题,并尽可能使用替代方案。

MySQL 5.6 中删除的功能

以下项目已过时,已在 MySQL 5.6 中删除。在显示备选方案的地方,应更新应用程序以使用它们。

对于使用 MySQL 5.6 中删除的功能的 MySQL 5.5 应用程序,语句从 MySQL 5.5 源复制到 MySQL 5.6 副本时可能会失败,或者可能对源和副本产生不同的影响。为避免此类问题,应修改使用 MySQL 5.6 中删除的功能的应用程序以避免它们并尽可能使用替代方案。