Carga de datos es lento, mientras que el uso de «Insertar/Actualizar» paso en pentaho

Carga de datos es lento, mientras que el uso de «Insertar/Actualizar» paso en pentaho 4.4.0

Estoy usando pentaho 4.4.0. Mientras que el uso de la «Insert/Update» paso en la hervidor la velocidad de la carga de datos es demasiado lento en comparación con mysql. Este paso va a escanear a través de la totalidad de los registros en la tabla antes de la inserción. Si el registro existe se va a hacer una actualización. Entonces, ¿qué debe hacerse para optimizar el rendimiento, mientras que haciendo «Insertar/Actualizar» . y la velocidad del proceso es de 4 r/s, de manera totalmente mis registros será de más de 1 lakh… El proceso de toma 2 horas y media para completar todo el proceso.

InformationsquelleAutor user2909808 | 2014-01-07

4 Kommentare

  1. 4

    La base de sus comentarios parece que quieres el Merge rows (diff) paso seguido por un Synchronize after merge. Compruebe la Pentaho wiki para ver cómo estos pasos de trabajo.

    Otra cosa que hace una gran diferencia es cómo muchas de las filas de resultado en un upsert vs el número total de filas. Si el número de filas resultantes en las escrituras es más que aproximadamente el 40%, @carexcer del último comentario puede ser un mejor enfoque. Si es menos, definitivamente voy a tratar el Merge rows (diff) paso.

    4 – 25 de filas por segundo sonidos de manera lenta. Asegúrese de que los campos marcados como claves están indexadas, lo que paso que usted elija.

    Si la mayor parte de las filas de resultado en un upsert, usted puede ser mejor con una actualización completa. Si ese es el caso, mira el MySQL masiva de los cargadores. Pentaho tiene un lote y transmisión de bulk loader, aunque no sé lo buenos que son.

    • Gracias, señor, he utilizado la combinación de filas(diff) paso seguido por un Sincronizar después de combinar… así que, ahora mi proceso ejecutado 1 minuto para 111744 registros… pero cuando he usado insert/update me tomó 2 horas para 111744 registros…
    • Gran noticia! Tiendo a no utilizar el Insert/Update exactamente por esa razón. Merge rows (diff) es generalmente de manera más rápida. Si eso es lo que funcionó para usted, ¿puede usted marcar mi respuesta aceptada? Thanx.
    • Gracias, yo lo he utilizado y es mucho más rápido, pero cómo insertar/actualizar paso es la diferencia de la combinación/sincronizar paso ¿por qué es más rápido.
  2. 2

    Intenta establecer un gran valor en el campo el Tamaño de la Transacción (Commit).

    Dependiendo del número de filas que se upsert, conjunto más o menos en ese campo.

    Este mejorar mucho el rendimiento en mi caso.

    500 sería un poco de valor si se upsert, en el ejemplo, 100.000 filas, ya que tendrá que ser confirmada 200 veces.

    Menos se compromete, una ejecución más rápida.

    Carga de datos es lento, mientras que el uso de

    • Gracias por su respuesta..si he utilizado el tamaño de confirmación es de 500, a continuación, la velocidad es la misma que antes.. así que puedo hacer….
    • Cuántas filas se carga? Si 500 es demasiado lento, intenta establecer un valor más grande (10.000, 20.000, 50.000, 100.000… dependiendo del número de filas que se upserting). Otra pregunta… es necesario para usar el «Insert/Update» paso? Yo tenía el mismo problema en el pasado, cuando me estaba cargando una tabla de hechos en un datawarehouse, y en mi caso la «Salida» de la Tabla» paso fue muy rápido de «Insertar/actualizar» el paso. Recuerda que menos compromete, una ejecución más rápida.
    • Sí.. sólo quiero Insertar/Actualizar.. mi requisito es Si la fila no puede ser encontrado, se inserta la fila. Si se puede encontrar y los campos a actualizar son los mismos, no se hace nada. Si ellos no son todos iguales, la fila en la tabla se actualiza.
    • Si yo uso el tamaño de confirmación es de 100000, a continuación, la velocidad de inicio de mi proceso de identificación 25 r/s, pero la velocidad se reduce, mientras que los nuevos registros se insertan.. así que al final del proceso la velocidad es de 4 r/s….
    • Creo que tienes un cuello de botella en el proceso. Puede dar más información acerca de lo que estás haciendo? (Instantánea de proceso, por ejemplo). Supongo que se carga un archivo de datos de dimensión o de hecho.
    • para el pequeño número de registros de sus ejecutado rápido pero durante largo tiempo sólo los registros de su ejecución demasiado lento…
    • Cuántos registros son «registros largos»? 1.000.000? 100.000.000? Tal vez usted podría tratar de otra manera. Trate de hacer una Búsqueda de los datos de almacenamiento de tabla que desea upsert e inserciones uso de la «tabla de Salida» con una muy grande «del Tamaño de la Transacción Cometer». La mayor parte del tiempo es utilizado probablemente por las actualizaciones, así que si usted puede ejecutar en paralelo de las inserciones y actualizaciones que se reduce el tiempo de ejecución. No te puedo ayudar más sin conocer la situación particular.
    • Tengo un archivo de texto que tengo que cargar en una base de datos… he utilizado la combinación de filas(diff)… he comparado el archivo de texto de entrada con mesa de entrada de paso.. he utilizado ordenados de mezcla para ordenar las columnas por tanto el archivo de texto de entrada y la tabla de entrada de los pasos.. y he utilizado la combinación de filas(diff) paso seguido por Sincronizar después de combinar… Mi problema es si puedo ejecutar mi trabajo por primera vez, la inserción de los datos de archivo de texto a la base de datos.. y la segunda vez también su inserción mismas filas de nuevo en la base de datos… ¿Puede alguien por favor me ayudan ¿qué error me hicieron..

  3. 1

    useServerPrepStmts – falso

    useCursorFetch – verdadero

    useCompression – verdadero

    Puedes editar la Conexión y poner estos parámetros.
    Esto aumentará el rendimiento.

    Haga doble Clic en la Conexión de Base de datos -> Opciones de la ficha -> Agregar por encima de los parámetros.

  4. 0

    Con mysql todas las otras opciones no funcionan bien
    He de probar con algunos trucos

    Insert into A(a,b) values (1,2);
    Insert into A(a,b) values (2,2);
    Insert into A(a,b) values (3,2);
    

    Cambio

    Insert into A(a,b) values (1,2), (2,2), (3,2);
    

    Puedo hacer de manera perfecta

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea