sábado, 31 de enero de 2015

Performance: Usando el opcode PCM_OP_STEP_SEARCH

A veces cuando ejecutamos una búsqueda el resultado de la misma es de cientos o miles de registros (por ejemplo llamadas telefónicas) por lo que no es recomendable utilizar el PCM_OP_SEARCH (puede dar error en el dm_oracle por hacer que utilice toda la shared memory, o la performance decaerá) y es conveniente procesar esos registros en bloques mas pequeños, entonces utilizaremos el PCM_OP_STEP_SEARCH.

El uso del PCM_OP_STEP_SEARCH tiene 2 ventajas frente al PCM_OP_SEARCH:


  1. Velocidad: los resultados de la búsqueda se obtienen mucho más rápido en bloques pequeños. El PCM_OP_STEP_SEARCH regresa el primer bloque de resultados inmediatamente; no se espera a que la totalidad de resultados esté lista.
  2. Recursos del sistema: el PCM_OP_STEP_SEARCH asigna suficiente shared memory en el DM para un único bloque de resultados a la vez, en cambio el PCM_OP_SEARCH utiliza suficiente shared memory para todo el set de resultados de una ez.
La desventaja de las búsquedas step es que se deben llamar 3 opcodes para cada búsqueda: PCM_OP_STEP_SEARCH, PCM_OP_STEP_NEXT, and PCM_OP_STEP_END, pero eso no es problema ya que 

2 comentarios:

  1. que pasa cuando queremos usar campos custom que están en una sub estructura ? nos sirve el pcm_op_search

    ResponderBorrar
    Respuestas
    1. Hola, los campos custom los podes utilizar al igual que lo harias con los OOB en el PCM_OP_SEARCH/PCM_OP_STEP_SEARCH

      Borrar