全部產品
Search
文件中心

PolarDB:DDL變更規則與實踐

更新時間:Mar 26, 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;