Las búsquedas lanzadas con manejador en 3P en realidad se ejecutan en 1P


([N2] ramiro) #1

Buenas tardes:

Por si a alguien le puede ayudar…

Hasta ayer yo tenía la costumbre de lanzar las búsquedas con manejador y en tercer plano. Y digo HASTA AYER porque recientemente ha aparecido un artículo en la Base de Conocimiento que dice lo siguiente:

“Debemos tener en cuenta en cualquier caso, que el comando de instrucción disparar objeto con búsqueda no se lanza en tercer plano, la opción de plano sólo es funcional para los procesos”

Haciento pruebas se puede comprobar que las búsquedas lanzadas con manejador (supuestamente en tercer plano) en realidad se ejecutan en primer plano. Si la búsqueda tiene un solo componente no hay problema, pero como tenga varios componentes el tiempo de respuesta crece mucho.

Este es el artículo de la Base del Conocimiento en cuestión…

http://velneo.zendesk.com/entries/21662276-cargar-lista-vs-busquedas

Saludos. Ramiro


([N2] ramiro) #2

… se me olvidó…

Obviamente la solución es crear un proceso con las mismas variables que se pasaban a la búsqueda, ejecutar ese proceso (con manejador) en tercer plano y que el proceso ejecute la búsqueda (ya estamos en tercer plano). El proceso debe retornar la lista…

En el artículo de la Base del Conocimiento lo expresan de esta forma:


Debemos tener en cuenta en cualquier caso, que el comando de instrucción disparar objeto con búsqueda no se lanza en tercer plano, la opción de plano sólo es funcional para los procesos.

Por tanto, hemos de usar un proceso que se ejecute en tercer plano con el fin de optimizar realmente el uso de búsquedas con varios componentes o varias búsquedas.

Saludos. Ramiro


([N1] filipeagg) #3

Ramiro,

Haciendo pruebas, puedo comprobar que efectivamente la afirmación “Debemos tener en cuenta en cualquier caso, que el comando de instrucción disparar objeto con búsqueda no se lanza en tercer plano, la opción de plano sólo es funcional para los procesos” se confirma.

Lo curisoso es que se lanzo la busqueda en 3 plano me tarda más unos milesegundos, do que si la lanzo en 1º.


([N1] Pepeto) #4

Si habeis leido bien el artículo, “las busquedas siempre se ejecutan en 3º plano” independientemente de que sean disparadas con el manejador en 1º o 3º plano.

Lo que realmente se ejecuta en 1º o 3º plano, y ahi si que es necesario crear un proceso para disparar la busqueda (si es posible), “son las operaciones de Cruzar, Añadir y Quitar” cuando en la busqueda intervienen varios indices.

un saludo
José Luis
http://www.ascsl.com


([N2] ramiro) #5

Buenas tardes, Jose Luis:

Ya decía en mi primer comentario que “Si la búsqueda tiene un solo componente no hay problema”. Lanzar búsquedas de un solo componente con manejador es una forma, como otra cualquiera, de perder el tiempo. Ese no es el problema…

El problema es que cuando la búsqueda tiene varios componentes y se lanza a través de un manejador, supuestamente en tercer plano, el trabajo “duro” (que son los cruces) se realizan en primer plano. No tengo interés en debatir si semánticamente la búsqueda se lanza en 1P o en 3P puesto que lo que me interesa es que es el tiempo de respuesta es lento y corresponde a un trabajo realizado en primer plano.

Dicho de otra forma: no hay diferencia de rendimiento entre ejecutar una búsqueda (de varios componentes y lanzada con manejador) en 1P y 3P puesto que el rendimiento real es el correspondiente al primer plano.

Un ejemplo concreto de mi experiencia personal:

Opción a) Búsqueda con VARIOS COMPONENTES y lanzada con un manejador, supuestamente en 3P: 25 segundos.

Opción b) Pasando los datos a un proceso ejecutado con manejador y en 3P (el proceso lanza la misma búsqueda): 3 segundos.

Saludos. Ramiro


([N1] neocursar) #6

He estado probando las diferentes alternativas en las búsquedas y he encontrado algo curioso.
La velocidad es bastante parecida.
Me explico.
La búsqueda debe de ser lanzada para el test y luego salir, porque creo que hace cache en memoria y esto puede llevar a engaño.
He realizado pruebas de búsqueda de la siguientes formas:
proceso 3plano - ejecuta búsqueda
proceso 3plano - ejecuta proceso - lanza búsqueda

Con 1.000.000 de registros
Si solo tenemos un índice las diferencias son mínimas.
Añadimos algún índice más, para ver resultados, ya le cuesta más.

Pero me he encontrado que si cierro el vclient y lo vuelvo abrir, para que realmente no tengamos cache las diferencias se reducen, a casi nada, y otra cosa, la búsqueda no ha terminado cuando se lanza, sino cuando terminan de llegar los datos a la rejilla.
Mis test: 1.000.000de registro - recupero del 0 al 100.000 con tipo gold. Es decir he modificado algo las búsquedas del ejemplo.
En Cloud:
Tiempo 3P sin proceso por medio: 22,4 Segundos
Tiempo en 3P con proceso por medio: 21, 3 Segundos

Recuerdo, cerrar vclient entre cada prueba.
Eso son los resultados que obtengo.


([N4] Fran) #7

Buenas tardes:
.
Personalmente he notado una diferencia de rendimiento notable al pasar las búsquedas (con muchos componentes y unos 45.000 registros en las tablas) a procesos en tercer plano… pero también he notado otra diferencia, pero no puedo asegurar (ni mucho menos) que se deba al cambio de ejecución de una búsqueda a un proceso:
.
Antes, al ejecutar un rato la aplicación y cerrar vClient, se presentaba un error de vClient y a veces se quedaban enganches al motor sin desconectar. Tenía que cerrarlos con vAdmin para poder reiniciar las instancias.
.
Desde que he cambiado la forma de ejecutar las búsquedas no se han vuelto a producir estos errores de vClient… ya digo que no se porqué ni si tiene que ver con esto, pero ambos comportamientos han coincidido.
.
Un saludo,
.
Fran
EfeUno Consultores de Gestión y Software, S.L.
www.efeuno.org


([N1] neocursar) #8

[N4] fjpnovo.efeuno
Te refieres a proceso 3P – proceso – búsqueda, es decir, en tres pasos.


([N4] Fran) #9

Buenas tardes:
.
Me refiero a:
.
Proceso 1P->Proceso 3P disparado con manejador y alimentándole variables locales->Búsqueda disparada con manejador y alímentándole variables locales.
.
En mi caso, el proceso 3P le devuelve la lista al proceso 1P y así muestro la lista obtenida en rejillas incrustadas en formularios.
.
Un saludo,
.
Fran
EfeUno Consultores de Gestión y Software, S.L.
www.efeuno.org


([N1] neocursar) #10

Si así es.
Pero claro, bien explicado, yo lo mezcle un poco en la explicación,
Correcto…
Y lógicamente a mas componentes de la búsqueda mas se podrá apreciar.
Disculpar mi explicación, aun estoy pez en V7.


([N4] Fran) #11

Efectivamente, cuantos más componentes tenga la búsqueda y más registros tenga la tabla sobre la que se busca, más se nota la diferencia.


([N4] Jorge) #12

Please… que alguien de Velneo I+D explique claramente las diferencias, ventajas vs Inconvenientes de cada montaje por procesos y búsquedas en 1P y 3P.

PD: Hilo muy interesante,

Atentamente,
Jorge Hontoria
http://tipesoft.com


([N4] mamestre) #13

[N4] jorge.hontoria.tipesoft

+1 a la explicación por parte de Velneo.
Nos evitaremos los test.


([N4] rcueto.velneo) #14

Buenos días.

Hemos modificado el artículo de la base de conocimiento privado sobre las búsquedas. Si tras leerlo os surge alguna duda, por favor, enviadla a través del centro de soporte y completaremos el artículo.

Muchas gracias.

Un saludo,

Rafael C.