数据库

MySQL 8.0.0 Changes 版本变更事项(2016-

2018-04-26  本文已影响279人  FireflyWang

原文链接: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-0.html

Note

这是一个里程碑版本,使用者风险自担。里程碑版本间(或者从一个里程碑版本到一个GA版本)的升级不予支持。里程碑版本间的变更非常大,使用者可能会遇到兼容性问题,例如在运行通常的升级过程 mysql_upgrade 时,需要注意数据格式的变化。举例说明,使用者可能终究会发现在升级版本前,使用 mysqldump 转储数据是非常有必要的。(在任何情况下升级版本前做备份都是一种必要的审慎预防措施。)

账户管理事项

C API 事项

libmysqlclient 共享库的主版本号从20(MySQL 5.7)增加到21(MySQL 8.0)。 (Bug #77600,Bug #21363863)

字符集支持

编译事项

在 Solaris 平台上, stlport 库不再使用。因此 SUNPRO_CXX_LIBRARY CMake选项y已无法使用,所以现在的版本中已移除该选项。

组件事项

关于组件基础设置及其 SQL 级接口的常用信息,请查看 MySQL 服务器组件。如果想查看组件内部实现信息,请查看 http://dev.mysql.com/doc/dev/mysql-server/latest/

配置事项

数据字典事项

Important

与没有数据字典的服务器相比,启用数据字典的服务器通常有所差别,详细信息请查看 数据字典用法差异。而且,如果要升级到 MySQL 8.0,升级过程不像以往,会要求你先检查环境条件确认可以升级。更多信息,请查看 升级 MySQL, 尤其是 在 MySQL 5.7 环境中确认升级准备就绪

InnoDB 在 MySQL 8.0.0 发行版中继续使用自己的数据字典。
以下简要描述这个变更的影响:
- 先前与基表和视图关联的.frm 元数据文件不再存在。以前存储在 .frm 文件重的元数据现在存储在数据字典表中。
与之类似,先前存储在 .TRG.TRN 文件中的触发器元数据现在存储在数据字典表中,这些文件不再存在。
- 由于 .frm 文件的移除,因 .frm 文件结构造成的 64KB 表定义大小的限制被取消。
- 由于 .frm 文件的移除, INFORMATION_SCHEMA.TABLESVERSION 字段现在硬编码为10,该值为 MySQL 5.6 中使用的最后一个 .frm 文件版本。
- 提供给 MySQL 数据字典使用的新字典对象缓存将访问过的数据字典对象存储在内存中,以便最小化磁盘I/O重用对象。基于 LRU 的淘汰策略将最近最少使用的对象从内存移除。缓存由存储不同对象类型的几个分区构成。更多信息,请查看 字典对象缓存
- 服务器、内部存储引擎和插件能够使用新的内部数据字典 API 在 MySQL 数据字典中访问和存储数据。内部数据字典 API 包含了处理模式、表空间、表空间文件、表、分区表、表分区数据、触发器、存储例程、事件、表对象、视图、字符集和排序字符集的操作。
由于这个变更,CREATE TRIGGERDROP TRIGGER 产生的数据字典更新和二进制日志写入现在已被合并为单一原子事务。
- 数据字典表现在不可见,但是在大部分情况下,可以使用 INFORMATION_SCHEMA 表替代查询。这样一方面随着服务器继续开发底层数据字典表继续变化,另一方面,可以保持一个稳定的 INFORMATION_SCHEMA 接口以供应用程序使用。
一些 INFORMATION_SCHEMA 表以及被完全重写作为数据字典表的视图:

  1. CHARACTER_SETS
  2. COLLATIONS
  3. COLLATION_CHARACTER_SET_APPLICABILITY
  4. COLUMNS
  5. KEY_COLUMN_USAGE
  6. SCHEMATA
  7. STATISTICS
  8. TABLES
  9. TABLE_CONSTRAINTS
  10. VIEWS
在上述表中查询现在更高效,因为现在这些表可以从数据字典表中获取信息,而非更慢的其他媒介。尤其特别的是,对于每个作为数据字典表的视图的 `INFORMATION_SCHEMA` 表来说:
    - 对于每个针对 `INFORMATION_SCHEMA` 表的查询来说服务器不再一定要创建临时表。
    - 当底层数据字典表存储以前通过目录扫描获得的值(例如,枚举数据库中的数据库名称或表名称)或文件打开操作(例如,从 `.frm` 文件读取信息)时,现在`INFORMATION_SCHEMA` 使用表查询这些值。 (另外,即使对于非视图 `INFORMATION_SCHEMA` 表,也可以通过在数据字典查找来检索数据库和表名等值,不需要目录或文件扫描。)
    - 底层数据字典的索引允许优化器创建高效的执行计划,而之前处理 `INFORMATION_SCHEMA` 表需要对每个查询都构建一个临时表。
上一篇 下一篇

猜你喜欢

热点阅读