Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ TaurusDB/ Preguntas frecuentes/ Uso de la base de datos/ ¿Cómo se escriben datos o se crean índices para una tabla ultragrande?
Actualización más reciente 2025-05-22 GMT+08:00

¿Cómo se escriben datos o se crean índices para una tabla ultragrande?

Escribir datos en una tabla ultragrande

Para una tabla con decenas de millones o cientos de millones de registros de datos, se recomienda utilizar los siguientes métodos para mejorar la eficiencia de escritura de datos:
  • Eliminar índices innecesarios.

    Cuando se actualizan los datos, también se actualizan los datos de índice. Para una tabla con grandes cantidades de datos, evite crear demasiados índices, ya que esto puede ralentizar el proceso de actualización. Eliminar índices innecesarios según la evaluación del servicio.

  • Utilice la inserción por lotes para insertar varios registros de datos.

    Esto se debe a que la inserción por lotes solo requiere una única solicitud remota a la base de datos.

    Por ejemplo:

    insert into tb1 values(1,'value1');
    insert into tb2 values(2,'value2');
    insert into tb3 values(3,'value3');

    Después de la optimización:

    insert into tb values(1,'value1'),(2,'value2'),(3,'value3');
  • Al insertar varios registros de datos, controle manualmente las transacciones.

    Mediante el control manual de las transacciones, se pueden fusionar múltiples unidades de ejecución en una sola transacción, lo que evita la sobrecarga de múltiples transacciones y garantiza la integridad y la consistencia de los datos.

    Por ejemplo:

    insert into table1 values(1,'value1'),(2,'value2'),(3,'value3');
    insert into table2 values(4,'value1'),(5,'value2'),(6,'value3');
    insert into table3 values(7,'value1'),(8,'value2'),(9,'value3');

    Después de la optimización:

    start transaction;
    insert into table1 values(1,'value1'),(2,'value2'),(3,'value3');
    insert into table2 values(4,'value1'),(5,'value2'),(6,'value3');
    insert into table3 values(7,'value1'),(8,'value2'),(9,'value3');
    commit;

    Tener demasiadas sentencias combinadas puede dar lugar a transacciones grandes, lo que bloqueará la tabla durante mucho tiempo. Evaluar las necesidades de servicio y controlar el número de estados en una transacción en consecuencia.

  • Al insertar datos, inserte las claves principales en orden secuencial. Puede utilizar AUTO_INCREMENT.

    La inserción de claves principales en un orden aleatorio puede provocar la separación de páginas, lo que puede afectar negativamente al rendimiento.

    Por ejemplo:

    Insertar claves principales en un orden aleatorio: 6 2 9 7 2

    Insertar claves principales en orden secuencial: 1 2 4 6 8

  • Evite usar UUID u otras claves naturales, como números de tarjetas de identificación, como claves principales.

    Los UUID generados cada vez se desordenan, e insertarlos como claves primarias puede provocar la separación de páginas, lo que puede afectar negativamente al rendimiento.

  • Evite modificar las claves primarias durante las operaciones de servicio.

    La modificación de las claves primarias requiere modificar la estructura del índice, lo que puede ser costoso.

  • Reduzca la longitud de las claves principales tanto como sea posible si el negocio lo permite.
  • No utilice claves externas para mantener relaciones de claves externas. Use programas en su lugar.
  • Operaciones de lectura y escritura separadas. Realice operaciones de lectura en réplicas de lectura para evitar la inserción lenta causada por las E/S.

Creación de índices para una tabla ultragrande

Para una tabla con decenas de millones o cientos de millones de registros de datos, se recomienda utilizar los siguientes métodos para mejorar la eficacia de la creación de índices:

  • Mantenga el campo de indexación lo más pequeño posible.
  • Seleccione una columna con distinción alta como columna de índice.
  • Si cada campo de la tabla no puede garantizar la exclusividad, no puede garantizar NOT NULL o no es adecuado para la indexación, cree una columna de incremento automático de ID personalizada como clave principal, lo que garantizará automáticamente la inserción ordenada.
  • Para crear un índice, primero inserte los datos y luego ejecute el comando alter table add index.
  • Utilice DDL paralelo de TaurusDB para crear un índice. Cuando los recursos de hardware de la base de datos están inactivos, puede utilizar DDL paralelo para acelerar la ejecución de DDL, evitando que las operaciones DML posteriores se bloqueen y acortando la ventana de operación de DDL.