Power Builder - DW recupera bien, pero muy lento.......

 
Vista:
sin imagen de perfil

DW recupera bien, pero muy lento.......

Publicado por Andres (331 intervenciones) el 09/07/2007 23:54:09
Hola Amigos Foristas

Tengo una aplicacion, y en un informe de gestion, estadisticas de ventas de productos separados por mes. Este informe se va al detalle de facturas

Me recupera la informacion bien, pero muy lento........
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

RE:DW recupera bien, pero muy lento.......

Publicado por Leopoldo Taylhardat (710 intervenciones) el 10/07/2007 17:24:36
Saludos...

Todo se resume a muchos conceptos...

1... Que tipo de BD usas?
2... El diseño de la BD...Esta bien diseñada en cuando a índices, claves foráneas, etc...
3... El método de búsqueda... es a través de subquerys... y estos están optimizados????
4... Es una BD en RED? está bien configurada la red??? que tipo de protocolo usa?
5... Que máquina usas de servidor de la BD???,

etc., etc. etc. etc.......

Como ves es dificil determinar la causa de que sea lento el proceso en forma virtual...
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
sin imagen de perfil

RE:DW recupera bien, pero muy lento.......

Publicado por Andres (331 intervenciones) el 10/07/2007 21:31:09
Hola Leo

Tienes razon de tus comentarios, sobre tus comentarios

1... Que tipo de BD usas
- MySql from Windows y Linux

2... El diseño de la BD...Esta bien diseñada en cuando a índices, claves foráneas, etc...
- Si, tengo definidos los indice necesarios para el acceso de la informacion

3... El método de búsqueda... es a través de subquerys... y estos están optimizados????
- No cacho

4... Es una BD en RED? está bien configurada la red??? que tipo de protocolo usa?
- Se define un alias que esta definido en la OBDC

5... Que máquina usas de servidor de la BD???,
- No cacho


Lo que pasa que tengo una DW que voy a ver que tipo es (en realidad siempre o casi siempre ocupo la TABULAR), que tiene varios argumentos.

1.- Empresa, tipo string
2-- Planta, tipo string
3.- Fecha Desde. , tipo datetime
4.- Fecha Hasta. , tipo datetime
5 - Tipo, , tipo string Arrays
6.- Factor, , tipo number
7.- Columna, tipo string
8.- Grupo, tipo string
9.- Factores, , tipo number
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

RE:DW recupera bien, pero muy lento.......

Publicado por amilcar (407 intervenciones) el 11/07/2007 11:45:25
hola, dependiendo del volumen de infomacion, quizas te convenga generar un store procedure para obtener los datos y luego si haces un dw seleccionando dicho sp como fuente de datos.

espero te sirva
saludos desde argentina
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
sin imagen de perfil

RE:DW recupera bien, pero muy lento.......

Publicado por Andres (331 intervenciones) el 11/07/2007 17:02:15
Amilcar

Llevo varios alos de autodidacta y nunca he creado un store procedure, me puedes explicar cuales son los pasos para lograr esto

Atte

Andres
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

RE:DW recupera bien, pero muy lento.......

Publicado por amilcar (407 intervenciones) el 11/07/2007 18:25:06
hola, mira primero q nada, debes verificar q tu motor soporte store procedure.
si es asi, lo q tienes q hacer es crear el sp, definir si tiene argumentos de entrada y los argumentos de salida q son los q recibiran los datos devueltos por la sentencia sql del sp. dependiendo del soft q uses puedes crearlo en forma grafica o sino deberas tipearlo todo.

te muestro un ejemplo de sp , muestra todas las facturas de un cliente

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE SP_FACTURAS_X_CUENTA
(
CUENTA INTEGER //argumento de entrada, codigo del cliente
)
RETURNS // argumentos de salida
(
H_ID INTEGER,
H_COMP_TIPO VARCHAR(4),
H_COMP_NRO DOUBLE PRECISION,
H_PERIODO_FACTURADO VARCHAR(35),
FECHAEMISION TIMESTAMP,
NOMBRE VARCHAR(40),
CONEXION_ID INTEGER
)
AS

begin // sentencia sql
for
SELECT HISTORICO_FACTURACION.H_ID,
HISTORICO_FACTURACION.H_COMPROBANTE_TIPO,
HISTORICO_FACTURACION.H_COMPROBANTE_NUMERO,
HISTORICO_FACTURACION.H_DETALLE_PERIODO_FACTURADO,
HISTORICO_FACTURACION.H_FECHA_EMISION,
PERSONAS.PERSONA_NOMBRE,
HISTORICO_FACTURACION.CONEXION_id
FROM HISTORICO_FACTURACION,
PERSONAS
WHERE ( PERSONAS.PERSONA_ID = HISTORICO_FACTURACION.PERSONA_ID ) and
( HISTORICO_FACTURACION.CONEXION_ID = :cuenta )
into :h_id,:h_comp_tipo,:h_comp_nro,:h_periodo_facturado,:fechaemision,
:nombre,:conexion_id
do
begin
suspend;
end
end
^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;

bueno espero te de una idea.
si logras hacer andar el sp en tu motor de base de datos, solo te queda en power crear un dw con sp como fuente de datos, ahi seleccionar el sp, definis los argumentos q recibiran los datos y listo.

la ventaja de usar sp, es q es mucho mas rapido q usar sentencias sql , mejoran el trafico en la red, etc,etc.

cualquier duda a tus ordenes
saludos desde argentina
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
sin imagen de perfil

RE:DW recupera bien, pero muy lento.......

Publicado por Andres (331 intervenciones) el 11/07/2007 20:58:05
Muchas Gracias por tu tiempo en esta consulta

Atte
Andres

PD. Si tengo otras dudas con respecto al tema te puedo escrbira tu casiilla???
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

RE:DW recupera bien, pero muy lento.......

Publicado por Giovanni Rivera (18 intervenciones) el 11/07/2007 23:31:41
Amigo Andres:
Prueba esto mira, a tu dw en el diseño, hay una opcion en el menu que es Rows - Retrieve Options - Rows to disk, dale click a esto y prueba la rpta de tu dw, me avisas, por lo que se con esto se optimiza el recuperado de registros.
Saludos
Garc de Perú.
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

RE:DW recupera bien, pero muy lento.......

Publicado por Leopoldo Taylhardat (710 intervenciones) el 12/07/2007 15:36:40
Saludos...

Creo que no has dado con algo que te guie...

De cuantas tuplas estas hablando en la búsqueda?
Cuantas tablas están involucradas?
Esas tablas están relacionadas a través de Foreing Keys?
El caché del gestor de la BD es grande???
Nota...
Las bases de datos trabajan las búsquedas a través de un sistema llamado de "costeo" (costo), muchas veces el sistema de cálculo de la búsqueda de datos establece que la mejor manera de realizar el proceso es leyendo toda la tabla y no a través de los índices que hayan sido definidos.
Estos procesos dependiendo del gestor se guardan en tablas internas de la BD (caché) para que la proxima búsqueda no necesite calcular el factor de costeo..., lo que quiere decir (tal vez no sea el caso con MySql) que siempre te va a buscar esa data de la misma manera...
Si es el caso, para esas BD (factores de búsqueda establecidos), si se define un nuevo índice por ejemplo para una de las tablas, habría que bajar la BD y montarla nuevamente para que el gestor vuelva a hacer el análisis de busqueda...

Te cuento...
Una vez necesitaba realizar un proceso de selección en un BD de Control de Estudios de la Universidad, la primera forma que definí los procesos me tardaba 14 segundos en la búsqueda y la tabla base (eran varias las involucradas, creo que eran 8) tenía aprox. 60.000 registros (en la etapa de pruebas de la aplicación), definí un nuevo índice en una de las tablas y el tiempo subió a 30 segundos aproximadamente... quedé loco!!!, ya que yo estaba seguro de que el índice estaba bien definido, etc... luego creé otro y el tiempo bajó a menos de 4 segundos... hoy en día esa tabla tine 700.000 registros aproximadamente y el tiempo sigue siendo 4 segundos....
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