全部产品
Search
文档中心

云原生数据库 PolarDB:DDL变更规则与实践

更新时间:Mar 25, 2026

对已建立搜索视图(Search View)的源表进行DDL操作时,不同类型的变更对同步链路的影响不同。本文介绍各类DDL操作对搜索视图的影响规则,以及需要重建搜索视图时的最佳实践。

源表DDL变更影响

下表列出了各类DDL操作对搜索视图同步链路的具体影响。

变更类别

具体操作

同步是否正常

说明

列变更

删除列

存量数据中仍会保留被删除字段的值,增量数据中该字段的值将为null

增加列

新增字段不会被自动同步至搜索视图。如需同步新增字段,请参见搜索视图变更实践

修改列类型

视类型而定

类型兼容(如INT修改为TINYINT):增量数据可以正常同步。

类型不兼容:会导致搜索视图不可用,需重建搜索视图。

重命名列

搜索视图使用创建时的列名。重命名列后搜索视图不识别修改后的源表字段,需重建搜索视图。

其他(调整列顺序、修改默认值、修改注释、扩展VARCHAR长度、修改字符集、修改自增属性、修改NULL约束等)

这些操作不影响搜索视图的同步。

索引变更

增加、删除或修改二级索引

二级索引的变更不影响搜索视图的同步。

删除或修改主键索引

搜索视图依赖源表的主键进行数据同步。变更主键后需重建搜索视图。

表变更

TRUNCATE TABLE

搜索视图无法感知TRUNCATE操作。如需清空表数据并同步至PolarSearch,请使用DELETE FROM替代。

其他(OPTIMIZE TABLE、修改ROW_FORMAT、修改KEY_BLOCK_SIZE、更新统计信息、修改表字符集、修改表注释等)

这些操作不影响搜索视图的同步。

分区表变更

转换为分区表、增加分区、合并分区、重新分配分区、分析分区、检查分区、优化分区、重建分区、转换为非分区表、局部索引等

这些操作不影响搜索视图的同步。

删除分区(DROP PARTITION)、删除表空间(DROP TABLESPACE)、截断分区(TRUNCATE PARTITION

搜索视图无法感知这些操作。如需删除数据并同步至PolarSearch,请使用DELETE FROM替代。

交换分区(EXCHANGE PARTITION)、修复分区(REPAIR PARTITION)、导入表空间(IMPORT TABLESPACE

搜索视图无法感知指定分区数据的直接替换或修复,其他分区数据不受影响。建议执行后需重建搜索视图。

搜索视图变更实践

当需要变更搜索视图的同步结构(如新增同步字段),建议采用“新索引 + 新搜索视图”的方式进行重建。待新搜索视图数据同步完成并验证无误后,再将业务查询流量切换至新的索引。

说明

暂不支持非重建的在线视图变更。

示例:为shop.user表新增字段并重建搜索视图。假设原搜索视图将shop.user表(含id, name, phone, gmt_create字段)同步至user_v1索引。现需新增membership_level字段,并确保线上查询不受影响。

  1. 创建新索引:在PolarSearch节点中创建一个名为user_v2的新索引,并在其映射关系中包含新字段membership_level

    PUT user_v2
    {
      "mappings": {
        "properties": {
          "id":               { "type": "keyword" },
          "name":             { "type": "text", "fields": { "keyword": { "type": "keyword" } } },
          "phone":            { "type": "keyword" },
          "gmt_create":       { "type": "date" },
          "membership_level": { "type": "integer" }
        }
      }
    }
  2. 修改源表:在源端PolarDB MySQL版user表中增加新列。

    ALTER TABLE shop.user ADD COLUMN membership_level TINYINT NOT NULL DEFAULT 0 COMMENT '会员等级';
  3. 新建搜索视图:创建一个新的搜索视图,将shop.user表的数据同步到user_v2索引。

    CREATE SEARCH VIEW user_v2 AS SELECT id, name, phone, gmt_create, membership_level FROM shop.user;
  4. 验证与切换:通过SHOW SEARCH VIEW STATUS查看新搜索视图的状态,待同步时延降至约0~1秒后,验证新索引中的数据是否正确。确认无误后,将业务查询流量切换到新的user_v2索引。

  5. 清理旧资源:观察新搜索视图运行稳定后,删除旧的搜索视图和PolarSearch中的user_v1索引。

    DROP SEARCH VIEW user_v1;