Mudanças entre as edições de "Biblioteca 1.45.0.0"
(Criou página com '== Sistemas Verificados == *Biblioteca, versão 1.45.0.0 == Verificação de Segurança == Em verificação. == Verificação de Desempenho == === Observação do teste =...') |
(→TOP 10 querrys mais lentas) |
||
(7 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 10: | Linha 10: | ||
=== Observação do teste === | === Observação do teste === | ||
+ | |||
+ | Para a execução dos testes foram utilizados: | ||
+ | |||
+ | * 1 Servidor de banco de dados. | ||
+ | * 2 Servidores web. | ||
+ | * 2 Test Agent | ||
Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema. | Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema. | ||
Linha 17: | Linha 23: | ||
=== Análise do teste === | === Análise do teste === | ||
− | + | O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo. | |
+ | |||
+ | A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar. | ||
+ | |||
+ | Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste. | ||
+ | |||
+ | Abaixo seguem alguns dos logs de erros: | ||
+ | |||
+ | * Deadlock | ||
+ | ''Exception Type: System.Data.SqlClient.SqlException | ||
+ | ''Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. | ||
+ | ''Source: .Net SqlClient Data Provider | ||
+ | ''Stack Trace: | ||
+ | at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) | ||
+ | at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) | ||
+ | at MSTech.Data.Common.QuerySelect.Execute() | ||
+ | at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854 | ||
+ | at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946 | ||
+ | at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792 | ||
+ | at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497 | ||
+ | ''\r\n | ||
+ | |||
+ | |||
+ | * Erro dllBiblioteca | ||
+ | ''Exception Type: System.ArgumentOutOfRangeException | ||
+ | ''Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items. | ||
+ | ''Parameter name: value | ||
+ | ''Source: System.Web | ||
+ | ''Stack Trace: | ||
+ | at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value) | ||
+ | at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556 | ||
+ | ''\r\n | ||
+ | |||
+ | |||
+ | * Erro tblAuxiliar | ||
+ | ''Exception Type: System.Data.SqlClient.SqlException | ||
+ | ''Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission. | ||
+ | ''Source: .Net SqlClient Data Provider | ||
+ | ''Stack Trace: | ||
+ | at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) | ||
+ | at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) | ||
+ | at MSTech.Data.Common.QuerySelect.Execute() | ||
+ | at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294 | ||
+ | at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980 | ||
+ | at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921 | ||
+ | at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656 | ||
+ | at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861 | ||
+ | at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497 | ||
+ | ''\r\n | ||
+ | |||
+ | |||
+ | * Timeout | ||
+ | ''Inner Exception Type: System.ComponentModel.Win32Exception | ||
+ | ''Inner Exception: The wait operation timed out | ||
+ | ''Inner Source: | ||
+ | ''Exception Type: System.Data.SqlClient.SqlException | ||
+ | ''Exception: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. | ||
+ | ''Source: .Net SqlClient Data Provider | ||
+ | ''Stack Trace: | ||
+ | at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) | ||
+ | at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) | ||
+ | at MSTech.Data.Common.QuerySelect.Execute() | ||
+ | at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371 | ||
+ | at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165 | ||
+ | at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590 | ||
+ | ''\r\n | ||
+ | |||
+ | |||
+ | === TOP 10 queries mais lentas === | ||
+ | |||
+ | * Item 1 | ||
+ | |||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | SELECT DISTINCT | ||
+ | A.ace_titulo | ||
+ | , A.ace_subTitulo | ||
+ | , dbo.FN_ConcatenaTuplas_ClassificacaoLiteraria(A.ace_id) AS cll_nome | ||
+ | , aut_nomePadrao | ||
+ | , aut_nome | ||
+ | , edt.edt_nome | ||
+ | , tpo.tor_nome | ||
+ | , a.ace_id | ||
+ | , O.obr_volume | ||
+ | , A.ace_isbnIssn | ||
+ | , A.ace_cdd | ||
+ | , A.ace_phaCutter | ||
+ | , O.obr_edicao | ||
+ | , O.obr_anoEdicao | ||
+ | , aut.oat_descricao | ||
+ | , A.ace_linkDominio | ||
+ | FROM BIB_Acervo A WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_Exemplar E WITH ( NOLOCK ) ON A.ace_id = E.ace_id | ||
+ | INNER JOIN BIB_ExemplarLocalizacao EL WITH ( NOLOCK ) ON A.ace_id = EL.ace_id AND E.exm_id = EL.exm_id | ||
+ | INNER JOIN BIB_Biblioteca bib WITH ( NOLOCK ) ON bib.bib_id = EL.bib_id | ||
+ | INNER JOIN Synonym_SYS_UnidadeAdministrativa uad WITH(NOLOCK) ON uad.uad_id = BIB.uad_id AND uad.ent_id = BIB.ent_id | ||
+ | INNER JOIN BIB_ObraAutor oa WITH (NOLOCK) ON A.ace_id = oa.ace_id | ||
+ | INNER JOIN BIB_Obra O WITH (NOLOCK) ON A.ace_id = O.ace_id | ||
+ | INNER JOIN BIB_TipoObra tpo WITH ( NOLOCK ) ON A.tor_id = tpo.tor_id | ||
+ | INNER JOIN BIB_ObraClassificacao CLO WITH (NOLOCK) ON A.ace_id = CLO.ace_id | ||
+ | INNER JOIN BIB_ClassificacaoLiteraria cl WITH (NOLOCK) ON cl.cll_id = CLO.cll_id | ||
+ | |||
+ | LEFT JOIN BIB_Editora edt WITH(NOLOCK) ON A.edt_id = edt.edt_id | ||
+ | LEFT JOIN BIB_GrupoAssunto ga WITH (NOLOCK) on A.gra_id = ga.gra_id | ||
+ | LEFT JOIN BIB_GeneroAssunto gs WITH (NOLOCK) ON cl.cll_id = gs.cll_id AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL) | ||
+ | LEFT JOIN INT_ObraAutor aut WITH (NOLOCK) ON a.ace_id = aut.ace_id | ||
+ | |||
+ | WHERE | ||
+ | ((A.ace_situacao = 1 OR A.ace_situacao = 5) | ||
+ | AND E.exm_situacao NOT IN ( 3, 4) | ||
+ | AND E.ace_id IS NOT NULL | ||
+ | AND (edt.edt_situacao = 1 OR edt.edt_situacao IS NULL) | ||
+ | AND (tor_situacao = 1 OR tor_situacao IS NULL) | ||
+ | AND (ga.gra_situacao = 1 OR ga.gra_situacao IS NULL) | ||
+ | AND (cl.cll_situacao = 1 OR cl.cll_situacao IS NULL) | ||
+ | AND (bib.bib_situacao <> 3 AND uad.uad_situacao <> 3)) | ||
+ | --AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL)) | ||
+ | AND ( | ||
+ | A.ace_titulo LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR A.ace_isbnIssn LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR edt.edt_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR O.obr_anoEdicao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR O.obr_serieColecao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR ga.gra_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR cl.cll_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR gs.gnr_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR aut.aut_nomePadrao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | OR aut.aut_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | ) | ||
+ | AND | ||
+ | ( | ||
+ | EL.bib_id IN | ||
+ | ( | ||
+ | SELECT bib_id | ||
+ | FROM BIB_ParametroBiblioteca pb | ||
+ | WHERE pbi_permitiConsultaExterna = 0 -- permite consulta do acervo | ||
+ | ) | ||
+ | OR EL.bib_id IS NULL | ||
+ | ) | ||
+ | ORDER BY A.ace_titulo | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 2 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | WITH ExemplaresSemGrupo AS ( | ||
+ | SELECT | ||
+ | EXM.ace_id, | ||
+ | EXM.exm_id, | ||
+ | BIB.bib_id, | ||
+ | ACE.gra_id | ||
+ | |||
+ | FROM BIB_Exemplar AS EXM WITH ( NOLOCK ) | ||
+ | |||
+ | INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH ( NOLOCK ) | ||
+ | ON EXM.ace_id = EXL.ace_id | ||
+ | AND EXM.exm_id = EXL.exm_id | ||
+ | |||
+ | INNER JOIN dbo.BIB_Biblioteca AS BIB WITH (NOLOCK) | ||
+ | ON BIB.bib_id = EXL.bib_id | ||
+ | |||
+ | INNER JOIN dbo.BIB_Acervo AS ACE WITH(NOLOCK) | ||
+ | ON ACE.ace_id = EXM.ace_id | ||
+ | |||
+ | LEFT JOIN dbo.BIB_GrupoAssunto AS GRA WITH (NOLOCK) | ||
+ | ON GRA.gra_id = ACE.gra_id | ||
+ | AND GRA.gra_situacao <> 3 | ||
+ | WHERE | ||
+ | exm_situacao <> 3 AND | ||
+ | bib_situacao <> 3 AND | ||
+ | ACE.gra_id IS NULL | ||
+ | ), | ||
+ | |||
+ | AcervosSemGrupo AS ( | ||
+ | |||
+ | SELECT | ||
+ | ace_id, | ||
+ | bib_id, | ||
+ | gra_id | ||
+ | FROM ExemplaresSemGrupo | ||
+ | |||
+ | GROUP BY ace_id, | ||
+ | bib_id, | ||
+ | gra_id | ||
+ | ), | ||
+ | |||
+ | Exemplares AS ( | ||
+ | |||
+ | SELECT | ||
+ | EXM.exm_id, | ||
+ | gra_id, | ||
+ | ACE.ace_id, | ||
+ | ACE.ace_situacao, | ||
+ | BIB.bib_id | ||
+ | |||
+ | FROM BIB_Acervo AS ACE WITH (NOLOCK) | ||
+ | |||
+ | INNER JOIN BIB_Exemplar AS EXM WITH (NOLOCK) | ||
+ | ON EXM.ace_id = ACE.ace_id | ||
+ | |||
+ | INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH (NOLOCK) | ||
+ | ON EXL.ace_id = ACE.ace_id | ||
+ | AND EXL.exm_id = EXM.exm_id | ||
+ | |||
+ | INNER JOIN BIB_Biblioteca AS BIB WITH (NOLOCK) | ||
+ | ON BIB.bib_id = EXL.bib_id | ||
+ | |||
+ | WHERE | ||
+ | exm_situacao <> 3 AND | ||
+ | bib_situacao <> 3 | ||
+ | ), | ||
+ | |||
+ | Acervos AS ( | ||
+ | |||
+ | SELECT | ||
+ | ce_id, | ||
+ | gra_id, | ||
+ | bib_id | ||
+ | |||
+ | FROM Exemplares WITH (NOLOCK) | ||
+ | |||
+ | GROUP BY | ||
+ | ace_id, | ||
+ | gra_id, | ||
+ | bib_id | ||
+ | ) | ||
+ | |||
+ | SELECT gra_id , | ||
+ | cor_hexadecimal , | ||
+ | cor_nome , | ||
+ | gra_nome , | ||
+ | gra_numeroGrupo, | ||
+ | ( | ||
+ | SELECT COUNT(exm_id) FROM Exemplares AS EXE WHERE EXE.gra_id = GRA.gra_id | ||
+ | ) qtdExemplares , | ||
+ | ( | ||
+ | SELECT COUNT(ace_id) FROM Acervos AS ACE WHERE ACE.gra_id = GRA.gra_id | ||
+ | |||
+ | ) qtdAcervo | ||
+ | |||
+ | FROM | ||
+ | BIB_GrupoAssunto AS GRA WITH (NOLOCK) | ||
+ | |||
+ | LEFT JOIN BIB_Cor AS COR WITH (NOLOCK) | ||
+ | ON GRA.cor_id = COR.cor_id | ||
+ | WHERE GRA.gra_situacao <> 3 | ||
+ | UNION ALL | ||
+ | |||
+ | SELECT -1 , | ||
+ | NULL , | ||
+ | NULL , | ||
+ | 'Sem grupo de assunto' , | ||
+ | NULL, | ||
+ | ( | ||
+ | SELECT COUNT(exm_id) FROM ExemplaresSemGrupo WHERE gra_id IS NULL | ||
+ | ) qtdExemplares , | ||
+ | |||
+ | ( SELECT COUNT(ace_id) FROM AcervosSemGrupo WHERE gra_id IS NULL | ||
+ | |||
+ | ) qtdAcervo | ||
+ | order by gra_nome | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 3 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | SELECT | ||
+ | MAX(CAST(LTRIM(RTRIM(EXM.exm_tombo)) AS BIGINT)) AS tombo | ||
+ | FROM | ||
+ | BIB_Exemplar as EXM WITH(NOLOCK) | ||
+ | INNER JOIN BIB_ExemplarLocalizacao AS EL WITH(NOLOCK) | ||
+ | ON EL.ace_id = EXM.ace_id | ||
+ | AND EL.exm_id = EXM.exm_id | ||
+ | WHERE | ||
+ | exm_situacao <> 3 | ||
+ | AND (EL.bib_id = @bib_id OR @bib_id IS NULL) | ||
+ | AND (ISNUMERIC(EXM.exm_tombo) = 1 AND EXM.exm_tombo NOT LIKE '%[.]%' AND EXM.exm_tombo NOT LIKE '%[,]%') | ||
+ | AND EXM.exm_tombo NOT LIKE '%e%' | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 4 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | FROM BIB_Acervo WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_Exemplar WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Exemplar.ace_id | ||
+ | --LEFT JOIN BIB_ExemplarObra WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_ExemplarObra.ace_id | ||
+ | -- AND BIB_Exemplar.exm_id = BIB_ExemplarObra.exm_id | ||
+ | --LEFT JOIN BIB_Periodico WITH ( NOLOCK ) ON BIB_ExemplarObra.ace_id = BIB_Periodico.ace_id | ||
+ | --LEFT JOIN BIB_ExemplarVideo WITH ( NOLOCK ) ON BIB_ExemplarVideo.ace_id = BIB_Acervo.ace_id | ||
+ | WHERE @bib_id IN ( | ||
+ | SELECT bib_id | ||
+ | FROM BIB_ExemplarObra WITH ( NOLOCK ) | ||
+ | WHERE ace_id = @ace_id | ||
+ | AND BIB_ExemplarObra.exm_id = BIB_Exemplar.exm_id | ||
+ | UNION ALL | ||
+ | SELECT bib_id | ||
+ | FROM BIB_ExemplarVideo WITH ( NOLOCK ) | ||
+ | WHERE ace_id = @ace_id | ||
+ | AND BIB_ExemplarVideo.exm_id = BIB_Exemplar.exm_id | ||
+ | UNION ALL | ||
+ | SELECT bib_id | ||
+ | FROM BIB_Periodico WITH ( NOLOCK ) | ||
+ | WHERE ace_id = @ace_id ) | ||
+ | --( BIB_ExemplarObra.bib_id = @bib_id | ||
+ | -- OR BIB_Periodico.bib_id = @bib_id | ||
+ | -- OR BIB_ExemplarVideo.bib_id = @bib_id | ||
+ | -- ) | ||
+ | AND BIB_Acervo.ace_id = @ace_id | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 5 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | ELECT | ||
+ | BIB_Exemplar.exm_id , | ||
+ | BIB_Acervo.ace_id , | ||
+ | ace_titulo , | ||
+ | ISNULL(exm_tombo, exm_codigoBarras) tombo , | ||
+ | aut_nome autor , | ||
+ | bib_nome , | ||
+ | edt_nome , | ||
+ | obr_volume , | ||
+ | ISNULL(exp_edicao, obr_edicao) edicao , | ||
+ | obr_anoEdicao , | ||
+ | ace_isbnIssn , | ||
+ | CASE WHEN PBL.pbc_liberadoEmprestimo = 2 | ||
+ | THEN 'Categoria bloqueada' | ||
+ | WHEN exm_situacao = 2 THEN 'Exemplar bloqueado' | ||
+ | ELSE ISNULL(situacao, 'Disponível') | ||
+ | END AS situacao , | ||
+ | CASE WHEN ace_bloqueadoReserva = 1 THEN '--' | ||
+ | WHEN ace_bloqueadoReserva = 0 THEN '--' | ||
+ | END AS ace_bloqueadoReserva , | ||
+ | --CASE WHEN situacao IS NOT NULL THEN situacao | ||
+ | -- ELSE CASE WHEN PBL.pbc_liberadoEmprestimo = 2 | ||
+ | -- THEN 'Categoria bloqueada' | ||
+ | -- WHEN exm_situacao = 2 THEN 'Exemplar bloqueado' | ||
+ | -- ELSE ISNULL(situacao, 'Disponível') | ||
+ | -- END | ||
+ | --END AS situacao , | ||
+ | epr_dataPrevistaDevolucao dtPrevDev , | ||
+ | |||
+ | --ISNULL(CASE WHEN ( SELECT COUNT(lre_id) | ||
+ | -- FROM BIB_ListaReserva a2 | ||
+ | -- WHERE a2.ace_id = BIB_Exemplar.ace_id | ||
+ | -- AND a2.exm_id = BIB_Exemplar.exm_id | ||
+ | -- AND lre_situacao = 1 | ||
+ | -- ) > 0 THEN 'Existem solicitações pendentes. ' | ||
+ | -- END, '') | ||
+ | --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id) | ||
+ | -- FROM BIB_ListaReserva a2 | ||
+ | -- WHERE a2.ace_id = BIB_Exemplar.ace_id | ||
+ | -- AND a2.exm_id = BIB_Exemplar.exm_id | ||
+ | -- AND lre_situacao = 2 | ||
+ | -- ) > 0 THEN 'Existe lista de reserva. ' | ||
+ | -- END, '') | ||
+ | --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao | ||
+ | -- FROM FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id, | ||
+ | -- BIB_Exemplar.exm_id) a | ||
+ | -- ) = 2 THEN 'Reserva para biblioteca. ' | ||
+ | -- END, '') obs , | ||
+ | CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras)))) <> 0 | ||
+ | THEN REPLICATE('0', | ||
+ | ( 19 | ||
+ | - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras))) AS VARCHAR)) )) | ||
+ | + CAST(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras))) AS VARCHAR) | ||
+ | ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras))) | ||
+ | END ordenaTombo | ||
+ | FROM BIB_Exemplar WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_Acervo WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_Acervo.ace_id | ||
+ | INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_ExemplarLocalizacao.ace_id | ||
+ | AND BIB_Exemplar.exm_id = BIB_ExemplarLocalizacao.exm_id | ||
+ | INNER JOIN BIB_Biblioteca WITH ( NOLOCK ) ON BIB_ExemplarLocalizacao.bib_id = BIB_Biblioteca.bib_id | ||
+ | LEFT JOIN BIB_ExemplarPeriodico WITH ( NOLOCK ) ON BIB_ExemplarPeriodico.exm_id = BIB_Exemplar.exm_id | ||
+ | AND BIB_ExemplarPeriodico.ace_id = BIB_Exemplar.ace_id | ||
+ | LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON BIB_Acervo.edt_id = BIB_Editora.edt_id | ||
+ | LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Obra.ace_id | ||
+ | LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = bib_exemplar.ace_id | ||
+ | AND um.exm_id = bib_exemplar.exm_id | ||
+ | LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = INT_ObraAutor.ace_id | ||
+ | LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = BIB_Exemplar.tor_id | ||
+ | AND PBL.toc_id = BIB_Exemplar.toc_id | ||
+ | AND PBL.bib_id = BIB_Biblioteca.bib_id | ||
+ | WHERE ace_situacao = 1 | ||
+ | AND exm_situacao NOT IN ( 3, 4, 5 ) | ||
+ | AND ( BIB_Exemplar.tor_id = @tor_id | ||
+ | OR @tor_id IS NULL | ||
+ | ) | ||
+ | AND ( exm_tombo IN ( | ||
+ | SELECT valor | ||
+ | FROM FN_StringToArrayStr(@exm_tombo, ';') ) | ||
+ | OR @exm_tombo IS NULL | ||
+ | OR exm_codigoBarras IN ( | ||
+ | SELECT valor | ||
+ | FROM FN_StringToArrayStr(@exm_tombo, ';') ) | ||
+ | ) | ||
+ | AND ( | ||
+ | -- 1 : Começa por | ||
+ | ( @ace_tipoBusca = 1 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 2 : Contém | ||
+ | ( @ace_tipoBusca = 2 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 3 : Fonética | ||
+ | ( @ace_tipoBusca = 3 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR dbo.SoundsLike(ace_titulo) LIKE '%' | ||
+ | + dbo.SoundsLike(@ace_titulo) + '%' | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | AND ( edt_nome LIKE '%' + @edt_nome + '%' | ||
+ | OR @edt_nome IS NULL | ||
+ | ) | ||
+ | AND ent_id = @ent_id | ||
+ | AND ( @bib_id = BIB_Biblioteca.bib_id | ||
+ | OR @bib_id IS NULL | ||
+ | ) | ||
+ | AND ( @aut_id IS NULL | ||
+ | OR ( SELECT COUNT(ace_id) | ||
+ | FROM BIB_ObraAutor oa WITH ( NOLOCK ) | ||
+ | WHERE oa.ace_id = BIB_Exemplar.ace_id | ||
+ | AND oa.aut_id IN ( | ||
+ | SELECT CONVERT(INT, valor) | ||
+ | FROM dbo.FN_StringToArrayStr(@aut_id, | ||
+ | ';') ) | ||
+ | ) > 0 | ||
+ | ) | ||
+ | |||
+ | AND ( @obr_volume IS NULL | ||
+ | OR obr_volume LIKE '%' + @obr_volume + '%' | ||
+ | ) | ||
+ | AND ( @obr_anoEdicao IS NULL | ||
+ | OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%' | ||
+ | ) | ||
+ | AND ( @obr_edicao IS NULL | ||
+ | OR obr_edicao LIKE '%' + @obr_edicao + '%' | ||
+ | ) | ||
+ | AND @ent_id = BIB_Biblioteca.ent_id | ||
+ | AND BIB_Biblioteca.uad_id IN ( ( SELECT uad_id | ||
+ | FROM Synonym_FN_Select_UAs_By_PermissaoUsuario(@usu_id, | ||
+ | @gru_id) | ||
+ | ) | ||
+ | ) | ||
+ | -- Filtra disponível | ||
+ | AND ( ( @exm_disponivel = 1 | ||
+ | AND epw_id IS NULL | ||
+ | AND ace_situacao = 1 | ||
+ | AND exm_situacao NOT IN (3, 2) | ||
+ | ) | ||
+ | OR @exm_disponivel = 0 | ||
+ | ) | ||
+ | --Deverá aparecer todos os exemplares, independente da situação (Comentado por Rafael Neto) | ||
+ | --AND ( ISNULL(( SELECT CASE WHEN epw_acao = 3 THEN 1 | ||
+ | -- WHEN epw_acao = 5 THEN 1 | ||
+ | -- ELSE 2 | ||
+ | -- END | ||
+ | -- FROM FN_UltimaMovimentacaoAcao(BIB_Exemplar.ace_id, | ||
+ | -- BIB_Exemplar.exm_id) | ||
+ | -- ), 1) = 1 ) | ||
+ | --AND ( ISNULL(( SELECT CASE WHEN mbw_acao <> 2 THEN 1 | ||
+ | -- ELSE 2 | ||
+ | -- END | ||
+ | -- FROM FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id, | ||
+ | -- BIB_Exemplar.exm_id) | ||
+ | -- ), 1) = 1 ) | ||
+ | ORDER BY bib_nome , | ||
+ | ace_titulo | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 6 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | WITH Acervo | ||
+ | AS ( SELECT ace_id , | ||
+ | ace_isbnIssn , | ||
+ | ace_titulo , | ||
+ | edt_id , | ||
+ | tor_id , | ||
+ | ace_bloqueadoReserva , | ||
+ | ace_situacao | ||
+ | FROM BIB_Acervo WITH ( NOLOCK ) | ||
+ | WHERE ace_situacao = 1 | ||
+ | ), | ||
+ | Exemplar | ||
+ | AS ( SELECT exm_id , | ||
+ | ace_id , | ||
+ | toc_id , | ||
+ | tor_id , | ||
+ | exm_tombo , | ||
+ | exm_codigoBarras , | ||
+ | exm_situacao | ||
+ | FROM BIB_Exemplar WITH ( NOLOCK ) | ||
+ | WHERE exm_situacao NOT IN ( 3, 4 , 5) | ||
+ | ), | ||
+ | Biblioteca | ||
+ | AS ( SELECT bib_id , | ||
+ | bib_nome | ||
+ | FROM BIB_Biblioteca WITH ( NOLOCK ) | ||
+ | WHERE ent_id = @ent_id | ||
+ | ) | ||
+ | SELECT e.exm_id , | ||
+ | a.ace_id , | ||
+ | ace_titulo , | ||
+ | ISNULL(exm_tombo, exm_codigoBarras) tombo , | ||
+ | aut_nome autor , | ||
+ | bib_nome , | ||
+ | edt_nome , | ||
+ | tor_nome , | ||
+ | ace_isbnIssn , | ||
+ | obr_volume , | ||
+ | obr_edicao edicao , | ||
+ | obr_anoEdicao , | ||
+ | CASE WHEN PBL.pbc_liberadoEmprestimo = 2 THEN 'Categoria bloqueada' | ||
+ | WHEN e.exm_situacao = 2 THEN 'Exemplar bloqueado' | ||
+ | WHEN e.exm_situacao = 5 THEN 'Exemplar retido' | ||
+ | ELSE ISNULL(situacao, 'Disponível') | ||
+ | END AS situacao , | ||
+ | CASE WHEN ace_bloqueadoReserva = 1 THEN 'Bloqueado para reserva' | ||
+ | WHEN ace_bloqueadoReserva = 0 THEN '--' | ||
+ | END AS ace_bloqueadoReserva , | ||
+ | epr_dataPrevistaDevolucao dtPrevDev , | ||
+ | --ISNULL(CASE WHEN ( SELECT COUNT(lre_id) | ||
+ | -- FROM BIB_ListaReserva a2 | ||
+ | -- WHERE a2.ace_id = e.ace_id | ||
+ | -- AND a2.exm_id = e.exm_id | ||
+ | -- AND lre_situacao = 1 | ||
+ | -- ) > 0 | ||
+ | -- THEN 'Existem solicitações pendentes. ' | ||
+ | -- END, '') | ||
+ | --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id) | ||
+ | -- FROM BIB_ListaReserva a2 | ||
+ | -- WHERE a2.ace_id = e.ace_id | ||
+ | -- AND a2.exm_id = e.exm_id | ||
+ | -- AND lre_situacao = 2 | ||
+ | -- ) > 0 THEN 'Existe lista de reserva. ' | ||
+ | -- END, '') | ||
+ | --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao | ||
+ | -- FROM FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id, | ||
+ | -- e.exm_id) a | ||
+ | -- ) = 2 THEN 'Reserva para biblioteca. ' | ||
+ | -- END, '') obs , | ||
+ | CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras)))) <> 0 | ||
+ | THEN REPLICATE('0', | ||
+ | ( 19 | ||
+ | - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras))) AS VARCHAR)) )) | ||
+ | + CAST(RTRIM(LTRIM(ISNULL(exm_tombo, | ||
+ | exm_codigoBarras))) AS VARCHAR) | ||
+ | ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras))) | ||
+ | END ordenaTombo | ||
+ | FROM Acervo a | ||
+ | INNER JOIN Exemplar e ON a.ace_id = e.ace_id | ||
+ | INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON e.ace_id = BIB_ExemplarLocalizacao.ace_id | ||
+ | AND e.exm_id = BIB_ExemplarLocalizacao.exm_id | ||
+ | INNER JOIN Biblioteca b ON BIB_ExemplarLocalizacao.bib_id = b.bib_id | ||
+ | LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON a.ace_id = BIB_Obra.ace_id | ||
+ | LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON a.edt_id = BIB_Editora.edt_id | ||
+ | LEFT JOIN BIB_TipoObra WITH ( NOLOCK ) ON a.tor_id = BIB_TipoObra.tor_id | ||
+ | LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = e.ace_id | ||
+ | AND um.exm_id = e.exm_id | ||
+ | LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON e.ace_id = INT_ObraAutor.ace_id | ||
+ | LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = e.tor_id | ||
+ | AND PBL.toc_id = e.toc_id | ||
+ | AND PBL.bib_id = b.bib_id | ||
+ | WHERE ( ( @somenteDisponivies = 1 | ||
+ | AND epw_id IS NOT NULL | ||
+ | ) | ||
+ | OR @somenteDisponivies = 0 | ||
+ | ) | ||
+ | AND ( @bib_id = b.bib_id | ||
+ | OR @bib_id IS NULL | ||
+ | ) | ||
+ | AND ( a.tor_id = @tor_id | ||
+ | OR @tor_id IS NULL | ||
+ | ) | ||
+ | AND ( exm_tombo IN ( | ||
+ | SELECT valor | ||
+ | FROM FN_StringToArrayStr(@exm_tombo, ';') ) | ||
+ | OR @exm_tombo IS NULL | ||
+ | OR exm_codigoBarras IN ( | ||
+ | SELECT valor | ||
+ | FROM FN_StringToArrayStr(@exm_tombo, ';') ) | ||
+ | ) | ||
+ | AND ( | ||
+ | -- 1 : Começa por | ||
+ | ( @ace_tipoBusca = 1 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 2 : Contém | ||
+ | ( @ace_tipoBusca = 2 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 3 : Fonética | ||
+ | ( @ace_tipoBusca = 3 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR dbo.SoundsLike(ace_titulo) LIKE '%' | ||
+ | + dbo.SoundsLike(@ace_titulo) + '%' | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | AND ( edt_nome LIKE '%' + @edt_nome + '%' | ||
+ | OR @edt_nome IS NULL | ||
+ | ) | ||
+ | AND ( @aut_id IS NULL | ||
+ | OR ( SELECT COUNT(ace_id) | ||
+ | FROM BIB_ObraAutor oa WITH ( NOLOCK ) | ||
+ | WHERE oa.ace_id = e.ace_id | ||
+ | AND oa.aut_id IN ( | ||
+ | SELECT CONVERT(INT, valor) | ||
+ | FROM dbo.FN_StringToArrayStr(@aut_id, | ||
+ | ';') ) | ||
+ | ) > 0 | ||
+ | ) | ||
+ | |||
+ | AND ( @obr_volume IS NULL | ||
+ | OR obr_volume LIKE '%' + @obr_volume + '%' | ||
+ | ) | ||
+ | AND ( @obr_anoEdicao IS NULL | ||
+ | OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%' | ||
+ | ) | ||
+ | AND ( @obr_edicao IS NULL | ||
+ | OR obr_edicao LIKE '%' + @obr_edicao + '%' | ||
+ | ) | ||
+ | AND ( ISNULL(( SELECT CASE WHEN mbw_acao <> 2 THEN 1 | ||
+ | ELSE 2 | ||
+ | END | ||
+ | FROM FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id, | ||
+ | e.exm_id) | ||
+ | ), 1) = 1 ) | ||
+ | |||
+ | -- Filtra disponível | ||
+ | AND ( ( @exm_disponivel = 1 | ||
+ | AND um.epw_id IS NULL | ||
+ | AND a.ace_situacao = 1 | ||
+ | AND exm_situacao NOT IN (3, 2) | ||
+ | ) | ||
+ | OR @exm_disponivel = 0 | ||
+ | ) | ||
+ | ORDER BY bib_nome , | ||
+ | ace_titulo | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 7 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | SELECT lei.pes_id , | ||
+ | pes_nome , | ||
+ | lei_codigo , | ||
+ | lei_cargo , | ||
+ | lei_funcao , | ||
+ | tpl_nome lei_tipo , | ||
+ | psd_numero , | ||
+ | ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado | ||
+ | WHEN BIB_TipoLeitor.mbl_id > 0 | ||
+ | AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado | ||
+ | WHEN ( SELECT SUM(dbo.FN_diasAtraso(m.ace_id, | ||
+ | m.exm_id, 0, @considerarApenasDiasUteis)) | ||
+ | FROM FN_UltimaMovimentacao() m | ||
+ | WHERE m.pes_id = lei.pes_id | ||
+ | ) > 0 THEN 2 --Empréstimo em atraso | ||
+ | WHEN CAST(( SELECT dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis) | ||
+ | ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa | ||
+ | ELSE 1 -- Liberado para Empréstimo | ||
+ | END ) situacao | ||
+ | FROM dbo.BIB_Leitor AS lei WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id | ||
+ | INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK ) | ||
+ | ON pes.pes_id = lei.pes_id | ||
+ | AND pes.pes_situacao <> 3 | ||
+ | LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento | ||
+ | WITH ( NOLOCK ) | ||
+ | ON lei.pes_id = PES_PessoaDocumento.pes_id | ||
+ | AND psd_situacao <> 3 | ||
+ | AND PES_PessoaDocumento.tdo_id = @tdo_id | ||
+ | WHERE | ||
+ | ( | ||
+ | CASE @var_tipobuscaNome | ||
+ | WHEN 3 -- Fonética. | ||
+ | THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI) | ||
+ | ELSE pes.pes_nome COLLATE Latin1_General_CI_AI | ||
+ | END | ||
+ | ) | ||
+ | LIKE @var_pes_nome + '%' | ||
+ | AND ( @lei_codigo IS NULL | ||
+ | OR lei_codigo = @lei_codigo | ||
+ | ) | ||
+ | AND ( @psd_numero IS NULL | ||
+ | OR PES_PessoaDocumento.psd_numero = @psd_numero | ||
+ | ) | ||
+ | --AND tdo_id=@tdo_id | ||
+ | AND lei.lei_situacao <> 3 | ||
+ | ORDER BY pes_nome | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 8 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | SELECT lei.pes_id , | ||
+ | pes_nome , | ||
+ | lei_codigo , | ||
+ | lei_cargo , | ||
+ | lei_funcao , | ||
+ | tpl_nome lei_tipo , | ||
+ | psd_numero , | ||
+ | ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado | ||
+ | WHEN BIB_TipoLeitor.mbl_id > 0 | ||
+ | AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado | ||
+ | WHEN ( SELECT SUM(dbo.FN_diasAtraso(m.ace_id, | ||
+ | m.exm_id, 0, @considerarApenasDiasUteis)) | ||
+ | FROM FN_UltimaMovimentacao() m | ||
+ | WHERE m.pes_id = lei.pes_id | ||
+ | ) > 0 THEN 2 --Empréstimo em atraso | ||
+ | WHEN CAST(( SELECT dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis) | ||
+ | ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa | ||
+ | ELSE 1 -- Liberado para Empréstimo | ||
+ | END ) situacao | ||
+ | FROM dbo.BIB_Leitor AS lei WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id | ||
+ | INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK ) | ||
+ | ON pes.pes_id = lei.pes_id | ||
+ | AND pes.pes_situacao <> 3 | ||
+ | LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento | ||
+ | WITH ( NOLOCK ) | ||
+ | ON lei.pes_id = PES_PessoaDocumento.pes_id | ||
+ | AND psd_situacao <> 3 | ||
+ | AND PES_PessoaDocumento.tdo_id = @tdo_id | ||
+ | WHERE | ||
+ | ( | ||
+ | CASE @var_tipobuscaNome | ||
+ | WHEN 3 -- Fonética. | ||
+ | THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI) | ||
+ | ELSE pes.pes_nome COLLATE Latin1_General_CI_AI | ||
+ | END | ||
+ | ) | ||
+ | LIKE @var_pes_nome + '%' | ||
+ | AND ( @lei_codigo IS NULL | ||
+ | OR lei_codigo = @lei_codigo | ||
+ | ) | ||
+ | AND ( @psd_numero IS NULL | ||
+ | OR PES_PessoaDocumento.psd_numero = @psd_numero | ||
+ | ) | ||
+ | --AND tdo_id=@tdo_id | ||
+ | AND lei.lei_situacao <> 3 | ||
+ | ORDER BY pes_nome | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 9 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | INSERT INTO | ||
+ | BIB_ListaReserva | ||
+ | ( | ||
+ | ace_id | ||
+ | , exm_id | ||
+ | , lre_id | ||
+ | , pes_id | ||
+ | , lre_motivoCancelamento | ||
+ | , lre_dataAprovacao | ||
+ | , lre_dataCancelamento | ||
+ | , lre_dataLiberacao | ||
+ | , lre_situacao | ||
+ | , lre_dataCriacao | ||
+ | , lre_dataAlteracao | ||
+ | |||
+ | ) | ||
+ | VALUES | ||
+ | ( | ||
+ | @ace_id | ||
+ | , @exm_id | ||
+ | , @lre_id | ||
+ | , @pes_id | ||
+ | , @lre_motivoCancelamento | ||
+ | , @lre_dataAprovacao | ||
+ | , @lre_dataCancelamento | ||
+ | , @lre_dataLiberacao | ||
+ | , @lre_situacao | ||
+ | , @lre_dataCriacao | ||
+ | , @lre_dataAlteracao | ||
+ | |||
+ | ) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | * Item 10 | ||
+ | <syntaxhighlight lang="sql" line="1" > | ||
+ | WITH ListaReserva | ||
+ | AS ( SELECT lr.ace_id , | ||
+ | lr.exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | tor_nome , | ||
+ | COUNT(lre_id) qtd | ||
+ | FROM BIB_ListaReserva lr WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_Acervo a WITH ( NOLOCK ) ON lr.ace_id = a.ace_id | ||
+ | INNER JOIN BIB_Exemplar ex WITH ( NOLOCK ) ON a.ace_id = ex.ace_id | ||
+ | AND ex.exm_id = lr.exm_id | ||
+ | INNER JOIN BIB_ExemplarLocalizacao el WITH ( NOLOCK ) ON ex.ace_id = el.ace_id | ||
+ | AND ex.exm_id = el.exm_id | ||
+ | INNER JOIN BIB_Biblioteca b WITH ( NOLOCK ) ON el.bib_id = b.bib_id | ||
+ | LEFT JOIN BIB_TipoObra ON a.tor_id = BIB_TipoObra.tor_id | ||
+ | WHERE ace_situacao <> 3 | ||
+ | AND ( exm_tombo LIKE '%' + @exm_tombo + '%' | ||
+ | OR @exm_tombo IS NULL | ||
+ | ) | ||
+ | AND ( | ||
+ | -- 1 : Começa por | ||
+ | ( @ace_tipoBusca = 1 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE @ace_titulo | ||
+ | + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 2 : Contém | ||
+ | ( @ace_tipoBusca = 2 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE '%' | ||
+ | + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 3 : Fonética | ||
+ | ( @ace_tipoBusca = 3 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR dbo.SoundsLike(ace_titulo) LIKE '%' | ||
+ | + dbo.SoundsLike(@ace_titulo) | ||
+ | + '%' | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | AND ( @bib_id IS NULL | ||
+ | OR el.bib_id = @bib_id | ||
+ | ) | ||
+ | AND ( @data IS NULL | ||
+ | OR CONVERT(DATE, lre_dataCriacao) = @data | ||
+ | ) | ||
+ | AND lre_situacao = @lre_situacao | ||
+ | GROUP BY lr.ace_id , | ||
+ | lr.exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | tor_nome | ||
+ | ), | ||
+ | AcervosReserva | ||
+ | AS ( SELECT MOV.ace_id , | ||
+ | MOV.exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | tor_nome , | ||
+ | '1' qtd | ||
+ | FROM BIB_Movimentacao MOV WITH ( NOLOCK ) | ||
+ | INNER JOIN BIB_MovimentacaoWorkFlow MWF WITH ( NOLOCK ) ON MOV.ace_id = MWF.ace_id | ||
+ | AND MOV.exm_id = MWF.exm_id | ||
+ | AND MOV.epr_id = MWF.epr_id | ||
+ | INNER JOIN BIB_Acervo ACE WITH ( NOLOCK ) ON MOV.ace_id = ACE.ace_id | ||
+ | INNER JOIN BIB_Exemplar EXM WITH ( NOLOCK ) ON ACE.ace_id = EXM.ace_id | ||
+ | AND EXM.exm_id = MOV.exm_id | ||
+ | INNER JOIN dbo.BIB_ExemplarLocalizacao EXL | ||
+ | WITH ( NOLOCK ) ON MOV.ace_id = EXL.ace_id | ||
+ | AND MOV.exm_id = EXL.exm_id | ||
+ | INNER JOIN BIB_Biblioteca BIB WITH ( NOLOCK ) ON BIB.bib_id = EXL.bib_id | ||
+ | LEFT JOIN BIB_TipoObra TOR ON ACE.tor_id = TOR.tor_id | ||
+ | WHERE MOV.epr_id = ( SELECT MAX(epr_id) | ||
+ | FROM BIB_MovimentacaoWorkFlow MWF2 | ||
+ | WITH ( NOLOCK ) | ||
+ | WHERE MWF.ace_id = MWF2.ace_id | ||
+ | AND MWF.exm_id = MWF2.exm_id | ||
+ | ) | ||
+ | AND MWF.epw_id = ( SELECT MAX(epw_id) | ||
+ | FROM BIB_MovimentacaoWorkFlow MWF2 | ||
+ | WITH ( NOLOCK ) | ||
+ | WHERE MWF.ace_id = MWF2.ace_id | ||
+ | AND MWF.exm_id = MWF2.exm_id | ||
+ | AND MWF.epr_id = MWF2.epr_id | ||
+ | ) | ||
+ | AND MWF.epw_acao = 1 --Reservado | ||
+ | AND ace_situacao <> 3 | ||
+ | AND ( exm_tombo = @exm_tombo | ||
+ | OR @exm_tombo IS NULL | ||
+ | ) | ||
+ | AND ( | ||
+ | -- 1 : Começa por | ||
+ | ( @ace_tipoBusca = 1 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE @ace_titulo | ||
+ | + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 2 : Contém | ||
+ | ( @ace_tipoBusca = 2 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR ace_titulo LIKE '%' | ||
+ | + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao | ||
+ | |||
+ | ) | ||
+ | ) | ||
+ | OR | ||
+ | |||
+ | -- 3 : Fonética | ||
+ | ( @ace_tipoBusca = 3 | ||
+ | AND ( @ace_titulo IS NULL | ||
+ | OR dbo.SoundsLike(ace_titulo) LIKE '%' | ||
+ | + dbo.SoundsLike(@ace_titulo) | ||
+ | + '%' | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | AND ( @bib_id IS NULL | ||
+ | OR BIB.bib_id = @bib_id | ||
+ | ) | ||
+ | AND ( @data IS NULL | ||
+ | OR CONVERT(DATE, MOV.epr_dataReserva) = @data | ||
+ | ) | ||
+ | AND @lre_situacao = 2 --Reserva aprovada | ||
+ | GROUP BY MOV.ace_id , | ||
+ | MOV.exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | tor_nome | ||
+ | ), | ||
+ | Total | ||
+ | AS ( SELECT ace_id , | ||
+ | exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | ( qtd + ( SELECT COUNT(ace_id) | ||
+ | FROM AcervosReserva AR | ||
+ | WHERE AR.ace_id = LR.ace_id | ||
+ | AND AR.exm_id = LR.exm_id | ||
+ | ) ) AS qtd , | ||
+ | tor_nome | ||
+ | FROM ListaReserva LR | ||
+ | UNION | ||
+ | SELECT ace_id , | ||
+ | exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | ( SELECT COUNT(ace_id) | ||
+ | FROM AcervosReserva AR | ||
+ | WHERE AR.ace_id = AR2.ace_id | ||
+ | AND AR.exm_id = AR2.exm_id | ||
+ | ) qtd , | ||
+ | tor_nome | ||
+ | FROM AcervosReserva AR2 | ||
+ | ) | ||
+ | SELECT ace_id , | ||
+ | exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | MAX(qtd) AS qtd , | ||
+ | tor_nome | ||
+ | FROM Total | ||
+ | GROUP BY ace_id , | ||
+ | exm_id , | ||
+ | ace_titulo , | ||
+ | exm_tombo , | ||
+ | bib_nome , | ||
+ | tor_nome | ||
+ | </syntaxhighlight> | ||
=== Cenários de uso === | === Cenários de uso === | ||
Linha 43: | Linha 1 047: | ||
|- | |- | ||
|colspan="2"|2 - Clicar em "Incluir título" || style="text-align: center; | 3 | |colspan="2"|2 - Clicar em "Incluir título" || style="text-align: center; | 3 | ||
− | |||
− | |||
|- | |- | ||
|colspan="2"|2 - Preencher campo "Autor" || style="text-align: center; | 4 | |colspan="2"|2 - Preencher campo "Autor" || style="text-align: center; | 4 | ||
Linha 294: | Linha 1 296: | ||
|- | |- | ||
|} | |} | ||
− | |||
=== Resultado dos testes === | === Resultado dos testes === | ||
Linha 302: | Linha 1 303: | ||
: Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs. | : Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs. | ||
: Limite recomendado: Abaixo de 75 %. | : Limite recomendado: Abaixo de 75 %. | ||
− | : Análise: A aplicação demonstrou desempenho esperado. | + | : Análise: A aplicação demonstrou desempenho esperado até atingir 550 usuários simultâneos, onde apenas o servidor WEB01 sofre um pico e os demais servidores não utilizam tanto processamento. Este comportamento esta relacionado a quantidade de erros gerados pela aplicação. |
− | :::::: [[ | + | :::::: [[Arquivo:2016-07-19 Biblioteca TempoProcessador.png]] |
Linha 310: | Linha 1 311: | ||
: Descrição: Indica a porcentagem de memória utilizada para uso dos processos. | : Descrição: Indica a porcentagem de memória utilizada para uso dos processos. | ||
: Limite recomendado: Abaixo de 75 %. | : Limite recomendado: Abaixo de 75 %. | ||
− | : Análise: | + | : Análise: Em dois momentos o WEB01 sofreu uma queda na utilização da memória. Os demais servidores mantiveram-se estáveis quanto a utilização de memória. |
− | :::::: [[ | + | :::::: [[Arquivo:2016-07-19 Biblioteca MemoriaUtilizada.png]] |
Linha 318: | Linha 1 319: | ||
: Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede. | : Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede. | ||
: Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor). | : Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor). | ||
− | : Análise: | + | : Análise: Foi observado que quanto maior a quantidade de erros de dll salvas menor a quantidade de Kbytes enviados e recebidos. |
− | :::::: [[ | + | :::::: [[Arquivo:2016-07-19 Biblioteca InterfaceDeRede.png]] |
Linha 326: | Linha 1 327: | ||
: Descrição: Indica o tempo médio de resposta das requisições. | : Descrição: Indica o tempo médio de resposta das requisições. | ||
: Limite recomendado: 5 segundos. | : Limite recomendado: 5 segundos. | ||
− | : Análise: A | + | : Análise: A partir de 300 usuários simultâneos até 400 usuários ocorre uma alta no tempo de resposta da aplicação, tendo um pico com 350 usuários simultâneos. |
+ | |||
+ | :::::: [[Arquivo:2016-07-19 Biblioteca TempoDeResposta.png]] | ||
+ | ::::::: [[Arquivo:2016-07-19 Bibliote TempoDeResposta Leg1.png]] | ||
+ | ::::::: [[Arquivo:2016-07-19 Bibliote TempoDeResposta Leg2.png]] | ||
− | |||
*'''Tempo de vazão''' | *'''Tempo de vazão''' | ||
: Descrição: Indica a quantidade total de request por segundo. | : Descrição: Indica a quantidade total de request por segundo. | ||
: Limite recomendado: Quanto maior melhor. | : Limite recomendado: Quanto maior melhor. | ||
− | : A aplicação | + | : Análise: A aplicação teve apenas um desvio quando utilizada por 350 usuários. |
− | :::::: [[ | + | :::::: [[Arquivo:2016-07-19 Biblioteca Vazao.png]] |
Linha 341: | Linha 1 345: | ||
: Descrição: Indica a porcentagem de erro. | : Descrição: Indica a porcentagem de erro. | ||
: Limite recomendado: Quanto menor melhor. | : Limite recomendado: Quanto menor melhor. | ||
− | : A aplicação | + | : Análise: A aplicação possui erros funcionais que não retornam mensagem na tela para o usuário, os mesmos são apenas salvos em logs de erros. |
− | :::::: [[ | + | :::::: [[Arquivo:2016-07-19 Biblioteca Erros.png]] |
Edição atual tal como às 17h02min de 10 de agosto de 2016
Índice
Sistemas Verificados
- Biblioteca, versão 1.45.0.0
Verificação de Segurança
Em verificação.
Verificação de Desempenho
Observação do teste
Para a execução dos testes foram utilizados:
- 1 Servidor de banco de dados.
- 2 Servidores web.
- 2 Test Agent
Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema.
A equipe responsável atualmente pelo projeto atualizou o ambiente de teste e o de demonstração, devido aos mesmos estarem com versões legadas.
Análise do teste
O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo.
A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar.
Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste.
Abaixo seguem alguns dos logs de erros:
- Deadlock
Exception Type: System.Data.SqlClient.SqlException Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Source: .Net SqlClient Data Provider Stack Trace: at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) at MSTech.Data.Common.QuerySelect.Execute() at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854 at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946 at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792 at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497 \r\n
- Erro dllBiblioteca
Exception Type: System.ArgumentOutOfRangeException Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value Source: System.Web Stack Trace: at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value) at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556 \r\n
- Erro tblAuxiliar
Exception Type: System.Data.SqlClient.SqlException Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission. Source: .Net SqlClient Data Provider Stack Trace: at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) at MSTech.Data.Common.QuerySelect.Execute() at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294 at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980 at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921 at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656 at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861 at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497 \r\n
- Timeout
Inner Exception Type: System.ComponentModel.Win32Exception Inner Exception: The wait operation timed out Inner Source: Exception Type: System.Data.SqlClient.SqlException Exception: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Source: .Net SqlClient Data Provider Stack Trace: at MSTech.Data.Common.TalkDBTransaction.setError(Exception err) at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd) at MSTech.Data.Common.QuerySelect.Execute() at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371 at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165 at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590 \r\n
TOP 10 queries mais lentas
- Item 1
1 SELECT DISTINCT
2 A.ace_titulo
3 , A.ace_subTitulo
4 , dbo.FN_ConcatenaTuplas_ClassificacaoLiteraria(A.ace_id) AS cll_nome
5 , aut_nomePadrao
6 , aut_nome
7 , edt.edt_nome
8 , tpo.tor_nome
9 , a.ace_id
10 , O.obr_volume
11 , A.ace_isbnIssn
12 , A.ace_cdd
13 , A.ace_phaCutter
14 , O.obr_edicao
15 , O.obr_anoEdicao
16 , aut.oat_descricao
17 , A.ace_linkDominio
18 FROM BIB_Acervo A WITH ( NOLOCK )
19 INNER JOIN BIB_Exemplar E WITH ( NOLOCK ) ON A.ace_id = E.ace_id
20 INNER JOIN BIB_ExemplarLocalizacao EL WITH ( NOLOCK ) ON A.ace_id = EL.ace_id AND E.exm_id = EL.exm_id
21 INNER JOIN BIB_Biblioteca bib WITH ( NOLOCK ) ON bib.bib_id = EL.bib_id
22 INNER JOIN Synonym_SYS_UnidadeAdministrativa uad WITH(NOLOCK) ON uad.uad_id = BIB.uad_id AND uad.ent_id = BIB.ent_id
23 INNER JOIN BIB_ObraAutor oa WITH (NOLOCK) ON A.ace_id = oa.ace_id
24 INNER JOIN BIB_Obra O WITH (NOLOCK) ON A.ace_id = O.ace_id
25 INNER JOIN BIB_TipoObra tpo WITH ( NOLOCK ) ON A.tor_id = tpo.tor_id
26 INNER JOIN BIB_ObraClassificacao CLO WITH (NOLOCK) ON A.ace_id = CLO.ace_id
27 INNER JOIN BIB_ClassificacaoLiteraria cl WITH (NOLOCK) ON cl.cll_id = CLO.cll_id
28
29 LEFT JOIN BIB_Editora edt WITH(NOLOCK) ON A.edt_id = edt.edt_id
30 LEFT JOIN BIB_GrupoAssunto ga WITH (NOLOCK) on A.gra_id = ga.gra_id
31 LEFT JOIN BIB_GeneroAssunto gs WITH (NOLOCK) ON cl.cll_id = gs.cll_id AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL)
32 LEFT JOIN INT_ObraAutor aut WITH (NOLOCK) ON a.ace_id = aut.ace_id
33
34 WHERE
35 ((A.ace_situacao = 1 OR A.ace_situacao = 5)
36 AND E.exm_situacao NOT IN ( 3, 4)
37 AND E.ace_id IS NOT NULL
38 AND (edt.edt_situacao = 1 OR edt.edt_situacao IS NULL)
39 AND (tor_situacao = 1 OR tor_situacao IS NULL)
40 AND (ga.gra_situacao = 1 OR ga.gra_situacao IS NULL)
41 AND (cl.cll_situacao = 1 OR cl.cll_situacao IS NULL)
42 AND (bib.bib_situacao <> 3 AND uad.uad_situacao <> 3))
43 --AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL))
44 AND (
45 A.ace_titulo LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
46 OR A.ace_isbnIssn LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
47 OR edt.edt_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
48 OR O.obr_anoEdicao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
49 OR O.obr_serieColecao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
50 OR ga.gra_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
51 OR cl.cll_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
52 OR gs.gnr_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
53 OR aut.aut_nomePadrao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
54 OR aut.aut_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
55 )
56 AND
57 (
58 EL.bib_id IN
59 (
60 SELECT bib_id
61 FROM BIB_ParametroBiblioteca pb
62 WHERE pbi_permitiConsultaExterna = 0 -- permite consulta do acervo
63 )
64 OR EL.bib_id IS NULL
65 )
66 ORDER BY A.ace_titulo
- Item 2
1 WITH ExemplaresSemGrupo AS (
2 SELECT
3 EXM.ace_id,
4 EXM.exm_id,
5 BIB.bib_id,
6 ACE.gra_id
7
8 FROM BIB_Exemplar AS EXM WITH ( NOLOCK )
9
10 INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH ( NOLOCK )
11 ON EXM.ace_id = EXL.ace_id
12 AND EXM.exm_id = EXL.exm_id
13
14 INNER JOIN dbo.BIB_Biblioteca AS BIB WITH (NOLOCK)
15 ON BIB.bib_id = EXL.bib_id
16
17 INNER JOIN dbo.BIB_Acervo AS ACE WITH(NOLOCK)
18 ON ACE.ace_id = EXM.ace_id
19
20 LEFT JOIN dbo.BIB_GrupoAssunto AS GRA WITH (NOLOCK)
21 ON GRA.gra_id = ACE.gra_id
22 AND GRA.gra_situacao <> 3
23 WHERE
24 exm_situacao <> 3 AND
25 bib_situacao <> 3 AND
26 ACE.gra_id IS NULL
27 ),
28
29 AcervosSemGrupo AS (
30
31 SELECT
32 ace_id,
33 bib_id,
34 gra_id
35 FROM ExemplaresSemGrupo
36
37 GROUP BY ace_id,
38 bib_id,
39 gra_id
40 ),
41
42 Exemplares AS (
43
44 SELECT
45 EXM.exm_id,
46 gra_id,
47 ACE.ace_id,
48 ACE.ace_situacao,
49 BIB.bib_id
50
51 FROM BIB_Acervo AS ACE WITH (NOLOCK)
52
53 INNER JOIN BIB_Exemplar AS EXM WITH (NOLOCK)
54 ON EXM.ace_id = ACE.ace_id
55
56 INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH (NOLOCK)
57 ON EXL.ace_id = ACE.ace_id
58 AND EXL.exm_id = EXM.exm_id
59
60 INNER JOIN BIB_Biblioteca AS BIB WITH (NOLOCK)
61 ON BIB.bib_id = EXL.bib_id
62
63 WHERE
64 exm_situacao <> 3 AND
65 bib_situacao <> 3
66 ),
67
68 Acervos AS (
69
70 SELECT
71 ce_id,
72 gra_id,
73 bib_id
74
75 FROM Exemplares WITH (NOLOCK)
76
77 GROUP BY
78 ace_id,
79 gra_id,
80 bib_id
81 )
82
83 SELECT gra_id ,
84 cor_hexadecimal ,
85 cor_nome ,
86 gra_nome ,
87 gra_numeroGrupo,
88 (
89 SELECT COUNT(exm_id) FROM Exemplares AS EXE WHERE EXE.gra_id = GRA.gra_id
90 ) qtdExemplares ,
91 (
92 SELECT COUNT(ace_id) FROM Acervos AS ACE WHERE ACE.gra_id = GRA.gra_id
93
94 ) qtdAcervo
95
96 FROM
97 BIB_GrupoAssunto AS GRA WITH (NOLOCK)
98
99 LEFT JOIN BIB_Cor AS COR WITH (NOLOCK)
100 ON GRA.cor_id = COR.cor_id
101 WHERE GRA.gra_situacao <> 3
102 UNION ALL
103
104 SELECT -1 ,
105 NULL ,
106 NULL ,
107 'Sem grupo de assunto' ,
108 NULL,
109 (
110 SELECT COUNT(exm_id) FROM ExemplaresSemGrupo WHERE gra_id IS NULL
111 ) qtdExemplares ,
112
113 ( SELECT COUNT(ace_id) FROM AcervosSemGrupo WHERE gra_id IS NULL
114
115 ) qtdAcervo
116 order by gra_nome
- Item 3
1 SELECT
2 MAX(CAST(LTRIM(RTRIM(EXM.exm_tombo)) AS BIGINT)) AS tombo
3 FROM
4 BIB_Exemplar as EXM WITH(NOLOCK)
5 INNER JOIN BIB_ExemplarLocalizacao AS EL WITH(NOLOCK)
6 ON EL.ace_id = EXM.ace_id
7 AND EL.exm_id = EXM.exm_id
8 WHERE
9 exm_situacao <> 3
10 AND (EL.bib_id = @bib_id OR @bib_id IS NULL)
11 AND (ISNUMERIC(EXM.exm_tombo) = 1 AND EXM.exm_tombo NOT LIKE '%[.]%' AND EXM.exm_tombo NOT LIKE '%[,]%')
12 AND EXM.exm_tombo NOT LIKE '%e%'
- Item 4
1 FROM BIB_Acervo WITH ( NOLOCK )
2 INNER JOIN BIB_Exemplar WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Exemplar.ace_id
3 --LEFT JOIN BIB_ExemplarObra WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_ExemplarObra.ace_id
4 -- AND BIB_Exemplar.exm_id = BIB_ExemplarObra.exm_id
5 --LEFT JOIN BIB_Periodico WITH ( NOLOCK ) ON BIB_ExemplarObra.ace_id = BIB_Periodico.ace_id
6 --LEFT JOIN BIB_ExemplarVideo WITH ( NOLOCK ) ON BIB_ExemplarVideo.ace_id = BIB_Acervo.ace_id
7 WHERE @bib_id IN (
8 SELECT bib_id
9 FROM BIB_ExemplarObra WITH ( NOLOCK )
10 WHERE ace_id = @ace_id
11 AND BIB_ExemplarObra.exm_id = BIB_Exemplar.exm_id
12 UNION ALL
13 SELECT bib_id
14 FROM BIB_ExemplarVideo WITH ( NOLOCK )
15 WHERE ace_id = @ace_id
16 AND BIB_ExemplarVideo.exm_id = BIB_Exemplar.exm_id
17 UNION ALL
18 SELECT bib_id
19 FROM BIB_Periodico WITH ( NOLOCK )
20 WHERE ace_id = @ace_id )
21 --( BIB_ExemplarObra.bib_id = @bib_id
22 -- OR BIB_Periodico.bib_id = @bib_id
23 -- OR BIB_ExemplarVideo.bib_id = @bib_id
24 -- )
25 AND BIB_Acervo.ace_id = @ace_id
- Item 5
1 ELECT
2 BIB_Exemplar.exm_id ,
3 BIB_Acervo.ace_id ,
4 ace_titulo ,
5 ISNULL(exm_tombo, exm_codigoBarras) tombo ,
6 aut_nome autor ,
7 bib_nome ,
8 edt_nome ,
9 obr_volume ,
10 ISNULL(exp_edicao, obr_edicao) edicao ,
11 obr_anoEdicao ,
12 ace_isbnIssn ,
13 CASE WHEN PBL.pbc_liberadoEmprestimo = 2
14 THEN 'Categoria bloqueada'
15 WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
16 ELSE ISNULL(situacao, 'Disponível')
17 END AS situacao ,
18 CASE WHEN ace_bloqueadoReserva = 1 THEN '--'
19 WHEN ace_bloqueadoReserva = 0 THEN '--'
20 END AS ace_bloqueadoReserva ,
21 --CASE WHEN situacao IS NOT NULL THEN situacao
22 -- ELSE CASE WHEN PBL.pbc_liberadoEmprestimo = 2
23 -- THEN 'Categoria bloqueada'
24 -- WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
25 -- ELSE ISNULL(situacao, 'Disponível')
26 -- END
27 --END AS situacao ,
28 epr_dataPrevistaDevolucao dtPrevDev ,
29
30 --ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
31 -- FROM BIB_ListaReserva a2
32 -- WHERE a2.ace_id = BIB_Exemplar.ace_id
33 -- AND a2.exm_id = BIB_Exemplar.exm_id
34 -- AND lre_situacao = 1
35 -- ) > 0 THEN 'Existem solicitações pendentes. '
36 -- END, '')
37 --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
38 -- FROM BIB_ListaReserva a2
39 -- WHERE a2.ace_id = BIB_Exemplar.ace_id
40 -- AND a2.exm_id = BIB_Exemplar.exm_id
41 -- AND lre_situacao = 2
42 -- ) > 0 THEN 'Existe lista de reserva. '
43 -- END, '')
44 --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
45 -- FROM FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
46 -- BIB_Exemplar.exm_id) a
47 -- ) = 2 THEN 'Reserva para biblioteca. '
48 -- END, '') obs ,
49 CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
50 exm_codigoBarras)))) <> 0
51 THEN REPLICATE('0',
52 ( 19
53 - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
54 exm_codigoBarras))) AS VARCHAR)) ))
55 + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
56 exm_codigoBarras))) AS VARCHAR)
57 ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
58 END ordenaTombo
59 FROM BIB_Exemplar WITH ( NOLOCK )
60 INNER JOIN BIB_Acervo WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_Acervo.ace_id
61 INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_ExemplarLocalizacao.ace_id
62 AND BIB_Exemplar.exm_id = BIB_ExemplarLocalizacao.exm_id
63 INNER JOIN BIB_Biblioteca WITH ( NOLOCK ) ON BIB_ExemplarLocalizacao.bib_id = BIB_Biblioteca.bib_id
64 LEFT JOIN BIB_ExemplarPeriodico WITH ( NOLOCK ) ON BIB_ExemplarPeriodico.exm_id = BIB_Exemplar.exm_id
65 AND BIB_ExemplarPeriodico.ace_id = BIB_Exemplar.ace_id
66 LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON BIB_Acervo.edt_id = BIB_Editora.edt_id
67 LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Obra.ace_id
68 LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = bib_exemplar.ace_id
69 AND um.exm_id = bib_exemplar.exm_id
70 LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = INT_ObraAutor.ace_id
71 LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = BIB_Exemplar.tor_id
72 AND PBL.toc_id = BIB_Exemplar.toc_id
73 AND PBL.bib_id = BIB_Biblioteca.bib_id
74 WHERE ace_situacao = 1
75 AND exm_situacao NOT IN ( 3, 4, 5 )
76 AND ( BIB_Exemplar.tor_id = @tor_id
77 OR @tor_id IS NULL
78 )
79 AND ( exm_tombo IN (
80 SELECT valor
81 FROM FN_StringToArrayStr(@exm_tombo, ';') )
82 OR @exm_tombo IS NULL
83 OR exm_codigoBarras IN (
84 SELECT valor
85 FROM FN_StringToArrayStr(@exm_tombo, ';') )
86 )
87 AND (
88 -- 1 : Começa por
89 ( @ace_tipoBusca = 1
90 AND ( @ace_titulo IS NULL
91 OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
92
93 )
94 )
95 OR
96
97 -- 2 : Contém
98 ( @ace_tipoBusca = 2
99 AND ( @ace_titulo IS NULL
100 OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
101
102 )
103 )
104 OR
105
106 -- 3 : Fonética
107 ( @ace_tipoBusca = 3
108 AND ( @ace_titulo IS NULL
109 OR dbo.SoundsLike(ace_titulo) LIKE '%'
110 + dbo.SoundsLike(@ace_titulo) + '%'
111 )
112 )
113 )
114 AND ( edt_nome LIKE '%' + @edt_nome + '%'
115 OR @edt_nome IS NULL
116 )
117 AND ent_id = @ent_id
118 AND ( @bib_id = BIB_Biblioteca.bib_id
119 OR @bib_id IS NULL
120 )
121 AND ( @aut_id IS NULL
122 OR ( SELECT COUNT(ace_id)
123 FROM BIB_ObraAutor oa WITH ( NOLOCK )
124 WHERE oa.ace_id = BIB_Exemplar.ace_id
125 AND oa.aut_id IN (
126 SELECT CONVERT(INT, valor)
127 FROM dbo.FN_StringToArrayStr(@aut_id,
128 ';') )
129 ) > 0
130 )
131
132 AND ( @obr_volume IS NULL
133 OR obr_volume LIKE '%' + @obr_volume + '%'
134 )
135 AND ( @obr_anoEdicao IS NULL
136 OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
137 )
138 AND ( @obr_edicao IS NULL
139 OR obr_edicao LIKE '%' + @obr_edicao + '%'
140 )
141 AND @ent_id = BIB_Biblioteca.ent_id
142 AND BIB_Biblioteca.uad_id IN ( ( SELECT uad_id
143 FROM Synonym_FN_Select_UAs_By_PermissaoUsuario(@usu_id,
144 @gru_id)
145 )
146 )
147 -- Filtra disponível
148 AND ( ( @exm_disponivel = 1
149 AND epw_id IS NULL
150 AND ace_situacao = 1
151 AND exm_situacao NOT IN (3, 2)
152 )
153 OR @exm_disponivel = 0
154 )
155 --Deverá aparecer todos os exemplares, independente da situação (Comentado por Rafael Neto)
156 --AND ( ISNULL(( SELECT CASE WHEN epw_acao = 3 THEN 1
157 -- WHEN epw_acao = 5 THEN 1
158 -- ELSE 2
159 -- END
160 -- FROM FN_UltimaMovimentacaoAcao(BIB_Exemplar.ace_id,
161 -- BIB_Exemplar.exm_id)
162 -- ), 1) = 1 )
163 --AND ( ISNULL(( SELECT CASE WHEN mbw_acao <> 2 THEN 1
164 -- ELSE 2
165 -- END
166 -- FROM FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
167 -- BIB_Exemplar.exm_id)
168 -- ), 1) = 1 )
169 ORDER BY bib_nome ,
170 ace_titulo
- Item 6
1 WITH Acervo
2 AS ( SELECT ace_id ,
3 ace_isbnIssn ,
4 ace_titulo ,
5 edt_id ,
6 tor_id ,
7 ace_bloqueadoReserva ,
8 ace_situacao
9 FROM BIB_Acervo WITH ( NOLOCK )
10 WHERE ace_situacao = 1
11 ),
12 Exemplar
13 AS ( SELECT exm_id ,
14 ace_id ,
15 toc_id ,
16 tor_id ,
17 exm_tombo ,
18 exm_codigoBarras ,
19 exm_situacao
20 FROM BIB_Exemplar WITH ( NOLOCK )
21 WHERE exm_situacao NOT IN ( 3, 4 , 5)
22 ),
23 Biblioteca
24 AS ( SELECT bib_id ,
25 bib_nome
26 FROM BIB_Biblioteca WITH ( NOLOCK )
27 WHERE ent_id = @ent_id
28 )
29 SELECT e.exm_id ,
30 a.ace_id ,
31 ace_titulo ,
32 ISNULL(exm_tombo, exm_codigoBarras) tombo ,
33 aut_nome autor ,
34 bib_nome ,
35 edt_nome ,
36 tor_nome ,
37 ace_isbnIssn ,
38 obr_volume ,
39 obr_edicao edicao ,
40 obr_anoEdicao ,
41 CASE WHEN PBL.pbc_liberadoEmprestimo = 2 THEN 'Categoria bloqueada'
42 WHEN e.exm_situacao = 2 THEN 'Exemplar bloqueado'
43 WHEN e.exm_situacao = 5 THEN 'Exemplar retido'
44 ELSE ISNULL(situacao, 'Disponível')
45 END AS situacao ,
46 CASE WHEN ace_bloqueadoReserva = 1 THEN 'Bloqueado para reserva'
47 WHEN ace_bloqueadoReserva = 0 THEN '--'
48 END AS ace_bloqueadoReserva ,
49 epr_dataPrevistaDevolucao dtPrevDev ,
50 --ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
51 -- FROM BIB_ListaReserva a2
52 -- WHERE a2.ace_id = e.ace_id
53 -- AND a2.exm_id = e.exm_id
54 -- AND lre_situacao = 1
55 -- ) > 0
56 -- THEN 'Existem solicitações pendentes. '
57 -- END, '')
58 --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
59 -- FROM BIB_ListaReserva a2
60 -- WHERE a2.ace_id = e.ace_id
61 -- AND a2.exm_id = e.exm_id
62 -- AND lre_situacao = 2
63 -- ) > 0 THEN 'Existe lista de reserva. '
64 -- END, '')
65 --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
66 -- FROM FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
67 -- e.exm_id) a
68 -- ) = 2 THEN 'Reserva para biblioteca. '
69 -- END, '') obs ,
70 CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
71 exm_codigoBarras)))) <> 0
72 THEN REPLICATE('0',
73 ( 19
74 - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
75 exm_codigoBarras))) AS VARCHAR)) ))
76 + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
77 exm_codigoBarras))) AS VARCHAR)
78 ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
79 END ordenaTombo
80 FROM Acervo a
81 INNER JOIN Exemplar e ON a.ace_id = e.ace_id
82 INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON e.ace_id = BIB_ExemplarLocalizacao.ace_id
83 AND e.exm_id = BIB_ExemplarLocalizacao.exm_id
84 INNER JOIN Biblioteca b ON BIB_ExemplarLocalizacao.bib_id = b.bib_id
85 LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON a.ace_id = BIB_Obra.ace_id
86 LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON a.edt_id = BIB_Editora.edt_id
87 LEFT JOIN BIB_TipoObra WITH ( NOLOCK ) ON a.tor_id = BIB_TipoObra.tor_id
88 LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = e.ace_id
89 AND um.exm_id = e.exm_id
90 LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON e.ace_id = INT_ObraAutor.ace_id
91 LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = e.tor_id
92 AND PBL.toc_id = e.toc_id
93 AND PBL.bib_id = b.bib_id
94 WHERE ( ( @somenteDisponivies = 1
95 AND epw_id IS NOT NULL
96 )
97 OR @somenteDisponivies = 0
98 )
99 AND ( @bib_id = b.bib_id
100 OR @bib_id IS NULL
101 )
102 AND ( a.tor_id = @tor_id
103 OR @tor_id IS NULL
104 )
105 AND ( exm_tombo IN (
106 SELECT valor
107 FROM FN_StringToArrayStr(@exm_tombo, ';') )
108 OR @exm_tombo IS NULL
109 OR exm_codigoBarras IN (
110 SELECT valor
111 FROM FN_StringToArrayStr(@exm_tombo, ';') )
112 )
113 AND (
114 -- 1 : Começa por
115 ( @ace_tipoBusca = 1
116 AND ( @ace_titulo IS NULL
117 OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
118
119 )
120 )
121 OR
122
123 -- 2 : Contém
124 ( @ace_tipoBusca = 2
125 AND ( @ace_titulo IS NULL
126 OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
127
128 )
129 )
130 OR
131
132 -- 3 : Fonética
133 ( @ace_tipoBusca = 3
134 AND ( @ace_titulo IS NULL
135 OR dbo.SoundsLike(ace_titulo) LIKE '%'
136 + dbo.SoundsLike(@ace_titulo) + '%'
137 )
138 )
139 )
140 AND ( edt_nome LIKE '%' + @edt_nome + '%'
141 OR @edt_nome IS NULL
142 )
143 AND ( @aut_id IS NULL
144 OR ( SELECT COUNT(ace_id)
145 FROM BIB_ObraAutor oa WITH ( NOLOCK )
146 WHERE oa.ace_id = e.ace_id
147 AND oa.aut_id IN (
148 SELECT CONVERT(INT, valor)
149 FROM dbo.FN_StringToArrayStr(@aut_id,
150 ';') )
151 ) > 0
152 )
153
154 AND ( @obr_volume IS NULL
155 OR obr_volume LIKE '%' + @obr_volume + '%'
156 )
157 AND ( @obr_anoEdicao IS NULL
158 OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
159 )
160 AND ( @obr_edicao IS NULL
161 OR obr_edicao LIKE '%' + @obr_edicao + '%'
162 )
163 AND ( ISNULL(( SELECT CASE WHEN mbw_acao <> 2 THEN 1
164 ELSE 2
165 END
166 FROM FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
167 e.exm_id)
168 ), 1) = 1 )
169
170 -- Filtra disponível
171 AND ( ( @exm_disponivel = 1
172 AND um.epw_id IS NULL
173 AND a.ace_situacao = 1
174 AND exm_situacao NOT IN (3, 2)
175 )
176 OR @exm_disponivel = 0
177 )
178 ORDER BY bib_nome ,
179 ace_titulo
- Item 7
1 SELECT lei.pes_id ,
2 pes_nome ,
3 lei_codigo ,
4 lei_cargo ,
5 lei_funcao ,
6 tpl_nome lei_tipo ,
7 psd_numero ,
8 ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado
9 WHEN BIB_TipoLeitor.mbl_id > 0
10 AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
11 WHEN ( SELECT SUM(dbo.FN_diasAtraso(m.ace_id,
12 m.exm_id, 0, @considerarApenasDiasUteis))
13 FROM FN_UltimaMovimentacao() m
14 WHERE m.pes_id = lei.pes_id
15 ) > 0 THEN 2 --Empréstimo em atraso
16 WHEN CAST(( SELECT dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
17 ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa
18 ELSE 1 -- Liberado para Empréstimo
19 END ) situacao
20 FROM dbo.BIB_Leitor AS lei WITH ( NOLOCK )
21 INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
22 INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK )
23 ON pes.pes_id = lei.pes_id
24 AND pes.pes_situacao <> 3
25 LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
26 WITH ( NOLOCK )
27 ON lei.pes_id = PES_PessoaDocumento.pes_id
28 AND psd_situacao <> 3
29 AND PES_PessoaDocumento.tdo_id = @tdo_id
30 WHERE
31 (
32 CASE @var_tipobuscaNome
33 WHEN 3 -- Fonética.
34 THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
35 ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
36 END
37 )
38 LIKE @var_pes_nome + '%'
39 AND ( @lei_codigo IS NULL
40 OR lei_codigo = @lei_codigo
41 )
42 AND ( @psd_numero IS NULL
43 OR PES_PessoaDocumento.psd_numero = @psd_numero
44 )
45 --AND tdo_id=@tdo_id
46 AND lei.lei_situacao <> 3
47 ORDER BY pes_nome
- Item 8
1 SELECT lei.pes_id ,
2 pes_nome ,
3 lei_codigo ,
4 lei_cargo ,
5 lei_funcao ,
6 tpl_nome lei_tipo ,
7 psd_numero ,
8 ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado
9 WHEN BIB_TipoLeitor.mbl_id > 0
10 AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
11 WHEN ( SELECT SUM(dbo.FN_diasAtraso(m.ace_id,
12 m.exm_id, 0, @considerarApenasDiasUteis))
13 FROM FN_UltimaMovimentacao() m
14 WHERE m.pes_id = lei.pes_id
15 ) > 0 THEN 2 --Empréstimo em atraso
16 WHEN CAST(( SELECT dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
17 ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa
18 ELSE 1 -- Liberado para Empréstimo
19 END ) situacao
20 FROM dbo.BIB_Leitor AS lei WITH ( NOLOCK )
21 INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
22 INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK )
23 ON pes.pes_id = lei.pes_id
24 AND pes.pes_situacao <> 3
25 LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
26 WITH ( NOLOCK )
27 ON lei.pes_id = PES_PessoaDocumento.pes_id
28 AND psd_situacao <> 3
29 AND PES_PessoaDocumento.tdo_id = @tdo_id
30 WHERE
31 (
32 CASE @var_tipobuscaNome
33 WHEN 3 -- Fonética.
34 THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
35 ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
36 END
37 )
38 LIKE @var_pes_nome + '%'
39 AND ( @lei_codigo IS NULL
40 OR lei_codigo = @lei_codigo
41 )
42 AND ( @psd_numero IS NULL
43 OR PES_PessoaDocumento.psd_numero = @psd_numero
44 )
45 --AND tdo_id=@tdo_id
46 AND lei.lei_situacao <> 3
47 ORDER BY pes_nome
- Item 9
1 INSERT INTO
2 BIB_ListaReserva
3 (
4 ace_id
5 , exm_id
6 , lre_id
7 , pes_id
8 , lre_motivoCancelamento
9 , lre_dataAprovacao
10 , lre_dataCancelamento
11 , lre_dataLiberacao
12 , lre_situacao
13 , lre_dataCriacao
14 , lre_dataAlteracao
15
16 )
17 VALUES
18 (
19 @ace_id
20 , @exm_id
21 , @lre_id
22 , @pes_id
23 , @lre_motivoCancelamento
24 , @lre_dataAprovacao
25 , @lre_dataCancelamento
26 , @lre_dataLiberacao
27 , @lre_situacao
28 , @lre_dataCriacao
29 , @lre_dataAlteracao
30
31 )
- Item 10
1 WITH ListaReserva
2 AS ( SELECT lr.ace_id ,
3 lr.exm_id ,
4 ace_titulo ,
5 exm_tombo ,
6 bib_nome ,
7 tor_nome ,
8 COUNT(lre_id) qtd
9 FROM BIB_ListaReserva lr WITH ( NOLOCK )
10 INNER JOIN BIB_Acervo a WITH ( NOLOCK ) ON lr.ace_id = a.ace_id
11 INNER JOIN BIB_Exemplar ex WITH ( NOLOCK ) ON a.ace_id = ex.ace_id
12 AND ex.exm_id = lr.exm_id
13 INNER JOIN BIB_ExemplarLocalizacao el WITH ( NOLOCK ) ON ex.ace_id = el.ace_id
14 AND ex.exm_id = el.exm_id
15 INNER JOIN BIB_Biblioteca b WITH ( NOLOCK ) ON el.bib_id = b.bib_id
16 LEFT JOIN BIB_TipoObra ON a.tor_id = BIB_TipoObra.tor_id
17 WHERE ace_situacao <> 3
18 AND ( exm_tombo LIKE '%' + @exm_tombo + '%'
19 OR @exm_tombo IS NULL
20 )
21 AND (
22 -- 1 : Começa por
23 ( @ace_tipoBusca = 1
24 AND ( @ace_titulo IS NULL
25 OR ace_titulo LIKE @ace_titulo
26 + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
27
28 )
29 )
30 OR
31
32 -- 2 : Contém
33 ( @ace_tipoBusca = 2
34 AND ( @ace_titulo IS NULL
35 OR ace_titulo LIKE '%'
36 + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
37
38 )
39 )
40 OR
41
42 -- 3 : Fonética
43 ( @ace_tipoBusca = 3
44 AND ( @ace_titulo IS NULL
45 OR dbo.SoundsLike(ace_titulo) LIKE '%'
46 + dbo.SoundsLike(@ace_titulo)
47 + '%'
48 )
49 )
50 )
51 AND ( @bib_id IS NULL
52 OR el.bib_id = @bib_id
53 )
54 AND ( @data IS NULL
55 OR CONVERT(DATE, lre_dataCriacao) = @data
56 )
57 AND lre_situacao = @lre_situacao
58 GROUP BY lr.ace_id ,
59 lr.exm_id ,
60 ace_titulo ,
61 exm_tombo ,
62 bib_nome ,
63 tor_nome
64 ),
65 AcervosReserva
66 AS ( SELECT MOV.ace_id ,
67 MOV.exm_id ,
68 ace_titulo ,
69 exm_tombo ,
70 bib_nome ,
71 tor_nome ,
72 '1' qtd
73 FROM BIB_Movimentacao MOV WITH ( NOLOCK )
74 INNER JOIN BIB_MovimentacaoWorkFlow MWF WITH ( NOLOCK ) ON MOV.ace_id = MWF.ace_id
75 AND MOV.exm_id = MWF.exm_id
76 AND MOV.epr_id = MWF.epr_id
77 INNER JOIN BIB_Acervo ACE WITH ( NOLOCK ) ON MOV.ace_id = ACE.ace_id
78 INNER JOIN BIB_Exemplar EXM WITH ( NOLOCK ) ON ACE.ace_id = EXM.ace_id
79 AND EXM.exm_id = MOV.exm_id
80 INNER JOIN dbo.BIB_ExemplarLocalizacao EXL
81 WITH ( NOLOCK ) ON MOV.ace_id = EXL.ace_id
82 AND MOV.exm_id = EXL.exm_id
83 INNER JOIN BIB_Biblioteca BIB WITH ( NOLOCK ) ON BIB.bib_id = EXL.bib_id
84 LEFT JOIN BIB_TipoObra TOR ON ACE.tor_id = TOR.tor_id
85 WHERE MOV.epr_id = ( SELECT MAX(epr_id)
86 FROM BIB_MovimentacaoWorkFlow MWF2
87 WITH ( NOLOCK )
88 WHERE MWF.ace_id = MWF2.ace_id
89 AND MWF.exm_id = MWF2.exm_id
90 )
91 AND MWF.epw_id = ( SELECT MAX(epw_id)
92 FROM BIB_MovimentacaoWorkFlow MWF2
93 WITH ( NOLOCK )
94 WHERE MWF.ace_id = MWF2.ace_id
95 AND MWF.exm_id = MWF2.exm_id
96 AND MWF.epr_id = MWF2.epr_id
97 )
98 AND MWF.epw_acao = 1 --Reservado
99 AND ace_situacao <> 3
100 AND ( exm_tombo = @exm_tombo
101 OR @exm_tombo IS NULL
102 )
103 AND (
104 -- 1 : Começa por
105 ( @ace_tipoBusca = 1
106 AND ( @ace_titulo IS NULL
107 OR ace_titulo LIKE @ace_titulo
108 + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
109
110 )
111 )
112 OR
113
114 -- 2 : Contém
115 ( @ace_tipoBusca = 2
116 AND ( @ace_titulo IS NULL
117 OR ace_titulo LIKE '%'
118 + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
119
120 )
121 )
122 OR
123
124 -- 3 : Fonética
125 ( @ace_tipoBusca = 3
126 AND ( @ace_titulo IS NULL
127 OR dbo.SoundsLike(ace_titulo) LIKE '%'
128 + dbo.SoundsLike(@ace_titulo)
129 + '%'
130 )
131 )
132 )
133 AND ( @bib_id IS NULL
134 OR BIB.bib_id = @bib_id
135 )
136 AND ( @data IS NULL
137 OR CONVERT(DATE, MOV.epr_dataReserva) = @data
138 )
139 AND @lre_situacao = 2 --Reserva aprovada
140 GROUP BY MOV.ace_id ,
141 MOV.exm_id ,
142 ace_titulo ,
143 exm_tombo ,
144 bib_nome ,
145 tor_nome
146 ),
147 Total
148 AS ( SELECT ace_id ,
149 exm_id ,
150 ace_titulo ,
151 exm_tombo ,
152 bib_nome ,
153 ( qtd + ( SELECT COUNT(ace_id)
154 FROM AcervosReserva AR
155 WHERE AR.ace_id = LR.ace_id
156 AND AR.exm_id = LR.exm_id
157 ) ) AS qtd ,
158 tor_nome
159 FROM ListaReserva LR
160 UNION
161 SELECT ace_id ,
162 exm_id ,
163 ace_titulo ,
164 exm_tombo ,
165 bib_nome ,
166 ( SELECT COUNT(ace_id)
167 FROM AcervosReserva AR
168 WHERE AR.ace_id = AR2.ace_id
169 AND AR.exm_id = AR2.exm_id
170 ) qtd ,
171 tor_nome
172 FROM AcervosReserva AR2
173 )
174 SELECT ace_id ,
175 exm_id ,
176 ace_titulo ,
177 exm_tombo ,
178 bib_nome ,
179 MAX(qtd) AS qtd ,
180 tor_nome
181 FROM Total
182 GROUP BY ace_id ,
183 exm_id ,
184 ace_titulo ,
185 exm_tombo ,
186 bib_nome ,
187 tor_nome
Cenários de uso
Cenário de uso #1 - Login | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
1 - Acessar tela de login | 3 | ||||
1 - Realizar login | 7 | ||||
1 - Selecionar sistema Transporte Escolar | 5 |
Cenário de uso #2 - Cadastro de título (Fluxo 1) | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
2 - Acessar tela de consulta de título | 4 | ||||
2 - Clicar em "Incluir título" | 3 | ||||
2 - Preencher campo "Autor" | 4 | ||||
2 - Preencher campo "Grupo de assunto" | 3 | ||||
2 - Preencher campo "Assunto" | 3 | ||||
2 - Preencher campo "Gênero do assunto" | 3 | ||||
2 - Preencher campo "Editora" | 3 | ||||
2 - Marcar checkbox "Não possui ISBN" | 2 | ||||
2 - Salvar cadastro | 7 | ||||
2 - Acessar tela de consulta de exemplar | 4 | ||||
2 - Clicar em "Incluir exemplar" | 3 | ||||
2 - Pesquisar título | 6 | ||||
2 - Selecionar título | 4 | ||||
2 - Preencher campo "Qtde. de tombo" | 4 | ||||
2 - Salvar cadastro | 7 | ||||
2 - Logout | 5 |
Cenário de uso #3 - Cadastro de título (Fluxo 2) | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
3 - Acessar tela de consulta de título | 4 | ||||
3 - Clicar em "Incluir título" | 3 | ||||
3 - Preencher "Tipo" | 3 | ||||
3 - Preencher campo "Autor" | 4 | ||||
3 - Preencher campo "Grupo de assunto" | 3 | ||||
3 - Preencher campo "Assunto" | 3 | ||||
3 - Preencher campo "Gênero do assunto" | 3 | ||||
3 - Preencher campo "Editora" | 3 | ||||
3 - Marcar checkbox "Não possui ISBN" | 2 | ||||
3 - Salvar cadastro e gerar exemplar | 7 | ||||
3 - Preencher campo "Qtde. de tombo" | 4 | ||||
3 - Salvar cadastro | 7 | ||||
3 - Logout | 5 |
Cenário de uso #4 - Cadastro de exemplar | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
4 - Acessar tela de consulta de exemplares | 3 | ||||
4 - Clicar em "Incluir exemplares" | 3 | ||||
4 - Pesquisar título | 5 | ||||
4 - Selecionar título | 3 | ||||
4 - Preencher campo "Qtde. de tombos" | 4 | ||||
4 - Salvar cadastro | 7 | ||||
4 - Logout | 5 |
Cenário de uso #5 - Cadastro de memória documental | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
5 - Acessar tela de consulta de memória documental | 4 | ||||
5 - Clicar em "Incluir memória técnica documental" | 4 | ||||
5 - Preencher campo "Tipo de acervo" | 5 | ||||
5 - Preencher campo "Idioma" | 5 | ||||
5 - Preencher campo "Autor" | 5 | ||||
5 - Preencher campo "Tipo de anexo" | 5 | ||||
5 - Salvar cadastro | 7 | ||||
5 - Logout | 5 |
Cenário de uso #6 - Cadastro de leitor munícipe | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
6 - Acessar tela de consulta de leitor | 4 | ||||
6 - Clicar em "Incluir leitor" | 4 | ||||
6 - Preencher campo "Categoria de leitores" | 3 | ||||
6 - Preencher campo "CPF" | 10 | ||||
6 - Preencher campo "CEP" | 9 | ||||
6 - Salvar cadastro | 12 | ||||
6 - Logout | 5 |
Cenário de uso #7 - Realizar empréstimo | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
7 - Acessar tela de consulta de leitores | 4 | ||||
7 - Pesquisar leitor | 6 | ||||
7 - Selecionar leitor | 3 | ||||
7 - Preencher campo "Biblioteca" | 8 | ||||
7 - Clicar no ícone de pesquisa de título | 3 | ||||
7 - Pesquisar título | 15 | ||||
7 - Selecionar título | 4 | ||||
7 - Clicar em "Confirmar" | 3 | ||||
7 - Salvar movimentação | 10 | ||||
7 - Logout | 5 |
Cenário de uso #8 - Realizar devolução | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
8 - Acessar tela de consulta de devolução | 4 | ||||
8 - Pesquisar leitor | 8 | ||||
8 - Selecionar leitor | 4 | ||||
8 - Preencher campo "Biblioteca" | 8 | ||||
8 - Marcar checkbox "Selecionar todas as devoluções" | 3 | ||||
8 - Salvar movimentação | 10 | ||||
8 - Logout | 5 |
Cenário de uso #9 - Realizar renovação | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
9 - Acessar tela de renovação | 4 | ||||
9 - Pesquisar leitor | 8 | ||||
9 - Selecionar leitor | 5 | ||||
9 - Preencher campo "Biblioteca" | 8 | ||||
9 - Selecionar opção "Renovação" | 4 | ||||
9 - Salvar movimentação | 10 | ||||
9 - Logout | 5 |
Cenário de uso #10 - Realizar reserva | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
10 - Acessar tela de reserva | 4 | ||||
10 - Pesquisar leitor | 8 | ||||
10 - Selecionar leitor | 5 | ||||
10 - Preencher campo "Biblioteca" | 8 | ||||
10 - Clicar no ícone de pesquisa | 4 | ||||
10 - Pesquisar exemplar | 12 | ||||
10 - Selecionar exemplar | 5 | ||||
10 - Confirmar seleção | 3 | ||||
10 - Salvar reserva | 10 | ||||
10 - Logout | 5 |
Cenário de uso #11 - Consulta externa | |||||
---|---|---|---|---|---|
Ação realizada | Think Time (segundos) | ||||
11 - Acessar tela de consulta externa | 4 | ||||
11 - Pesquisar título | 10 | ||||
11 - Logout | 5 |
Resultado dos testes
Nesta seção serão apresentados os resultados obtidos da execução dos testes.
- Porcentagem de tempo do processador
- Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
- Limite recomendado: Abaixo de 75 %.
- Análise: A aplicação demonstrou desempenho esperado até atingir 550 usuários simultâneos, onde apenas o servidor WEB01 sofre um pico e os demais servidores não utilizam tanto processamento. Este comportamento esta relacionado a quantidade de erros gerados pela aplicação.
- Porcentagem de memória utilizada
- Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
- Limite recomendado: Abaixo de 75 %.
- Análise: Em dois momentos o WEB01 sofreu uma queda na utilização da memória. Os demais servidores mantiveram-se estáveis quanto a utilização de memória.
- Kbytes totais pela interface de rede
- Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
- Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
- Análise: Foi observado que quanto maior a quantidade de erros de dll salvas menor a quantidade de Kbytes enviados e recebidos.
- Tempo médio de resposta das requisições
- Descrição: Indica o tempo médio de resposta das requisições.
- Limite recomendado: 5 segundos.
- Análise: A partir de 300 usuários simultâneos até 400 usuários ocorre uma alta no tempo de resposta da aplicação, tendo um pico com 350 usuários simultâneos.
- Tempo de vazão
- Descrição: Indica a quantidade total de request por segundo.
- Limite recomendado: Quanto maior melhor.
- Análise: A aplicação teve apenas um desvio quando utilizada por 350 usuários.
- Porcentagem de erro
- Descrição: Indica a porcentagem de erro.
- Limite recomendado: Quanto menor melhor.
- Análise: A aplicação possui erros funcionais que não retornam mensagem na tela para o usuário, os mesmos são apenas salvos em logs de erros.