Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > PostgreSQL

Respuesta
 
Herramientas Desplegado
Antiguo 18-jul-2008, 09:03   #1 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
Pregunta Una carga exageradamente lenta...

Hola a todos, cómo van??

Pues resulta que estoy desarrollando un sistema de información para una empresa, la verdad no es tan complejo... la tabla en este momento que mas tiene registros es una que se llama "aforo" 12.200 registros aprox. Otra tabla tiene 11.100 aprox. Las demás al rededor de los 500, 700 registros.

En ese sistema, hay un módulo que se llama "hoja de ruta", lo que hace ese módulo es llevar el "curso" del todo proceso que se le hace a los elemento(vallas, pendones, cajas de lux, los de la tabla aforo). Para resumir y no extenderme tanto, lo que lleva ese seguimiento es:

1. El estado al producir el elemento (si ya se está produciendo o no, osea, creándolo)

2. el estado de operaciones (si ya se montó o no para mostrarlo al público, lo que muchos llámamos "pautar")

3. El reporte fotográfico, es un módulito dentro de la "hoja de ruta" donde se suben imágenes para comprobar que ya esté finalizado el proceso.

4. Pueden agragar observaciones para cada estado, osea, si produjeron, puden escribir observaciones dentro de la hoja, si pautaron pueden escribir observaciones.

Estos son los 4 procesos mas importantes de esa módulo, además de esto, maneja estados, fechas, inserciones, modificaciones, consultas, eliminaciones de casi toda la DB, puesto que esta modulo es el que integra y recopila toda la info en él.

Todo este preámbulo lo hice para que me ayuden en una cosa, ese módulo está exageradamente lento, la carga de registros, el momento de realizar una actualización, el momento de insertar un registro... Especialmente la carga... todo, todo ese módulo está relentísimo

De lo que he leido por ahí es que tengo que indexar los campos para las búsquedas, no utilizar "select * ...."

Ustedes que mas piensan que puedo hacer para optimizar las consultas y la carga de esa página.. realmente está demasiado lenta(se demora aprox. 20, 22 segundos en cargar).

Aclaro que ese módulo "hoja de ruta" no es una tabla de la DB, es un módulo que consulta en los demás tablas y hace joins entre ellas para traer los datos.

Espero me puedan ayudar y dar sugerencias...

Saludos a todos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 22-jul-2008, 03:17   #2 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.005
Respuesta: Una carga exageradamente lenta...

Si el problema realmente está en la BD, indexa las consultas más lentas, puedes estudiar el plan de ejecución con un EXPLAIN ANALYZE consulta;

Hoja de ruta, es buena candidata a ser una vista!

Salu2
seyko está desconectado   Responder Citando
Antiguo 23-jul-2008, 13:37   #3 (permalink)
Sergestux no se puede cailificar en este momento
 
Avatar de Sergestux
 
Fecha de Ingreso: agosto-2007
Ubicación: Tijuas
Mensajes: 392
Enviar un mensaje por Yahoo  a Sergestux
Respuesta: Una carga exageradamente lenta...

Ponle índices a los campos que involucres en las consultas (Olvidate del select *), no olvides de hacerles vacuum a las tablas involucradas manualmente si es que postgresql no lo hace automaticamente
__________________
You'll be free, hackers, you'll be free
Sergestux está desconectado   Responder Citando
Antiguo 23-jul-2008, 20:39   #4 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
Respuesta: Una carga exageradamente lenta...

Sergestux, seyko muchas gracias por sus sugerencias y recomendaciones, mañana me pondré a la tarea de optimizar ese módulo

Sergestux, la verdad no es que sepa mucho de postgres, sé hacer lo básico, insert, update, delete, select pero mas allá de eso, ni idea jeje. Me podrás explicar eso del "vacum"???

Saludos a todos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 24-jul-2008, 02:59   #5 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.005
Respuesta: Una carga exageradamente lenta...

Cuando borras un registro, en realidad ese espacio fisico no se borra se marca como libre.
VACUUM se encarga de "arreglar" esta situación, puedes bajar el intervalo de autovacuum en postgresql.conf.

VACUUM ANALYZE actualiza las estadisticas de la tabla, en base a dichas estadisticas, se define el plan de ejecución de las consultas.

Más info: http://www.postgresql.org/docs/8.3/i...ql-vacuum.html

PD: No uses VACUUM FULL.

Salu2
seyko está desconectado   Responder Citando
Antiguo 25-jul-2008, 07:35   #6 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
Respuesta: Una carga exageradamente lenta...

Hola seyko, cómo vas?

Tengo muchas cosas pendientes por hacer a esa hoja de ruta Estuve leyendo el link que me dejaste, y me dices que no use VACUMM FULL, dice que es mas lento pero "compacta" y recupera mas espacio libre... Cúal es ese punto a tener en cuenta para no usarlo??

Saludos, de nuevo gracias
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 30-jul-2008, 03:23   #7 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.005
Respuesta: Una carga exageradamente lenta...

VACUUM FULL libera de verdad todo el espacio marcado como libre y mueve tuplas, es similar a una "defragmentación" de un disco duro, Es lento y bloquea la tabla que procesa!

Salu2
seyko está desconectado   Responder Citando
Antiguo 30-jul-2008, 07:41   #8 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
De acuerdo Respuesta: Una carga exageradamente lenta...

Seyko de nuevo gracias!! Me queda claro
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 05-ago-2008, 17:31   #9 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
Respuesta: Una carga exageradamente lenta...

Hola de nuevo, cómo van??

Pues bien, estos días he estado en la tarea de optimizar la "hoja_de_ruta"... Tengo unas dudas respecto a la manera de como lo estoy haciendo... No sé si es posible que me aclaren si lo estoy o no haciendo bien....

http://app.efectimedios.com/optimizar_hoja_ruta.php

En ese link verán lo que intento hacer al momento de "optmizar", aparece, la consulta original y la consulta "optmizada", en "optimizada" dejo una breve explicación de lo que intento...

Si quizás no entienden lo que hago.. por fa me preguntan para aclararle, como dije antes, lo que necesito es que me digan si lo que estoy haciendo lo ven bien o se debe hacer de otra manera....

Gracias de antemano

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 06-ago-2008, 01:00   #10 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.005
Respuesta: Una carga exageradamente lenta...

prueba creando indices en las FK y en los campos que intervengan en el where, por ejemplo:
Código:
where novedades.usuario_id=usuarios.usuario_id and novedades.cliente_id=clientes.cliente_id and nov_estado=1 and nov_aprobacion=1 and nov_anulada<>1 and nov_subtipo<>4 and nov_subtipo<>8 and nov_fecha between '2006-07-30' and '2008-07-30';
Aqui un indice en las FK y en nov_fecha se notará.

A tener en cuenta que el planificador no siempre utilizará un indice, si "cree" que es mejor no usarlo no lo hará, se puede forzar el uso de indices, pero no es muy recomendable.

Salu2
seyko está desconectado   Responder Citando
Antiguo 06-ago-2008, 07:36   #11 (permalink)
Carxl está en el buen camino
 
Avatar de Carxl
 
Fecha de Ingreso: agosto-2006
Ubicación: Algún lugar en Colombia
Mensajes: 1.574
Enviar un mensaje por MSN a Carxl Enviar un mensaje por Skype™ a Carxl
Respuesta: Una carga exageradamente lenta...

Hola seyko, gracias por tu respuesta... intentaré hacer lo que me dices... igual ya tengo en esa consulta que me muestras, dos índices, nov_fecha y nov_estado

Quiero hacerte un par de consultas:

1. Cuántos índices son recomendables crear en una tabla y/o consulta??
2. Resulta que un colega me dijo que se puede utilizar dos campos de la tabla como un índice... supón, nov_fecha y nov_subtipo hagan un solo índice...

Código:
CREATE INDEX estado_fecha_novedad ON novedades USING btree (nov_estado,nov_fecha)
Hacer esto es recomendable ?? Lo probé pero no vi la diferencia, al menos en tiempo, por qué y para qué se realizan este tipo de índices compuestos?, tú sabes??

Gracias man,

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
Por ahora sin blog...
Made in Colombia papá!
Carxl está desconectado   Responder Citando
Antiguo 07-ago-2008, 01:31   #12 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.005
Respuesta: Una carga exageradamente lenta...

Cita:
Iniciado por Carxl Ver Mensaje
Hola seyko, gracias por tu respuesta... intentaré hacer lo que me dices... igual ya tengo en esa consulta que me muestras, dos índices, nov_fecha y nov_estado
Pues no esta utilizando el indice.

Cita:
Quiero hacerte un par de consultas:

1. Cuántos índices son recomendables crear en una tabla y/o consulta??
Tantos indices como sean necesarios. Mínimo recomiendo, campos de PK, campos de FK, y campos unicos. A partir de aqui los necesarios por ser criterios de filtrados.
Tener indices que no se utilicen es contraproducente.

Cita:
2. Resulta que un colega me dijo que se puede utilizar dos campos de la tabla como un índice... supón, nov_fecha y nov_subtipo hagan un solo índice...

Código:
CREATE INDEX estado_fecha_novedad ON novedades USING btree (nov_estado,nov_fecha)
Hacer esto es recomendable ?? Lo probé pero no vi la diferencia, al menos en tiempo, por qué y para qué se realizan este tipo de índices compuestos?, tú sabes??

Gracias man,

Saludos
Si, existen indices de varios campos.
Es recomendable? Depende!
Cada cosa en su sitio, son buenos por ejemplo para PKs de más de un campo, para temas de GIS, etc.

Para más info como siempre:
http://www.postgresql.org/docs/8.3/i...e/indexes.html

Salu2
seyko está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 03:41.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93