Re: [MASSMAIL]Re: [pgsql-es-ayuda] insert eficiente
ALTER TABLE tutabla DISABLE TRIGGER ALL; - Mensaje original - De: "Alvaro Herrera" <alvhe...@2ndquadrant.com> Para: "Gerardo Herzig" <gher...@fmed.uba.ar> CC: "Fernando Rodiño" <frodi...@gmail.com>, "Ayuda" <pgsql-es-ayuda@postgresql.org> Enviados: Viernes, 2 de Octubre 2015 11:47:36 Asunto: [MASSMAIL]Re: [pgsql-es-ayuda] insert eficiente Gerardo Herzig escribió: > Para los bulk inserts suele ayudar: > * borrar los indices (y recrearlos luego de la insercion) > * set maintenance_work_mem TO 'una buena porcion de la RAM' (para acelerar la > creacion de los indices) > * set syncronous_commit to 'OFF' (si puedes tomar el riesgo de perder alguna > transaccion) > * deshabilitar (temporalmente) autovacuum para la tabla que recibe esos datos BEGIN; DROP INDEX ... TRUNCATE TABLE ... -- borra todos los datos existentes COPY (FROZEN) ... -- carga los datos nuevos CREATE INDEX ... COMMIT El TRUNCATE sirve para que el COPY no necesite hacer wal-logging de cada inserción; el FROZEN de copy (es una opción muy nueva) permite que las tuplas se inserten "frozen" y no requieran un freeze posterior (que causaría más escrituras). -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda 17 de octubre: Final Cubana 2015 del Concurso de Programación ACM-ICPC. http://coj.uci.cu/contest/contestview.xhtml?cid07 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [MASSMAIL]Re: [pgsql-es-ayuda] insert eficiente
mala mia, disculpen, ya me di cuenta del error, INDICES NO TRIGGERS - Mensaje original - De: "Arcel Labrada Batista" <alabra...@uci.cu> CC: "Gerardo Herzig" <gher...@fmed.uba.ar>, "Fernando Rodiño" <frodi...@gmail.com>, "Ayuda" <pgsql-es-ayuda@postgresql.org> Enviados: Lunes, 5 de Octubre 2015 8:52:08 Asunto: Re: [MASSMAIL]Re: [pgsql-es-ayuda] insert eficiente ALTER TABLE tutabla DISABLE TRIGGER ALL; - Mensaje original - De: "Alvaro Herrera" <alvhe...@2ndquadrant.com> Para: "Gerardo Herzig" <gher...@fmed.uba.ar> CC: "Fernando Rodiño" <frodi...@gmail.com>, "Ayuda" <pgsql-es-ayuda@postgresql.org> Enviados: Viernes, 2 de Octubre 2015 11:47:36 Asunto: [MASSMAIL]Re: [pgsql-es-ayuda] insert eficiente Gerardo Herzig escribió: > Para los bulk inserts suele ayudar: > * borrar los indices (y recrearlos luego de la insercion) > * set maintenance_work_mem TO 'una buena porcion de la RAM' (para acelerar la > creacion de los indices) > * set syncronous_commit to 'OFF' (si puedes tomar el riesgo de perder alguna > transaccion) > * deshabilitar (temporalmente) autovacuum para la tabla que recibe esos datos BEGIN; DROP INDEX ... TRUNCATE TABLE ... -- borra todos los datos existentes COPY (FROZEN) ... -- carga los datos nuevos CREATE INDEX ... COMMIT El TRUNCATE sirve para que el COPY no necesite hacer wal-logging de cada inserción; el FROZEN de copy (es una opción muy nueva) permite que las tuplas se inserten "frozen" y no requieran un freeze posterior (que causaría más escrituras). -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda 17 de octubre: Final Cubana 2015 del Concurso de Programación ACM-ICPC. http://coj.uci.cu/contest/contestview.xhtml?cid07 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda 17 de octubre: Final Cubana 2015 del Concurso de Programación ACM-ICPC. http://coj.uci.cu/contest/contestview.xhtml?cid07 17 de octubre: Final Cubana 2015 del Concurso de Programación ACM-ICPC. http://coj.uci.cu/contest/contestview.xhtml?cid07 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] insert eficiente
- Mensaje original - > De: "Fernando Rodiño" <frodi...@gmail.com> > Para: "Ayuda" <pgsql-es-ayuda@postgresql.org> > Enviados: Jueves, 1 de Octubre 2015 19:45:08 > Asunto: [pgsql-es-ayuda] insert eficiente > > > Buenas tardes a todos > > > > Acudo a su amable ayuda para lo siguiente: > > > Tenemos una implementación de Postgres 9.3 y estamos en un proceso > con Pentaho Data Integration donde se hace un mapeo de unos archivos > planos a una tabla, se realiza una adecuación de estos datos y se > hace un insert masivo a una tabla destino X, hasta ahí todo > funciona, el problema que tenemos es que es mucha información y la > tabla destino tiene varios indexes que hacen más demorada la > operación, en Postgres 8.4 uno podía inactivar los indexes mientras > ejecutaba la operación, pero en Postgres 9.3 no funciona esa > estrategia o almenos como se hacia en Postgres 8.4 no funciona: > update pg_index set indisvalid = false where indexrelid = > 'i_nombre_index'::regclass; Alguien conoce una estrategia para > realizar este tipo de operaciones que funcione en postgres 9.3 > > > Muchas gracias por su ayuda. > Para los bulk inserts suele ayudar: * borrar los indices (y recrearlos luego de la insercion) * set maintenance_work_mem TO 'una buena porcion de la RAM' (para acelerar la creacion de los indices) * set syncronous_commit to 'OFF' (si puedes tomar el riesgo de perder alguna transaccion) * deshabilitar (temporalmente) autovacuum para la tabla que recibe esos datos HTH Gerardo - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] insert eficiente
Gerardo Herzig escribió: > Para los bulk inserts suele ayudar: > * borrar los indices (y recrearlos luego de la insercion) > * set maintenance_work_mem TO 'una buena porcion de la RAM' (para acelerar la > creacion de los indices) > * set syncronous_commit to 'OFF' (si puedes tomar el riesgo de perder alguna > transaccion) > * deshabilitar (temporalmente) autovacuum para la tabla que recibe esos datos BEGIN; DROP INDEX ... TRUNCATE TABLE ... -- borra todos los datos existentes COPY (FROZEN) ... -- carga los datos nuevos CREATE INDEX ... COMMIT El TRUNCATE sirve para que el COPY no necesite hacer wal-logging de cada inserción; el FROZEN de copy (es una opción muy nueva) permite que las tuplas se inserten "frozen" y no requieran un freeze posterior (que causaría más escrituras). -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] insert eficiente
Si desactivar los indices no funciona, has pensado en hacer un drop y recrearlos despues de la carga ? On 10/2/2015 11:45 AM, Fernando Rodiño wrote: Buenas tardes a todos Acudo a su amable ayuda para lo siguiente: Tenemos una implementación de Postgres 9.3 y estamos en un proceso con Pentaho Data Integration donde se hace un mapeo de unos archivos planos a una tabla, se realiza una adecuación de estos datos y se hace un insert masivo a una tabla destino X, hasta ahí todo funciona, el problema que tenemos es que es mucha información y la tabla destino tiene varios indexes que hacen más demorada la operación, en Postgres 8.4 uno podía inactivar los indexes mientras ejecutaba la operación, pero en Postgres 9.3 no funciona esa estrategia o almenos como se hacia en Postgres 8.4 no funciona: /*update pg_index set indisvalid = false where indexrelid = 'i_nombre_index'::regclass; */Alguien conoce una estrategia para realizar este tipo de operaciones que funcione en postgres 9.3 Muchas gracias por su ayuda. /**/ -- Fernando Rodiño Montiel. Ingeniero de Sistemas Celular: 3014870456 Medellín.2015 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda