Sybase SQL Anywhere - INSERCION MASIVA DE DATOS

 
Vista:
Imágen de perfil de Oscar
Val: 1
Ha aumentado 1 puesto en Sybase SQL Anywhere (en relación al último mes)
Gráfica de Sybase SQL Anywhere

INSERCION MASIVA DE DATOS

Publicado por Oscar (1 intervención) el 15/11/2018 20:29:16
Buenas tardes.

Tengo el siguiente código.

Insert into tabla2
SELECT tabla1.campo1,
tabla1.campo2,
tabla1.campo3,
tabla1.campo4,
from tabla1.

El problema es que ese INSERT tiene 17 millones de registros lo cual demora bastante tiempo.
Mi pregunta es si hay alguna forma de optimizar esa acción o inclusive hacer la insercion por bloques de N cantidad de registros?

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Optimización de INSERT masivo

Publicado por Alejandro (46 intervenciones) el 21/02/2024 19:43:01
Óscar, cuando se enfrenta a la inserción masiva de un gran número de registros, hay algunas estrategias que puedes seguir para mejorar el rendimiento. Aquí hay algunas sugerencias:

1. Insertar en bloques:
- En lugar de realizar una única inserción de 17 millones de registros, puedes dividir la operación en bloques más pequeños. Por ejemplo, podrías insertar bloques de 100,000 registros a la vez. Esto puede mejorar el rendimiento y evitar bloqueos prolongados de la tabla.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- Ejemplo de inserción por bloques de 100,000 registros
DECLARE @BloqueSize INT = 100000;
DECLARE @Inicio INT = 1;
DECLARE @Fin INT = @Inicio + @BloqueSize - 1;
 
WHILE @Inicio <= 17000000
BEGIN
    INSERT INTO tabla2
    SELECT campo1, campo2, campo3, campo4
    FROM tabla1
    WHERE RowNum BETWEEN @Inicio AND @Fin;
 
    SET @Inicio = @Fin + 1;
    SET @Fin = @Inicio + @BloqueSize - 1;
END

2. Índices:
- Asegúrate de que las tablas involucradas tengan los índices necesarios. Demasiados índices pueden afectar el rendimiento de las operaciones de escritura, pero los índices adecuados pueden mejorar el rendimiento de las consultas.

3. Desactivar índices temporales:
- Puedes desactivar temporalmente los índices no esenciales antes de la operación de inserción masiva y activarlos nuevamente después. Esto puede acelerar la operación.

1
2
3
4
5
6
7
8
9
-- Desactivar índices
ALTER TABLE tabla2
DISABLE ALL INDEXES;
 
-- Realizar la inserción masiva
 
-- Activar índices nuevamente
ALTER TABLE tabla2
ENABLE ALL INDEXES;

4. Verificar configuración del servidor:
- Asegúrate de que la configuración del servidor Sybase SQL Anywhere sea óptima para operaciones masivas. Puedes revisar y ajustar parámetros como el tamaño del búfer de registro y el tamaño del búfer de datos.

Recuerda siempre hacer pruebas en un entorno de desarrollo o realizar copias de seguridad antes de realizar cambios significativos en la producción. La eficacia de estas sugerencias puede variar según la configuración específica de tu base de datos y servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar