相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.2 mb
PDF (A4)- 41.3 mb
PDF (RPM)- 39.5 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.3 mb
HTML下载(RPM)- 7.8 mb
手册页(TGZ)- 260.6 kb
手册页(Zip)- 371.8 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/MySQL数据字典/数据字典使用差异

14.7数据字典使用差异

与没有数据字典的服务器相比,使用支持数据字典的MySQL服务器需要一些操作上的差异:

  • 以前,启用innodb_read_only控件的系统变量阻止创建和删除表InnoDB存储引擎。从MySQL 8.0开始启用innodb_read_only禁止所有存储引擎执行上述操作。中数据字典表的创建和删除操作mysql系统数据库,但那些表使用InnoDB存储引擎,不能修改时innodb_read_only启用。同样的原则也适用于需要修改数据字典表的其他表操作。例子:

    请注意

    启用innodb_read_only类中的非数据字典表也具有重要的含义mysql系统数据库。具体操作请参见章节的描述innodb_read_only章节15.14“InnoDB启动选项和系统变量”

  • 以前,表中的mysql系统数据库对DML和DDL语句可见。从MySQL 8.0开始,数据字典表是不可见的,不能直接修改或查询。然而,在大多数情况下有相应的INFORMATION_SCHEMA可以查询的表。这使得底层数据字典表可以随着服务器开发的进行而更改,同时保持稳定的INFORMATION_SCHEMA应用程序使用的接口。

  • INFORMATION_SCHEMAMySQL 8.0中的表与数据字典紧密相连,导致了一些使用差异:

    • 在此之前,INFORMATION_SCHEMA控件中的表统计信息统计数据而且表直接从存储引擎检索统计信息。从MySQL 8.0开始,默认使用缓存的表统计信息。的information_schema_stats_expiry系统变量定义了缓存表统计信息过期前的时间段。缺省值是86400秒(24小时)。(要随时更新给定表的缓存值,请使用分析表)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时从存储引擎检索统计信息。若要始终直接从存储引擎检索最新统计信息,请设置information_schema_stats_expiry0.有关更多信息,请参见章节8.2.3,“优化INFORMATION_SCHEMA查询”

    • 几个INFORMATION_SCHEMA表是数据字典表上的视图,这使优化器能够在这些基础表上使用索引。因此,根据优化器的选择,结果的行顺序INFORMATION_SCHEMA查询可能与以前的结果不同。如果查询结果必须具有特定的行排序特征,请包含命令条款。

    • 查询INFORMATION_SCHEMAtable返回的列名可能与之前的MySQL系列不同。应用程序应该以不区分大小写的方式测试结果集列名。如果这是不可行的,一种变通方法是在选择列表中使用列别名,返回所需字母大小写的列名。例如:

      从INFORMATION_SCHEMA中选择TABLE_SCHEMA作为TABLE_SCHEMA, TABLE_NAME作为TABLE_NAME。table WHERE TABLE_NAME = 'users';
    • , mysqldump而且mysqlpump不再倾倒INFORMATION_SCHEMA数据库,即使在命令行上显式地命名。

    • 创建表dst_tbl就像src_tbl要求src_tbl是基表,如果是基表则失败INFORMATION_SCHEMA表,它是数据字典表的视图。

    • 以前,从中选择的列的结果集标题INFORMATION_SCHEMA表使用查询中指定的大写。此查询产生一个报头为的结果集table_name

      SELECT table_name FROM INFORMATION_SCHEMA.TABLES;

      从MySQL 8.0开始,这些头是大写的;上面的查询产生一个报头为的结果集TABLE_NAME.如果需要,可以使用列别名来实现不同的字母大小写。例如:

      SELECT table_name AS 'table_name' FROM INFORMATION_SCHEMA.TABLES;
  • 数据目录影响如何操作, mysqldump而且mysqlpumpmysql系统数据库:

    • 类中的所有表都可以转储mysql系统数据库。从MySQL 8.0开始,, mysqldump而且mysqlpump仅转储该数据库中的非数据字典表。

    • 在此之前,——例程而且——事件类时,选项不需要包含存储的例程和事件——所有数据库选项:转储包含mysql系统数据库,因此也proc而且事件包含存储例程和事件定义的表。从MySQL 8.0开始,事件而且proc不使用表。对应对象的定义存储在数据字典表中,但这些表不会被转储。将存储的例程和事件包含在使用——所有数据库,使用——例程而且——事件明确的选择。

    • 在此之前,——例程选项要求选择特权proc表格从MySQL 8.0开始,这个表就不用了;——例程需要全局选择特权。

    • 以前,可以转储存储的例程和事件定义以及它们的创建和修改时间戳proc而且事件表。从MySQL 8.0开始,这些表没有被使用,因此不可能转储时间戳。

  • 以前,创建包含非法字符的存储例程会产生警告。从MySQL 8.0开始,这是一个错误。