文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  ddl_rewriter 插件

7.6.5 ddl_rewriter 插件

MySQL 9.0 包含一个 ddl_rewriter 插件,它在服务器解析和执行 CREATE TABLE 语句之前修改服务器收到的 CREATE TABLE 语句。该插件删除 ENCRYPTIONDATA DIRECTORYINDEX DIRECTORY 子句,这在从加密数据库或将表存储在数据目录之外的数据库创建的 SQL 导出文件中恢复表时可能很有用。例如,该插件可能允许将此类导出文件恢复到未加密的实例中,或者在数据目录之外的路径不可访问的环境中恢复。

在使用 ddl_rewriter 插件之前,请根据 第 7.6.5.1 节,“安装或卸载 ddl_rewriter” 中提供的说明安装它。

ddl_rewriter 在解析之前检查服务器收到的 SQL 语句,并根据以下条件重写它们

  • ddl_rewriter 仅考虑 CREATE TABLE 语句,并且仅当它们是出现在输入行开头或准备好的语句文本开头的独立语句时。 ddl_rewriter 不会考虑存储程序定义内的 CREATE TABLE 语句。语句可以跨多行扩展。

  • 在考虑用于重写的语句中,以下子句的实例将被重写,并且每个实例都被替换为单个空格

    • ENCRYPTION

    • DATA DIRECTORY(在表和分区级别)

    • INDEX DIRECTORY(在表和分区级别)

  • 重写不依赖于字母大小写。

如果 ddl_rewriter 重写了一个语句,它会生成一个警告

mysql> CREATE TABLE t (i INT) DATA DIRECTORY '/var/mysql/data';
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> SHOW WARNINGS\G
*************************** 1. row ***************************
  Level: Note
   Code: 1105
Message: Query 'CREATE TABLE t (i INT) DATA DIRECTORY '/var/mysql/data''
         rewritten to 'CREATE TABLE t (i INT) ' by a query rewrite plugin
1 row in set (0.00 sec)

如果启用了通用查询日志或二进制日志,服务器会将语句写入其中,这些语句在经过 ddl_rewriter 的任何重写后显示。

安装后,ddl_rewriter 会公开性能模式 memory/rewriter/ddl_rewriter 仪器,用于跟踪插件内存使用情况。请参见 第 29.12.20.10 节,“内存摘要表”