Evolution 1.11.1.1
SQL Server

Tengo una implementación, en donde el Usuario tiene que esperar alrededor de 2 minutos cada vez que va a la página de Inicio de Evolution (ya sea porque está iniciando sesión, o porque está en algún formulario y decide dar clic a Inicio).

En ambiente de pruebas, he aplicado Profile de SQL y encontré la siguiente sentencia SQL:

exec sp_executesql N'SELECT 
[Project1].[nbp_codemp] AS [nbp_codemp], 
[Project1].[bpr_codpro] AS [bpr_codpro], 
[Project1].[nbp_codbpr] AS [nbp_codbpr], 
[Project1].[pro_descripcion] AS [pro_descripcion], 
[Project1].[C1] AS [C1], 
[Project1].[pro_fecha_ejecucion] AS [pro_fecha_ejecucion], 
[Project1].[bpr_resultado] AS [bpr_resultado]
FROM ( SELECT 
    [Extent1].[nbp_codbpr] AS [nbp_codbpr], 
    [Extent1].[nbp_codemp] AS [nbp_codemp], 
    [Extent3].[bpr_codpro] AS [bpr_codpro], 
    [Extent3].[bpr_resultado] AS [bpr_resultado], 
    [Extent4].[pro_descripcion] AS [pro_descripcion], 
    [Extent4].[pro_fecha_ejecucion] AS [pro_fecha_ejecucion], 
     CAST( [Extent1].[nbp_fecha_notificacion] AS datetime2) AS [C1]
    FROM    [cfg].[nbp_notif_bitacora_procesos] AS [Extent1]
    INNER JOIN [exp].[emp_empleos] AS [Extent2] ON [Extent1].[nbp_codemp] = [Extent2].[emp_codigo]
    INNER JOIN [cfg].[bpr_bitacora_procesos] AS [Extent3] ON [Extent1].[nbp_codbpr] = [Extent3].[bpr_codigo]
    INNER JOIN [cfg].[pro_procesos] AS [Extent4] ON [Extent3].[bpr_codpro] = [Extent4].[pro_codigo]
    WHERE ([Extent2].[emp_codexp] = @p__linq__0) AND ([Extent1].[nbp_ya_fue_leido] = (CASE WHEN (@p__linq__1 = 1) THEN [Extent1].[nbp_ya_fue_leido] ELSE @p__linq__2 END))
)  AS [Project1]
ORDER BY [Project1].[C1] DESC',N'@p__linq__0 int,@p__linq__1 bit,@p__linq__2 bit',@p__linq__0=1187,@p__linq__1=0,@p__linq__2=0

Luego de revisar el contenido de las tablas involucradas, decidí eliminar todos los 260,266 registros de la tabla cfg.nbp_notif_bitacora_procesos, logrando de esta manera reducir a 0 segundos el tiempo de espera al dar clic a la opción Inicio en Evolution.

¿Es posible mejorar la sentencia SQL acá mostrada para disminuir el tiempo de espera (o cualquier otra involucrada con la tabla indicada que participe al cargar la página Inicio)?

¿Consideran prudente que se programe una tarea que elimine los registros de la tabla cfg.nbp_notif_bitacora_procesos cada cierto tiempo?

¿Qué otras recomendaciones pueden brindarme?

asked 25 Apr '18, 15:13

Henry%20Sandoval's gravatar image

Henry Sandoval
(suspended)
accept rate: 53%

edited 06 Jun '18, 13:18

En mi experiencia, solo con mantener limpias las bandejas de alertas, autorizaciones, etc. El tiempo es bueno. Si estas contienen muchos mensajes sin leer, el tiempo de carga es mayor.

(06 Jun '18, 14:50) MiguelBustamante MiguelBustamante's gravatar image

Lo mismo me pasaba, pero a pesar que los mensajes ya están leídos, el tiempo de espera no es rápido por la cantidad de registros con los que compara la consulta SQL.

(06 Jun '18, 14:58) Henry Sandoval Henry%20Sandoval's gravatar image

Se me ocurre que ya que alterar la consulta depende de un hotfix o un cambio de version. Se podrian mejorar los indexex.

Podrias probar creando estos

CREATE UNIQUE NONCLUSTERED INDEX IX_Inicio ON [cfg].[pro_procesos] ( [pro_codigo_entidad] ASC, pro_fecha_ejecucion DESC, pro_descripcion )

CREATE UNIQUE NONCLUSTERED INDEX IX_Inicio_nbp ON cfg.nbp_notif_bitacora_procesos ( nbp_codemp ASC, nbp_fecha_notificacion DESC, nbp_codbpr DESC, nbp_codigo DESC ) INCLUDE (nbp_ya_fue_leido)

CREATE UNIQUE NONCLUSTERED INDEX ix_inicio_bpr ON cfg.bpr_bitacora_procesos ( bpr_codigo DESC, bpr_codpro DESC, bpr_resultado ASC

)

Dado que una de las cosas que mas impacta a una consulta es un Order By, lo que se busca es tener el resultado ordenado con anterioridad.

link

answered 06 Jun '18, 15:32

MiguelBustamante's gravatar image

MiguelBustamante
52158108116
accept rate: 31%

Gracias Miguel, voy a crear un Issue para distribuir la creación de índices en un próximo hotfix.

(06 Jun '18, 16:25) Fernando Paz ♦♦ Fernando%20Paz's gravatar image

Gracias Miguel, confirmo que he aplicado los scripts que proporcionaste, pero aún así el tiempo de espera al cargar la página de Inicio se mantiene elevado, de tal manera que cuando el Usuario da clic a un módulo tiene que esperar a que la página de Inicio termine de cargarse primero, ya que Evolution no le carga el módulo sino hasta que finaliza la carga de datos que presenta la página de Inicio .

(07 Jun '18, 12:05) Henry Sandoval Henry%20Sandoval's gravatar image

Con la tabla borrada hace eso?

(07 Jun '18, 12:26) MiguelBustamante MiguelBustamante's gravatar image

Cuando llamas a inicio, podrías correr la consulta de abajo en la base de datos y colocarnos el resultado.

DECLARE @table TABLE ( spid INT , status VARCHAR(150) , login VARCHAR(150) , HostName VARCHAR(150) , BlkBy VARCHAR(150) , dbname VARCHAR(150) , command VARCHAR(150) , cputime VARCHAR(150) , diskio VARCHAR(150) , lastbatch VARCHAR(150) , programname VARCHAR(150) , spid2 INT , requestedid INT ) INSERT INTO @table EXEC sys.sp_who2 SELECT * FROM @table WHERE status != 'sleeping' AND status != 'BACKGROUND'

link

answered 07 Jun '18, 12:42

MiguelBustamante's gravatar image

MiguelBustamante
52158108116
accept rate: 31%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×13
×7
×3
×3
×1

Asked: 25 Apr '18, 15:13

Seen: 669 times

Last updated: 07 Jun '18, 12:42

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática