Todos los productos
Search
Centro de documentos

PolarDB:Reglas de cambio de DDL y mejores prácticas

Última actualización: Sep 05, 2026

Cuando ejecuta operaciones DDL en tablas de origen que tienen una vista de búsqueda o un procedimiento almacenado ETL (sync_by_sql), los distintos tipos de cambios afectan el vínculo de sincronización de manera diferente. Este tema describe el impacto de cada operación DDL y proporciona las mejores prácticas para reconstruir el vínculo cuando sea necesario.

Impacto de DDL en las tablas de origen

Para obtener información sobre las operaciones DDL, consulte DDL operation guide for PolarDB for MySQL. A continuación se describe cómo las operaciones DDL más comunes en las tablas de origen afectan el vínculo de sincronización.

Tipo de cambio

Operación

Estado de sincronización

Descripción

Cambios de columna

Eliminar una columna

Normal

Los datos existentes conservan los valores de la columna eliminada. En los datos incrementales, el valor del campo es null.

Agregar una columna

Normal

La nueva columna no se agrega automáticamente al vínculo de sincronización. Para agregarla, consulte AutoETL change practices.

Modificar el tipo de una columna

Depende del tipo

Tipos compatibles (por ejemplo, de INT a TINYINT): los datos incrementales se sincronizan con normalidad.

Tipos incompatibles: el vínculo deja de estar disponible. Debe reconstruirlo.

Cambiar el nombre de una columna

Disrupted

El vínculo utiliza los nombres de columna definidos al momento de su creación. Después de cambiar el nombre, no puede identificar la columna renombrada de la tabla de origen. Es necesario reconstruir el vínculo.

Otros (reordenar columnas, modificar valores predeterminados, modificar comentarios, ampliar la longitud de VARCHAR, modificar juegos de caracteres, modificar propiedades de incremento automático, modificar restricciones NULL, etc.)

Normal

Estas operaciones no afectan la sincronización.

Cambios de índice

Agregar, eliminar o modificar un índice secundario

Normal

Los cambios en índices secundarios no afectan la sincronización.

Eliminar o modificar el índice de clave primaria

Disrupted

El vínculo depende de la clave primaria de la tabla de origen para sincronizar los datos. Después de modificar la clave primaria, debe reconstruir el vínculo.

Cambios de tabla

TRUNCATE TABLE

Disrupted

El vínculo no detecta las operaciones TRUNCATE. Para borrar los datos de la tabla y sincronizar el cambio con PolarSearch, utilice DELETE FROM.

RENAME TABLE

Disrupted

El vínculo no reconoce el nuevo nombre de la tabla. La sincronización de datos incrementales se detiene.

Otras (OPTIMIZE TABLE, modificar ROW_FORMAT, modificar KEY_BLOCK_SIZE, actualizar estadísticas, modificar el juego de caracteres de la tabla, modificar los comentarios de la tabla, etc.)

Normal

Estas operaciones no afectan la sincronización.

Cambios en tablas particionadas

Convertir a una tabla particionada, agregar una partición, fusionar particiones, reparticionar, analizar una partición, comprobar una partición, optimizar una partición, reconstruir una partición, convertir a una tabla no particionada, usar índices locales, etc.

Normal

Estas operaciones no afectan la sincronización.

DROP PARTITION, DROP TABLESPACE, TRUNCATE PARTITION

Disrupted

El vínculo no detecta estas operaciones. Para eliminar datos y sincronizar el cambio con PolarSearch, utilice DELETE FROM.

EXCHANGE PARTITION, REPAIR PARTITION, IMPORT TABLESPACE

Disrupted

El vínculo no detecta el reemplazo ni la reparación directa de datos en particiones específicas. Las demás particiones no se ven afectadas. Se recomienda reconstruir el vínculo después de ejecutar estas operaciones.

Prácticas de cambio en AutoETL

Cuando necesite modificar la estructura de sincronización de una vista de búsqueda o de un procedimiento almacenado ETL (por ejemplo, agregar campos de sincronización), determine primero si el cambio se admite en el lugar:

  • Si se admiten los cambios en el lugar, actualice directamente la definición SQL de la vista de búsqueda o del procedimiento almacenado ETL. La sincronización se reanuda desde el desplazamiento original sin necesidad de una resincronización completa.

  • Si no se admiten los cambios en el lugar, reconstruya mediante el enfoque de "índice nuevo + vínculo nuevo". Una vez que la nueva vista de búsqueda o el procedimiento almacenado ETL complete la sincronización y verificación de datos, cambie el tráfico de consultas de su aplicación hacia el nuevo índice.

Compatibilidad con cambios en el lugar

A continuación se muestran los cambios más comunes en vistas de búsqueda o procedimientos almacenados ETL y si admiten modificaciones en el lugar.

Tipo de cambio

Escenario aplicable

Cambio en el lugar compatible

Descripción

Modificar parámetros de tiempo de ejecución

Sincronización de tabla única / Agregación de varias tablas

Sí

Ajustar los parámetros de recursos de sincronización y concurrencia no altera la semántica de cálculo. Se admiten los cambios en el lugar.

Modificar las condiciones de filtro de WHERE

Sincronización de tabla única / Agregación de varias tablas

Sí

Modificar las condiciones de filtro no actualiza los datos existentes que ya se sincronizaron con los nodos de PolarSearch. Para limpiar los datos existentes, reconstruya el vínculo.

Agregar columnas de sincronización

Sincronización de tabla única

Sí

La nueva columna solo aplica a los datos incrementales. Los datos históricos no se retroalimentan. Para retroalimentar todos los datos, reconstruya el vínculo.

Quitar columnas de sincronización

Sincronización de tabla única

Sí

Las columnas quitadas en los nodos de PolarSearch dejan de actualizarse.

Modificar la clave primaria de los índices del nodo de PolarSearch

Sincronización de tabla única / Agregación de varias tablas

No. Se requiere reconstrucción.

La clave primaria también es el identificador del documento en PolarSearch. El cambio es incompatible.

Agregar o quitar tablas de origen de JOIN, o modificar el tipo de JOIN

Agregación de varias tablas

No. Se requiere reconstrucción.

La estructura de sincronización cambia. Se requiere un recálculo completo.

Agregar o quitar GROUP BY o funciones de agregación

Agregación de varias tablas

No. Se requiere reconstrucción.

La estructura de agregación cambia. Los resultados históricos de agregación no se pueden reutilizar.

Agregar o quitar ramas de UNION / UNION ALL

Agregación de varias tablas

No. Se requiere reconstrucción.

La estructura de sincronización cambia. Se requiere un recálculo completo.

Convertir entre sincronización de tabla única y agregación de varias tablas

Sincronización de tabla única / Agregación de varias tablas

No. Se requiere reconstrucción.

La lógica de sincronización cambia por completo.

Cambiar el tipo de datos de la clave primaria, la clave de JOIN o las columnas de agrupación

Sincronización de tabla única / Agregación de varias tablas

No. Se requiere reconstrucción.

Después de cambiar el tipo de una columna clave, el estado de sincronización original no se puede reutilizar.

Cambios en el lugar

Modifique la lógica SQL en el vínculo existente e inicie el vínculo utilizando su estado actual. Para obtener más información, consulte Search views - Modify a search view y ETL stored procedures (sync_by_sql) - Modify a synchronization link.

  • Sintaxis de la vista de búsqueda:

    ALTER SEARCH VIEW view_name UPDATE
      [WITH (option_list)]
      [TO (column_list, PRIMARY KEY (pk_column_list))]
      AS new_select_statement;
  • Sintaxis del procedimiento almacenado ETL:

    SET esl_link_options = "<new_option_list>";
    -- If new_sync_sql is empty, the existing sync SQL is retained
    CALL dbms_etl.update_sync_link('<sync_id>', '<new_sync_sql>'); 

Cambios con "índice nuevo + vínculo nuevo"

El enfoque de "índice nuevo + vínculo nuevo" es el método de cambio más versátil. El vínculo vuelve a escanear los datos y los escribe en el nodo de PolarSearch. Una vez que la nueva vista de búsqueda o el procedimiento almacenado ETL complete la sincronización y verificación de datos, cambie el tráfico de consultas de su aplicación hacia el nuevo índice.

Ejemplo:

Agregue un campo a la tabla shop.user y reconstruya la vista de búsqueda. Suponga que la vista de búsqueda original sincroniza la tabla shop.user (con las columnas id, name, phone, gmt_create) hacia el índice user_v1. Necesita agregar la columna membership_level sin interrumpir las consultas en línea.

  1. Crear un índice nuevo: Cree un índice llamado user_v2 en el nodo de PolarSearch e incluya el nuevo campo membership_level en su asignación.

    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. Modificar la tabla de origen: Agregue la nueva columna a la tabla user en el origen de PolarDB for MySQL.

    ALTER TABLE shop.user ADD COLUMN membership_level TINYINT NOT NULL DEFAULT 0 COMMENT 'Membership level';
  3. Crear una vista de búsqueda nueva: Cree una vista de búsqueda para sincronizar los datos de la tabla shop.user hacia el índice user_v2.

    CREATE SEARCH VIEW user_v2 AS SELECT id, name, phone, gmt_create, membership_level FROM shop.user;
  4. Verificar y realizar el cambio: Ejecute SHOW SEARCH VIEW STATUS para comprobar el estado de la nueva vista de búsqueda. Cuando la latencia de sincronización disminuya a aproximadamente entre 0 y 1 segundo, compruebe los datos del nuevo índice. Después de la verificación, cambie el tráfico de consultas de su aplicación hacia el nuevo índice user_v2.

  5. Limpiar los recursos antiguos: Cuando la nueva vista de búsqueda funcione de manera estable, elimine la vista de búsqueda anterior y el índice user_v1.

    DROP SEARCH VIEW user_v1;