¿Cómo aumentar el rendimiento de ETL en Informatica para Netezza como origen y SQL Server como destino?

dba.stackexchange https://dba.stackexchange.com/questions/111584

  •  29-09-2020
  •  | 
  •  

Pregunta

¿Qué ajustes o configuración en el servidor de Informatica, en el propio software de Informatica o en los servidores de bases de datos se pueden cambiar para aumentar el rendimiento de ETL de Informatica?¿Cuáles son algunos puntos de referencia que podemos establecer para solucionar problemas de rendimiento?Estamos utilizando específicamente Netezza como origen y SQL Server como destino.

Excluya de esta pregunta los subprocesos múltiples y la partición de Informatica.

Esto lo hemos hecho en el pasado:

  • reiniciar los servidores cada cierto tiempo
  • eliminar índices en las tablas de destino en SQL Server antes de la carga ETL
  • aumentar el nivel de compromiso
¿Fue útil?

Solución

Si PowerCenter Informatica es el cuello de botella (y no NETAZZA, SQL Server o la red), hay una configuración en la sesión PowerCenter que puede ayudar. IIRC es "Tamaño de búfer de registro" o algo similar. Cámbialo de Predeterminado a 512 MB. Si eso ayuda, es mejor reducirlo a algo más sensible al experimentar con valores más bajos.

Esta configuración no es el tamaño que utiliza para mantener un solo registro en la memoria, pero debe ser lo menos lo suficientemente grande como para adaptarse a un registro en él. La ayuda incorporada es un poco vaga en este punto.

En el escenario opuesto (SQL Server -> Netezza), he notado que los tipos de datos también pueden jugar una parte. PowerCenter puede sobrestimar en exceso la cantidad de memoria que necesita reservar para un registro único si el diseño de la tabla de origen contiene tipos de datos largos / ntext / Varbinary. Netezza no tiene esos, pero tal vez también importa si el objetivo contiene campos grandes.

El archivo de registro de sesión de PowerCenter debe contener información sobre la cantidad de memoria que reserva para transferir los datos. Si es demasiado bajo, puede convertirse en el cuello de botella.

Otros consejos

Mi experiencia con Informatica accediendo tanto a SQL Server como a Netezza se puede resumir en esto:

  1. La lectura es igualmente rápida (100.000 filas/seg;a veces el doble de esa velocidad), siempre que el SQL seleccionado sea lo suficientemente simple, es decir:

    • sin uniones;

    • No group by;

    • ningún tipo;

    • where cláusulas solo contra la clave de clúster de la tabla de SQL Server.

    En todos los demás casos, Netezza vencerá a SQL Server.

  2. Los insertos con PowerCenter son del tipo array tipo, y SQL Server normalmente puede recibir de 2000 a 4000 filas por segundo.

    Las inserciones en Netezza funcionan entre 80.000 y 200.000 filas por segundo si PowerCenter no es el cuello de botella.

  3. Las actualizaciones/eliminaciones con PowerCenter han sido notoriamente lentas en todas las bases de datos durante años, ya que el SQL ejecutado es singletons y no un array.Por lo tanto, una sesión normalmente cae a ~500 filas por segundo con SQL Server como destino y a solo 8 filas por segundo con Netezza.

    Debido a eso, hemos definido tablas provisionales por destino de PowerCenter en Netezza y escribimos todas las actualizaciones/eliminaciones en esas tablas mientras se ejecuta la sesión.Estos cambios luego se aplican en masa como una target post SQL.Esto se adapta bien ya que todas las operaciones de escritura ahora se ejecutan a velocidades similares a las de inserción.

La mejor solución para el famoso cuello de botella del escritor con SQL Server como destino es pasar mucho tiempo dentro de PowerCenter comparando el origen con el destino y escribir solo la diferencia que detecte.Eso te llevará muy lejos pero no escalará.

Mi última pregunta es, por qué ¿mover datos de Netezza a SQLserver?Si su negocio tiene requisitos que realmente no se pueden atender en Netezza, especifique cuáles, tal vez podrían abordarse.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top