123
Guia para a valiação de problemas com p Este guia tem como objetivo orientar e direcionar reduzindo o tempo necessário para se chegar a solu Ele segue um metodo prático que lista as verificaç uma forma orientada. O guia consiste em uma sequencia de itens a serem questão proposta. Ele pode ser utilizado por qualquer profissional i serão solicitados no checklist. Este guia poderá sofrer modificações que posibilit Iniciar >>

Guia_Performance - SQL e Oracle.xls

  • Upload
    animeja

  • View
    187

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Guia_Performance - SQL e Oracle.xls

Guia para a valiação de problemas com performance nas aplicações RM

Este guia tem como objetivo orientar e direcionar nos procedimentos mais comums para avaliação de problemas de performance.reduzindo o tempo necessário para se chegar a solução do caso.

Ele segue um metodo prático que lista as verificações a serem observadas e tarefas a serem cumpridas na busca de soluções de uma forma orientada.

O guia consiste em uma sequencia de itens a serem avaliados que direcionam para um procedimento que possa resolver a questão proposta.

Ele pode ser utilizado por qualquer profissional independente do seu nível de conhecimento e que tenha acesso aos recursos necessários que serão solicitados no checklist.

Este guia poderá sofrer modificações que posibilitem a evolução da ferramente de analise, na medida que novos casos sejamidentificados.

Iniciar >>

Page 2: Guia_Performance - SQL e Oracle.xls

Guia para a valiação de problemas com performance nas aplicações RM

Este guia tem como objetivo orientar e direcionar nos procedimentos mais comums para avaliação de problemas de performance.

Ele segue um metodo prático que lista as verificações a serem observadas e tarefas a serem cumpridas na busca de soluções de

O guia consiste em uma sequencia de itens a serem avaliados que direcionam para um procedimento que possa resolver a

Ele pode ser utilizado por qualquer profissional independente do seu nível de conhecimento e que tenha acesso aos recursos necessários que

Este guia poderá sofrer modificações que posibilitem a evolução da ferramente de analise, na medida que novos casos sejamidentificados.

Page 3: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Passo Procedimento / Analise Descrição Questões

Arq

uit

etu

ra

1 O ambiente está em 3 camadas Está em 3 camadas?

Comentários

2

Comentários

3 Link de dados

Comentários

4 Virtualização O ambiente está virtualizado?

Comentários

Identificar se a arquitetura está definida de forma que o RM.Host esteja instalado em um servidor dedicado e as aplicações utilizem este servidor para acesso ao serviço Host.

SIM ( )

Atualização dos patchs da versão do produto e da Biblioteca RM

A evolução contínua dos produtos passa pela otimização e ajuste de rotinas, que é um processo natural e importante para obter os resultados esperados. Incluem-se nestes casos melhorias que benefiam a performance das aplicações.

Os patchs estão atualizados para a versão atual?

SIM ( )

O link entre o banco de dados e a camada front-end deve comportar o trafego gerado pelo acessos dos usuários concorrentes

A virtualização tem como objetivo ampliar a escabilidade do ambiente, mas pode gerar overhead no processamento dos dados.

SIM ( )

E15
Virtualização: A virtualização do ambiente é uma tendencia que vem sendo expandida rapidamente nas empresas. Há muitos benefícios que justificam a migração para esta arquitetura, mas existem também perdar que podem ocorrem, principalmente se a implementação não for cercade de muitos critérios que garatiriam minizar o overhead que pode chegar a até 15% em relação ao ambiente não virtualizado.
Page 4: Guia_Performance - SQL e Oracle.xls

Arq

uit

etu

ra5

Comentários

6 Possui Blocks?

Comentários

Po

rtal

7

Comentários

8 Compressão de páginas

Comentários

BA

NC

O D

E D

AD

OS

9 Existem triggers no banco de dados

Comentários

Especificação técnica para o ambiente de produção

Recomendações para a configuração dos ambientes que proveram acessos às aplicações e banco de dados de acordo com o perfil existente na empresa.

O ambiente está de acordo com as especificações técnicas para a linha RM?

Processo bloqueados no banco de dados

O procedimento sp_who serve para ter uma visão geral sobre as conexões existentes e verificar se existe alguma conexão bloqueada (Block). Coluna blk <>0.

SIM ( )

Utilizando cache para objetos estáticos

O browser tem a capacidade de manter objetos em cache para diminuir o tempo gasto com a transferencia destes objetos até o cliente. Isto permite um melhor desempenho no tempo de resposta das paginas.

O cache de páginas está habilitado pelo IIS

SIM ( )

Compressão de HTTP aumenta a velocidade de transmissão entre browsers com a compressão ativada no IIS. É possível comprimir apenas pastas estáticas ou arquivos estáticos e aplicações.

O IIS está configurado para permitir compressão de páginas?

SIM ( )

A existência de triggers na base de dados podem evidenciar overheads nos processamentos de tarefas do banco de dados que interferem na performance das aplicações

Há triggers fora do padrão? SIM ( )

Page 5: Guia_Performance - SQL e Oracle.xls

BA

NC

O D

E D

AD

OS

10

Comentários

11

Comentários

12

Comentários

13

Comentários

14

Atualização das estatísticas do banco de dados

As estatísticas coletadas pelo banco de dados propiciam um melhor desempenho para realizar pesquisas nas tabelas, através de um plano de execução mais eficiente.

A manutenção das estatísticas é realizada periodicamente?

SIM ( )

Opções "Auto create statistics" e "Auto update statistics"

As opções do database "Auto create statistics" e "Auto update statistics" podem levar a geração automática de um número grande de objetos de estatísticas, e o tempo necessário para sua atualização pelo banco de dados provavelmente implicará em perda de performance.

Os parãmetros "Auto create statistics" e "Auto update statistics" forma desabilitados na base de dados?

SIM ( )

Limpeza de objetos temporários na base de dados

A limpeza periódica de registro de log e arquivo morto podem beneficiar bastante a execução de consultas e manipulação de dados nestas tabelas .

Os procedimentos de limpeza são executados na base de dados?

SIM ( )

Monitoramento do log do banco de dados

Problemas com a performance podem ter origem em eventos que são registrados no log do banco de dados, como por exemplo falhas na leitura de páginas do banco, deadlocks, etc.

O log do banco de dados apresenta erros que podem influenciar na performance?SIM ( )

Reindexação da tabelas periodicamente

Reindexação períodica das tabelas é sumariamente necessário o bom desempenho das aplicações, uma vez que este procedimento desfragmenta os indices das tabelas, proporcionando uma maior eficácia no processo de pesquisa no indice.

A rotina de manutenção que reindexa os indices é frequentemente executada?

SIM ( )

Page 6: Guia_Performance - SQL e Oracle.xls

BA

NC

O D

E D

AD

OS

15

Comentários

16

Comentários

17

Comentários

18 Paralelismo

Comentários

ER

P

19 SIM ( )

Analisar as principais sentenças executadas no banco de dados

A avaliação das sentenças que mais consomem recursos no banco de dados pode minimizar em muito o tempo de analise até a conclusão do problema.

Há gargalo de processamento nas queries?SIM ( )

Monitorar com o Profiler o processamento

Problemas com a performance nas aplicações podem ser visualizados através a avaliação de um tracer gerado no banco de dados.

O processamento no banco de dados está "normal"?

Consultas SQL sem o hint (NOLOCK)

A utilização de sentenças SQL que não fazer uso do hint (NOLOCK) podem provocar a contenção desta sentença por bloqueios de usuário no banco de dados.

Limita o número de processadores (até o máximo de 64) a serem usados na execução do plano paralelo. O valor padrão 0 usa todos os processadores disponíveis. Um valor de 1 suprime geração de planos paralelos. Um número maior do que 1 restringe o número máximo de processadores usados por uma única execução de consulta. Se um valor maior que o número de processadores disponíveis for especificado, o número real de processadores disponíveis será usado.

Há custo excessivo para o processamento de queries em paralelismo?

SIM ( )

Antivirus monitorando a pasta das aplicações

Algumas rotinas nas aplicações utilizam-se de recursos temporários gravados em disco que são frequentemente recriados, gerando um número muito grande de acessos ao disco, e o monitoramento por um antivirus durante esta tarefa gera atrasos no processamento da aplicação.

O antivirus está monitornado a pasta das aplicações?

E41
Consultas sem (NOLOCK): Relatório, planilha, formula que utilizam consultas SQL sem o (NOLOCK) tem grande possibilidade de sofrerem contenção por processos de outros usuários que bloqueiam páginas da tabela. A instrução NOLOCK, permite que um select seja executado em uma tabela, mostrando os dados ainda não comitados no servidor. Ou seja, caso alguma transação se encontre pendente de COMMIT no SQL SERVER em alguma tabela, a instrução NOLOCK mostrará os dados ainda não comitados da referida tabela..
E43
O SQL Server detecta automaticamente o melhor grau de paralelismo para cada instância de uma execução de consulta paralela ou operação DDL (linguagem de definição de dados) do índice. Isso é feito baseado nos seguintes critérios: 1.Se o SQL Server estiver sendo executado em um computador que tenha mais de um microprocessador ou mais de uma CPU, como um computador SMP (multiprocessamento simétrico). Apenas computadores que têm mais de uma CPU podem usar consultas paralelas. 2.Se houver threads suficientes disponíveis. Cada operação de consulta ou índice exige um determinado número de threads para execução. A execução de um plano paralelo exige mais threads que um plano consecutivo, e o número de threads exigidos aumenta com o grau de paralelismo. Quando o requisito de thread do plano paralelo de um grau específico de paralelismo não puder ser atendido, o Mecanismo de Banco de Dados diminuirá automaticamente o grau de paralelismo ou abandonará completamente o plano paralelo no contexto de carga de trabalho especificado. Depois, ele executará o plano consecutivo (um thread). 3.O tipo de operação de consulta ou de índice executada. As operações de índice que criam ou reconstroem um índice, ou descartam um índice cluster e as consultas que usam ciclos de CPU freqüentemente são as melhores opções para um plano paralelo. Por exemplo, junções de tabelas grandes, agregações grandes e classificação de conjuntos de resultados grandes são boas alternativas. As consultas simples, freqüentemente encontradas em aplicativos de processamento de transações, localizam a coordenação adicional exigida para executar uma consulta em paralelo que supera o aumento de desempenho potencial. Para distinguir as consultas que se beneficiam de paralelismo das que não se beneficiam, o Mecanismo de Banco de Dados compara o custo estimado da execução da operação de consulta ou índice com o valor cost threshold for parallelism. Embora não recomendado, os usuários podem alterar o valor padrão, 5 usando sp_configure. 4.Se houver um número suficiente de linhas para processar. Se o otimizador de consulta determinar que o número de linhas é muito baixo, não apresentará os operadores de troca para distribuir as linhas. Por conseguinte, os operadores serão executados em série. A execução dos operadores em um plano consecutivo evita cenários quando os custos de inicialização, distribuição e coordenação excedem os ganhos alcançados pela execução de operador paralela. 5.Se as estatísticas de distribuição atuais estiverem disponíveis. Se o grau mais alto de paralelismo não for possível, os graus inferiores serão considerados antes de o plano paralelo ser abandonado. Por exemplo, quando você criar um índice cluster em uma exibição, não poderão ser avaliadas estatísticas de distribuição, porque o índice cluster ainda não existirá. Nesse caso, o Mecanismo de Banco de Dados não poderá fornecer o grau mais alto de paralelismo para a operação de índice. Porém, alguns operadores, como de classificação e verificação, ainda poderão se beneficiar da execução paralela.
Page 7: Guia_Performance - SQL e Oracle.xls

ER

P

Comentários

20 BDE

Comentários

21 Filtros das visões

Comentários

22

Comentários

23 Utilização do TSS

Comentários

O BDE pode ser otimizado para beneficiar algumas rotinas da aplicação, mas uma vez que isto seja feito sem algum critério poderá incorrer na perda de performance para alocação e gerenciamento dos recursos de memória e CPU.

O BDE teve seus parâmetos alterados nos clients?

SIM ( )

As aplicações utilizam-se de filtros nas visões como forma de restringir os dados a serem exibidos para o usuário. Por padrão, este filtro faz trazem os critérios de filtragem por codigo da coligada e da filial, na maioria dos casos.

Os filtros das visões restringem apenas a uma quantidade ?

SIM ( )

Log de Auditoria ativado na base de dados

A utilização do log de auditoria permite o monitoramento das alterações realzadas na base de dados, com a finalidade de garantir o controle sobre dados importantes para o empresa.

O log de auditoria está habilitado na base de dados?SIM ( )

O TSS da TOTVS permite a comunicação entre o ERP e SEFAZ do contribuinte. Este serviço, se configurado para utilizar a mesma base do ERP, provocará concorrência com os processo dos aplicativos.

O TSS está configurado para utilizar a mesma base das aplicações RM?SIM ( )

Page 8: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Questões

NÃO ( )

NÃO ( )

Page 9: Guia_Performance - SQL e Oracle.xls

NÃO ( )

NÃO ( )

NÃO ( )

NÃO ( )

Page 10: Guia_Performance - SQL e Oracle.xls

NÃO ( )

NÃO ( )

NÃO ( )

NÃO ( )

NÃO ( )

Page 11: Guia_Performance - SQL e Oracle.xls

NÃO ( )

NÃO ( )

Page 12: Guia_Performance - SQL e Oracle.xls

NÃO ( )

Page 13: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Passo Procedimento Descrição Status

1 sp_who active

2

4 SELECT * FROM MASTER..SYSPROCESSES

5 Serve para verificar o comando que está sendo executado

5.1

6 Kill <spid>

6.1Se ficar em status de killed/rollback por muito tempo

6.2 alter database <banco de dados> set multi_user

7 xp_readerrorlog

8

Voltar

Voltar

Serve para ter uma visão geral sobre as conexões ativas e verificar se existe alguma conexão bloqueada

SIM ( X )

sp_usrheadblocker

Serve para identificar a conexão que está bloqueando e as conexões que estão bloqueadas. A conexão causadora do bloqueio vem sempre na primeira linha e a coluna RunAs, mostra a quanto tempo (minuto) a conexão está em execução.

Serve para verificar o status da conexão (waittype) de acordo com a tabela padrão da Microsoft

Visualizar Tabela

dbcc inputbuffer (<spid>)

sp_usrinputbuffer <spid>Se for um processo que ainda esteja ativo, identifica o ponto exato onde o bloqueio está sendo realizado

Após permissão do responsável pelo processo, derrubar a conexão que está bloqueando as demais. Se ficar em Killed/Rollback por muito tempo, seguir os passo 6.1 e 6.2

alter database <banco de dados> set restricted_user with rollback immediate

Verique o Error Log do SQL na busca de erros. Se for encontrado algum erro, pesquisar no Books On Line, Premier, TechNet, etc

Verique o Error Log do SQL na busca de erros. Se for encontrado algum erro, pesquisar no Books On Line, Premier, TechNet, etc

Page 14: Guia_Performance - SQL e Oracle.xls
Page 15: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Status

NÃO ( )

Visualizar Tabela

E15
Clique aqui para visualizar a tabela
Page 16: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Passo Procedimento Descrição Status

1 sp_who active

2

3 Verifique a situação do servidor Analizar os contadores do Performance Monitor.

Voltar

Serve para ter uma visão geral sobre as conexões ativas e verificar se existe alguma conexão bloqueada.

SIM ( )

xp_readerrorlogVerique o Error Log do SQL na busca de erros. Se for encontrado algum erro, pesquisar no Books On Line, Premier, TechNet, etc

Contadores Padrão

Page 17: Guia_Performance - SQL e Oracle.xls

Guia para analise de performance

Status

NÃO ( X )

Contadores Padrão

Page 18: Guia_Performance - SQL e Oracle.xls

Tabelas extraida do Books On Line SQL Server 2000

Voltar

Page 19: Guia_Performance - SQL e Oracle.xls
Page 20: Guia_Performance - SQL e Oracle.xls

Descrição dos Contadores

Memória:Contador Descrição

Mamory: Pages/Sec

SQL Server:Contador Descrição

SQL Server:Access Methods:Page Splits/sec

CPU:Contador Descrição

Processor:% Processor Time:_Total

Process: % Processor time: sqlservr

System: Processor Queue Length

DISK I/O:Contador Descrição

PhysicalDisk: % idle Time

<<Voltar

Memory: Available Bytes Indica a quantidade de memória disponível

Indica se está havendo paginação. Em perfeitas condições deve-se ver pouca atividade neste contador.

SQL Server: Buffer Manager: Buffer Cache Hit Ratio

Indica o percentual de requisições a dados que são obtidas no próprio cache do sql e portanto, sem precisar acessar o disco. O ideal é estar maior que 90%

Mostra quantos page splits estão ocorrendo no servidor. Este valor deve ser o mais baixo possível. Se o valor estiver alto, configurar os índices com um fillfactor apropriado pode ajudar a reduzir este valor.

SQL Server: Memory Manager: Total Server Memory (KB)

Quando maior que a quantidade de memória física pode indicar falta de memória.

Indica o consumo de CPU no servidor (ideal abaixo de 80%).

Indica o consumo do processador pelo processo do SQL Server

Indica o número de threads aguardando para execução no processador e nunca deve exceder 1 ou 2 (por processador) por um período superior a 10 minutos.

Indica o percentual de tempo que o disco esta ocioso. Supostamente este contador apresenta uma estimativa mais precisa sobre a utilização dos discos. Subtraindo o valor encontrado de 100, temos uma ideia do quanto o disco esta trabalhando.

B5
Clique aqui para voltar à tela anterior
Page 21: Guia_Performance - SQL e Oracle.xls

PhysicalDisk: % Disk Time

PhysicalDisk: Avg. Disk Sec/Transfer

Banco de Dados:Contador Descrição

SQL Server: Access Methods: Full Scans/sec

Mostra o quanto o disco esta ocupado.Se valor > 60% durante 10 minutos, verificar os contadores PhysicalDisk: % Disk Read Time e PhysicalDisk: % Disk Write Time para verificar se é leitura ou escrita quem está causando maior utilização.

PhysicalDisk: Avg. Disk Queue Length

Mostra o número médio de requisições de I/O aguardando para acesso ao disco.Este contador nunca deve exceder 2 (por disco) por um extenso período de tempo.

Taxa de transferência em bytes de ou para um disco durante operações de leitura ou escrita:

·        Cache < 5Ms·        Excelente < 15Ms·        Bom < 30Ms·        Regular < 60Ms·        Ruim < 90Ms

Mostra a quantidade de Table Scan sendo executada no SQL Server. Este valor deve ser o mais baixo possível e se for constantemente alto, use o Profile para identificar quais queries estão causando os scans.

SQL Server: Locks: Average Wait Time (ms)

Este contador mostra quanto tempo em milessegundos um processo esta aguardando para obter lock no SQL Server. O valor ideal para este contador é zero. Se este valor estiver muito alto, utilize o Profile para identificar quais processos estão mantendo locks por um período longo de tempo.

Page 22: Guia_Performance - SQL e Oracle.xls

Descrição dos Contadores

Memória:Descrição Observação

SQL Server:Descrição Observação

CPU:Descrição Observação

DISK I/O:Descrição Observação

Indica a quantidade de memória disponível

Indica se está havendo paginação. Em perfeitas condições deve-se ver pouca atividade neste contador.

Indica o percentual de requisições a dados que são obtidas no próprio cache do sql e portanto, sem precisar acessar o disco. O ideal é estar maior que 90%

Mostra quantos page splits estão ocorrendo no servidor. Este valor deve ser o mais baixo possível. Se o valor estiver alto, configurar os índices com um fillfactor apropriado pode ajudar a reduzir este valor.

Quando maior que a quantidade de memória física pode indicar falta de memória.

Indica o consumo de CPU no servidor (ideal abaixo de 80%).

Indica o consumo do processador pelo processo do SQL Server

Indica o número de threads aguardando para execução no processador e nunca deve exceder 1 ou 2 (por processador) por um período superior a 10 minutos.

Indica o percentual de tempo que o disco esta ocioso. Supostamente este contador apresenta uma estimativa mais precisa sobre a utilização dos discos. Subtraindo o valor encontrado de 100, temos uma ideia do quanto o disco esta trabalhando.

E12
Se o SQL esta rodando em um servidor dedicado, toda a sua memória alocada (aquela configurada nas propriedades do servidor dentro do Management Studio) será mapeada para a memória física e muito pouco swapping (paginação) deverá ocorrer. Se este contador estiver muito alto ou crescente, verifique a memória alocada para o SQL Server e aumentar este valor ou colocar o SQL Server para configurar sua memória dinamicamene pode ajudar a reduzir a paginação.
E16
Você pode aumentar este valor por dar mais memória para o SQL Server trabalhar.
E22
Se encontar uma utilização contanste - entre 10 e 15 minutos - excedendo 75 a 80%, existe então um problema de utilização de processador.
Page 23: Guia_Performance - SQL e Oracle.xls

Descrição Observação

Mostra o quanto o disco esta ocupado.Se valor > 60% durante 10 minutos, verificar os contadores PhysicalDisk: % Disk Read Time e PhysicalDisk: % Disk Write Time para verificar se é leitura ou escrita quem está causando maior utilização.

Mostra o número médio de requisições de I/O aguardando para acesso ao disco.Este contador nunca deve exceder 2 (por disco) por um extenso período de tempo.

Taxa de transferência em bytes de ou para um disco durante operações de leitura ou escrita:

Cache < 5MsExcelente < 15MsBom < 30MsRegular < 60MsRuim < 90Ms

Mostra a quantidade de Table Scan sendo executada no SQL Server. Este valor deve ser o mais baixo possível e se for constantemente alto, use o Profile para identificar quais queries estão causando os scans.

Este contador mostra quanto tempo em milessegundos um processo esta aguardando para obter lock no SQL Server. O valor ideal para este contador é zero. Se este valor estiver muito alto, utilize o Profile para identificar quais processos estão mantendo locks por um período longo de tempo.

E30
Exemplo: Se você possui um array com 8 discos, um tamanho de fila de 16 ainda é aceitável e é possível ver pico de 20 ou mais. Porém, isto somente se aplica a discos que o Windowa vê como fisicamente separados, assim como RAID por software. Arrays baseado em hardware normalmente aparecem como um único disco físico para o Windows, assim você deve ter um tamanho de fila de 2 ou menos.
E41
Você pode utilizar diferentes instâncias do contador para monitorar: extend locks, key locks, page locks, database locks e table locks.
Page 24: Guia_Performance - SQL e Oracle.xls

Configuração do ambiente em 3 camadas

IntroduçãoO objetivo deste documento é trazer uma breve visão do que é e como funciona a Arquitetura 3 Camadas .Net.

O que é a Arquitetura 3 camadas?Anteriormente, na Arquitetura Cliente-Servidor, a camada cliente acessava diretamente a camada de Banco de Dados, além de todos os processos serem executados no cliente, tais como: abertura de formulários, acesso a dados, regras de validação, cálculos e relatórios.A figura abaixo mostra como é a arquitetura Cliente-Servidor.

Na Arquitetura 3 camadas, apesar da complexidade do ambiente a divisão das tarefas em camadas possibilita maior distribuição do processamento do sistema. Na camada cliente temos apenas os formulários que serão abertos na execução do programa. A camada Servidor de Aplicação fica por conta da execução da Regra de Negócio, Cálculos, processos, Relatórios além de fazer a comunicação com a Camada de Banco de Dados.As figuras abaixo exemplificam esta Arquitetura.

Como mostrado nas figuras, a Camada Servidor de Aplicação pode ser distribuída em processos específicos. Você pode distribuir cada serviço em um servidor de aplicação. Por exemplo: um servidor de aplicação executa todas as rotinas de cálculos e outro servidor, todas as execuções de relatórios.

Quais são as vantagens da Arquitetura 3 camadas?

Voltar

Page 25: Guia_Performance - SQL e Oracle.xls

• Permite maior escalabilidade• Permite reaproveitamento de regras de negócio e cálculo• Permite execução de mais de uma versão da Linha RM• Permite utilização mais racional de hardware• Permite balanceamento de carga• Permite montagem de ambientes com reforço de contingência• Diminuição da sobre-carga no cliente.

Como configurar um ambiente 3 camadas na Linha RM?

A TOTVS não distribuirá um instalador específico para o ambiente 3 Camadas da Linha RM, porém é extremamente simples configurá-lo. Por padrão o ambiente da RM não é instalado em 3 Camadas.Para que o Ambiente 3 Camadas possa funcionar no Sistema RM, a camada cliente deve ter um arquivo de configuração que aponta para o servidor de aplicação, que por sua vez possui um outro arquivo de configuração para receber as solicitações do cliente.

Basicamente, os arquivos de configuração, tanto do cliente como do Servidor de Aplicação, devem trabalhar na mesma porta TCP para a mesma versão.A porta TCP é o que define a comunicação de uma determinada versão entre Cliente e Servidor de Aplicação. Conforme figura abaixo, é possível funcionar mais de uma versão, tanto no Cliente como no Servidor de Aplicação

Veja os exemplos desses arquivos de configurações do cliente e do Servidor de Aplicação respectivamente.

RMLabore.exe.config… <appSettings> <add key="Port" value="8050"/> <add key="UseExternalHost" value="true"/> <add key="SelfHosted" value="false"/> <add key="Host" value=“APPSERVER"/>…

RM.Host.Service.exe.config… <appSettings> <add key="Port" value="8050"/> <add key="ActionsPath" value="C:\CorporeRM\RM.NET" /> </appSettings> <system.runtime.remoting> <customErrors mode="off"/>…

Para configurar a Arquitetura 3 Camadas da Linha RM, é necessário realizar os seguintes passos: Instalar a BibliotecaRM no Servidor de Aplicação Instalar a BibliotecaRM em cada Cliente Instalar os Produtos da RM em cada Cliente

Page 26: Guia_Performance - SQL e Oracle.xls

Executar o programa RM.Host.NetConfig.exe, localizado em ...\CorporeRM\RM.Net, e clicar no botão “3Camadas”.Para o último passo, deve-se confirmar o nome do Servidor de Aplicação bem como a porta TCP. Por padrão, o arquivo de configuração do Servidor de Aplicação referencia a porta 8050, conforme figura abaixo.

Considerações

No ambiente configurado para 3 camadas o processamento das requisições ao banco de dados é centralizado na máquina que provê o acesso ao serviço RM.Host.Services. Pensando assim,Podemos prever que com o aumento de acesso esta máquina terá seu capacidade testada, e pode ser necessário redimensiona-la para atender a demanda.

Voltar

Page 27: Guia_Performance - SQL e Oracle.xls

O objetivo deste documento é trazer uma breve visão do que é e como funciona a Arquitetura 3 Camadas .Net.

Anteriormente, na Arquitetura Cliente-Servidor, a camada cliente acessava diretamente a camada de Banco de Dados, além de todos os processos serem executados no cliente, tais como: abertura de formulários, acesso a dados, regras de validação, cálculos e relatórios.

Na Arquitetura 3 camadas, apesar da complexidade do ambiente a divisão das tarefas em camadas possibilita maior distribuição do processamento do sistema. Na camada cliente temos apenas os formulários que serão abertos na execução do programa. A camada Servidor de Aplicação fica por conta da execução da Regra de Negócio, Cálculos, processos, Relatórios além de fazer a comunicação com a Camada de Banco de Dados.

Como mostrado nas figuras, a Camada Servidor de Aplicação pode ser distribuída em processos específicos. Você pode distribuir cada serviço em um servidor de aplicação. Por exemplo: um servidor de aplicação executa todas as rotinas de cálculos e outro servidor, todas as execuções de relatórios.

Page 28: Guia_Performance - SQL e Oracle.xls

A TOTVS não distribuirá um instalador específico para o ambiente 3 Camadas da Linha RM, porém é extremamente simples configurá-lo. Por padrão o ambiente da RM não é instalado em 3 Camadas.Para que o Ambiente 3 Camadas possa funcionar no Sistema RM, a camada cliente deve ter um arquivo de configuração que aponta para o servidor de aplicação, que por sua vez possui um outro arquivo de configuração para receber as solicitações do cliente.

Basicamente, os arquivos de configuração, tanto do cliente como do Servidor de Aplicação, devem trabalhar na mesma porta TCP para a mesma versão.A porta TCP é o que define a comunicação de uma determinada versão entre Cliente e Servidor de Aplicação. Conforme figura abaixo, é possível funcionar mais de uma versão, tanto no Cliente como no Servidor de Aplicação

Veja os exemplos desses arquivos de configurações do cliente e do Servidor de Aplicação respectivamente.

… <appSettings> <add key="Port" value="8050"/> <add key="UseExternalHost" value="true"/> <add key="SelfHosted" value="false"/> <add key="Host" value=“APPSERVER"/>…

… <appSettings> <add key="Port" value="8050"/> <add key="ActionsPath" value="C:\CorporeRM\RM.NET" /> </appSettings> <system.runtime.remoting> <customErrors mode="off"/>…

Para configurar a Arquitetura 3 Camadas da Linha RM, é necessário realizar os seguintes passos:

Page 29: Guia_Performance - SQL e Oracle.xls

Executar o programa RM.Host.NetConfig.exe, localizado em ...\CorporeRM\RM.Net, e clicar no botão “3Camadas”.Para o último passo, deve-se confirmar o nome do Servidor de Aplicação bem como a porta TCP. Por padrão, o arquivo de configuração do Servidor de Aplicação referencia a porta 8050, conforme figura abaixo.

No ambiente configurado para 3 camadas o processamento das requisições ao banco de dados é centralizado na máquina que provê o acesso ao serviço RM.Host.Services. Pensando assim,Podemos prever que com o aumento de acesso esta máquina terá seu capacidade testada, e pode ser necessário redimensiona-la para atender a demanda.

Page 30: Guia_Performance - SQL e Oracle.xls

Anteriormente, na Arquitetura Cliente-Servidor, a camada cliente acessava diretamente a camada de Banco de Dados, além de todos os processos serem executados no cliente, tais como: abertura de formulários, acesso a dados, regras de validação, cálculos e relatórios.

Na Arquitetura 3 camadas, apesar da complexidade do ambiente a divisão das tarefas em camadas possibilita maior distribuição do processamento do sistema. Na camada cliente temos apenas os formulários que serão abertos na execução do programa. A camada Servidor de Aplicação fica por conta da execução da Regra de Negócio, Cálculos, processos, Relatórios além de fazer a comunicação com a Camada de Banco de Dados.

Como mostrado nas figuras, a Camada Servidor de Aplicação pode ser distribuída em processos específicos. Você pode distribuir cada serviço em um servidor de aplicação. Por exemplo: um servidor de aplicação executa todas as rotinas de cálculos e outro servidor, todas as execuções de relatórios.

Page 31: Guia_Performance - SQL e Oracle.xls

Para que o Ambiente 3 Camadas possa funcionar no Sistema RM, a camada cliente deve ter um arquivo de configuração que aponta para o servidor de aplicação, que por sua vez possui um outro arquivo de configuração para receber as solicitações do cliente.

A porta TCP é o que define a comunicação de uma determinada versão entre Cliente e Servidor de Aplicação. Conforme figura abaixo, é possível funcionar mais de uma versão, tanto no Cliente como no Servidor de Aplicação

Page 32: Guia_Performance - SQL e Oracle.xls

Para o último passo, deve-se confirmar o nome do Servidor de Aplicação bem como a porta TCP. Por padrão, o arquivo de configuração do Servidor de Aplicação referencia a porta 8050, conforme figura abaixo.

Page 33: Guia_Performance - SQL e Oracle.xls

Na Arquitetura 3 camadas, apesar da complexidade do ambiente a divisão das tarefas em camadas possibilita maior distribuição do processamento do sistema. Na camada cliente temos apenas os formulários que serão abertos na execução do programa. A camada Servidor de Aplicação fica por conta da execução da Regra de Negócio, Cálculos, processos, Relatórios além de fazer a comunicação com a Camada de Banco de Dados.

Page 34: Guia_Performance - SQL e Oracle.xls

Na Arquitetura 3 camadas, apesar da complexidade do ambiente a divisão das tarefas em camadas possibilita maior distribuição do processamento do sistema. Na camada cliente temos apenas os formulários que serão abertos na execução do programa. A camada Servidor de Aplicação fica por conta da execução da Regra de Negócio, Cálculos, processos, Relatórios além de fazer a comunicação com a Camada de Banco de Dados.

Page 35: Guia_Performance - SQL e Oracle.xls

Script: sp_usrinputbuffer

ela identifica o ponto exato de execução de um statement. A conexão deve estar em RUNNABLE.

USE MASTERGO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_usrinputbuffer]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_usrinputbuffer]GOCREATE PROCEDURE dbo.sp_usrinputbuffer(

@SPID smallint,@WAIT tiny-- Intervalo de repetição entre as verificações.Valor deve estar entre 0 e 60 segundos

-- Default é de 1 em 1 segundo@NoLoop bit = 1 -- Se =1, o SPID é analizado apenas uma vez. Se =0 fica em loop até o final do processo.

)ASBEGIN

SET NOCOUNT ON

DECLARE @sql_handle binary(20), @handle_found bitDECLARE @stmt_start int, @stmt_end intDECLARE @line varchar(8000), @wait_str varchar(8)

SET @handle_found = 0

IF @WAIT NOT BETWEEN 0 AND 60BEGIN

RAISERROR('Valores válidos para @WAIT estão entre 0 e 60 segundos', 16, 1)RETURN -1

ENDELSEBEGIN

SET @wait_str = '00:00:' + RIGHT('00' + CAST(@WAIT AS varchar(2)), 2)END

WHILE 1 = 1BEGIN

SELECT @sql_handle = sql_handle,@stmt_start = stmt_start/2,@stmt_end = CASE WHEN stmt_end = -1 THEN -1 ELSE stmt_end/2 ENDFROM master.dbo.sysprocessesWHERE spid = @SPID

<< Voltar

Descrição: Este script cria uma procedure que auxilia durante a monitoração de conexões bloqueadas. Diferente do DBCC INPUTBUFFER, dado um SPID,

Page 36: Guia_Performance - SQL e Oracle.xls

AND ecid = 0

IF @sql_handle = 0x0BEGIN

IF @handle_found = 0BEGIN

RAISERROR('Não pode encontrar o handle ou o SPID é inválido', 16, 1)RETURN -1

ENDELSEBEGIN

RAISERROR('Query/Stored procedure completada', 0, 1)RETURN 0

ENDENDELSEBEGIN

SET @handle_found = 1END

Print '******** STATEMENT SENDO EXECUTADO NO MOMENTO ************'Print ''SET @line = (

SELECT SUBSTRINtext,

COALESCE(NULLIF(@stmt_start, 0), 1),CASE @stmt_end

WHEN -1 THEN DATALENGTH(text)

ELSE (@stmt_end - @stmt_start)

END)

FROM ::fn_get_sql(@sql_handle) )

Print @line

IF @NoLoop = 1BEGIN

RETURN 0END

WAITFOR DELAY @wait_str

END

ENDGO

Script: sp_usrheadblocker

A primeira linha sempre será a ponta (a conexão que está causando o bloqueio de todas as outras) e as demais linhas, as que estão aguardando a liberação do recurso. Também é possível ver a instrução que cada conexão está executando. Ideal para ser executada junto com a sp_usrinpubuffer durante problemas de performance.

Voltar

Descrição: Esta procedure permite a você identificar se existe alguma conexão bloqueada no servidor e qual é a conexão causadora do bloqueio.

Page 37: Guia_Performance - SQL e Oracle.xls

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_usrheadblocker]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_usrheadblocker]GOCreate Proc dbo.sp_usrheadblockerasSet NoCount on

#NAME?CREATE TABLE #tbheadBlocked (

[Host_Id] [int] NULL ,[SPID] [int] NULL ,[a] [varchar] (14) NULL ,[b] [int] NULL ,[TextBuffer] [varchar] (255) NULL

)

Create Table #tbInputBuffer(a VarChar(14),b int,TextBuffer VarChar(255))

-- Passo1 -- Insere na tabela temporária "#tbheadblocked" todos os SPID que estão bloqueadosInsert Into #tbheadBlocked Select Host_id(),SPID,null,null,nullfrom master..sysprocesses (NoLock)Where SPID in (Select Blocked from master..sysprocesses (NoLock)Where Blocked <>0)or Blocked <> 0

-- Passo 2 -- Abre um cursor para obter o DBCC InputBuffer de todas os SPID que foram inseridas-- na tabela do passo 1 e armazena em uma nova tabela temporária "#tbInputBuffer"

Declare @SPID IntDeclare C_Buffer CURSOR For Select SPID from #tbheadBlocked Open C_BufferFetch C_Buffer Into @SPIDWhile @@Fetch_Status = 0 Begin

Insert Into #tbInputBuffer exec ('Dbcc InputBuffer(' + @SPID + ') with NO_INFOMSGS ')Update #tbheadBlocked Set TextBuffer = #tbInputBuffer.TextBuffer from #tbInputBuffer Where Spid = @spidFetch C_Buffer Into @SPID

EndClose C_BufferDeallocate C_Buffer

-- Passo 3 -- Faz o Join das tabelas temporárias apresentando o resultado final.#NAME?

select disti a.SPID, a.Blocked,a.ECID,a.WaitTime as WaitTimeMS,

datediff (mi,a.last_batch,getDate() ) as RunAs, --Tempo de execução em minutosSubString(a.Status,1,10) as Status,a.CPU,SubString(Cast(a.Physical_IO as Varchar(10)),1,10) as Physical_IO,SubString(a.HostName,1,15) as HostName,SubString(a.LogiName,1,15) as LoginName,

Page 38: Guia_Performance - SQL e Oracle.xls

SubString(DB_Name(a.dbid),1,13) as DBName,SubString(convert(VarChar(24),a.last_batch ,113),1,24) as Last_Batch,a.open_tran,a.MemUsage,b.TextBuffer

from master..sysprocesses a (NoLock) Right Outer Join #tbheadBlocked b (NoLock)On a.Spid = b.spid

Where a.SPID in (Select c.Blocked from master..sysprocesses c (NoLock)Where Blocked <>0)or a.Blocked <> 0

Order By a.Blocked

Sentença para verificação da existencia de triggers na base de dadosDescrição: Lista as trigges que não estão relacionadas com o padrão da linha RM

SQL Server:SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' WHERE NAME NOT LIKE 'Log%';GO

Oracle:SELECT TRIGGER_NAME FROM USER_TRIGGERS WHERE TRIGGER_NAME NOT LIKE 'Log%';

Script: Reindexação da base de dados

/* SQL Server*/

SET NOCOUNT ON;DECLARE @objectid int;DECLARE @indexid int;DECLARE @partitioncount bigint;DECLARE @schemaname nvarchar(130); DECLARE @objectname nvarchar(130); DECLARE @indexname nvarchar(130); DECLARE @partitionnum bigint;DECLARE @partitions bigint;DECLARE @frag float;DECLARE @command nvarchar(4000);

DECLARE partitions CURSOR FOR

SELECT object_id AS objectid, index_id AS indexid, partition_number AS partitionnum,avg_fragmentation_in_percent AS fragFROM sys.dm_db_index_physical_stats (5, NULL, NULL , NULL, 'LIMITED') s,sys.sysobjects oWHERE s.object_id = o.id and o.xtype = 'U' and s.avg_fragmentation_in_percent > 10.0 AND s.index_id > 0

OPEN partitions;

WHILE (1=1) BEGIN; FETCH NEXT FROM partitions INTO @objectid, @indexid, @partitionnum, @frag; IF @@FETCH_STATUS < 0 BREAK;

Page 39: Guia_Performance - SQL e Oracle.xls

SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name) FROM sys.objects AS o JOIN sys.schemas as s ON s.schema_id = o.schema_id WHERE o.object_id = @objectid; SELECT @indexname = QUOTENAME(name) FROM sys.indexes WHERE object_id = @objectid AND index_id = @indexid; SELECT @partitioncount = count (*) FROM sys.partitions WHERE object_id = @objectid AND index_id = @indexid;

IF @frag < 30.0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE'; IF @frag >= 30.0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD'; IF @partitioncount > 1 SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10)); EXEC (@command); PRINT N'Executado: ' + @command; END;CLOSE partitions;DEALLOCATE partitions;

/* Oracle */

CREATE OR REPLACE PROCEDURE REINDEXDBIS

V_COLUNA VARCHAR2 (100); LINHA INTEGER; CID INTEGER ; CURSOR TAB IS

SELECT INDEX_NAME FROM dba_indexes WHERE tablespace_name<>'RM_INDICES' AND OWNER='RM'ORDER BY TABLE_NAME;

BEGINOPEN TAB; FETCH TAB INTO V_COLUNA; LOOP EXIT WHEN TAB%NOTFOUND; cid := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cid, 'ALTER INDEX ' || V_COLUNA ||' rebuild tablespace RM_INDICES ' , dbms_sql.v7); FETCH TAB INTO V_COLUNA; DBMS_SQL.CLOSE_CURSOR(cid); end loop; CLOSE TAB; END;

END /

Passos para encontrar as querys mais demoradas no Banco de Dados Descrição: Lista de procedimentos que geram um trace em arquivo onde são armazenadas as principais sentenças que consomem recursos no banco de dados

USE MSDB

Voltar

Page 40: Guia_Performance - SQL e Oracle.xls

GO

CREATE TABLE dbo.Traces( TextData VARCHAR(MAX) NULL, NTUserName VARCHAR(128) NULL, HostName VARCHAR(128) NULL, ApplicationName VARCHAR(128) NULL, LoginName VARCHAR(128) NULL, SPID INT NULL, Duration NUMERIC(15, 2) NULL, StartTime DATETIME NULL, EndTime DATETIME NULL, Reads INT, Writes INT, CPU INT, ServerName VARCHAR(128) NULL, DataBaseName VARCHAR(128), RowCounts INT, SessionLoginName VARCHAR(128)) GO

CREATE CLUSTERED INDEX SK01_Traces on Traces(StartTime) with(FILLFACTOR=95) GO

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'stpSet_Trace' AND XTYPE = 'P')DROP PROCEDURE [dbo].[stpSet_Trace]

GO

CREATE PROCEDURE [dbo].[stpSet_Trace] @on bitASBEGIN declare @rc int, @TraceID int, @maxfilesize bigint, @intfilter int, @bigintfilter bigint select @maxfilesize = 50 -- Criação do trace

exec @rc = sp_trace_create @TraceID output, 0, N'E:\Tracers\Querys_Demoradas', @maxfilesize, NULL if (@rc != 0) goto error exec sp_trace_setevent @TraceID, 10, 1, @on exec sp_trace_setevent @TraceID, 10, 6, @on exec sp_trace_setevent @TraceID, 10, 8, @on exec sp_trace_setevent @TraceID, 10, 10, @on exec sp_trace_setevent @TraceID, 10, 11, @on exec sp_trace_setevent @TraceID, 10, 12, @on exec sp_trace_setevent @TraceID, 10, 13, @on exec sp_trace_setevent @TraceID, 10, 14, @on exec sp_trace_setevent @TraceID, 10, 15, @on exec sp_trace_setevent @TraceID, 10, 16, @on exec sp_trace_setevent @TraceID, 10, 17, @on exec sp_trace_setevent @TraceID, 10, 18, @on exec sp_trace_setevent @TraceID, 10, 26, @on exec sp_trace_setevent @TraceID, 10, 35, @on exec sp_trace_setevent @TraceID, 10, 40, @on exec sp_trace_setevent @TraceID, 10, 48, @on exec sp_trace_setevent @TraceID, 10, 64, @on

Page 41: Guia_Performance - SQL e Oracle.xls

exec sp_trace_setevent @TraceID, 12, 1, @on exec sp_trace_setevent @TraceID, 12, 6, @on exec sp_trace_setevent @TraceID, 12, 8, @on exec sp_trace_setevent @TraceID, 12, 10, @on exec sp_trace_setevent @TraceID, 12, 11, @on exec sp_trace_setevent @TraceID, 12, 12, @on exec sp_trace_setevent @TraceID, 12, 13, @on exec sp_trace_setevent @TraceID, 12, 14, @on exec sp_trace_setevent @TraceID, 12, 15, @on exec sp_trace_setevent @TraceID, 12, 16, @on exec sp_trace_setevent @TraceID, 12, 17, @on exec sp_trace_setevent @TraceID, 12, 18, @on exec sp_trace_setevent @TraceID, 12, 26, @on exec sp_trace_setevent @TraceID, 12, 35, @on exec sp_trace_setevent @TraceID, 12, 40, @on exec sp_trace_setevent @TraceID, 12, 48, @on exec sp_trace_setevent @TraceID, 12, 64, @on set @bigintfilter = 3000000 -- 3 segundos exec sp_trace_setfilter @TraceID, 13, 0, 4, @bigintfilter -- Set the trace status to start exec sp_trace_setstatus @TraceID, 1 goto finish error: select ErrorCode=@rc finish: END

/* Ativando o trace */exec dbo.stpSet_Trace 1 GO

SELECT * FROM ::fn_trace_getinfo(default) where cast(value as varchar(50)) = 'E:\Tracers\Querys_Demoradas.trc'GO

waitfor delay '00:00:04'GOcreate procedure stpTeste_Trace1ASBEGIN waitfor delay '00:00:04'ENDGO

exec stpTeste_Trace1go

Select Textdata, NTUserName, HostName, ApplicationName, LoginName, SPID, cast(Duration /1000/1000.00 as numeric(15,2)) Duration, Starttime, EndTime, Reads,writes, CPU, Servername, DatabaseName, rowcounts, SessionLoginNameFROM :: fn_trace_gettable('E:\Tracers\Querys_Demoradas.trc', default)where Duration is not null

Page 42: Guia_Performance - SQL e Oracle.xls

order by Starttime

Procedimentos para avaliação do log do banco de dados

A avaliação do log do banco de dados pode ser realizada de várias formas, sendo a mais comum através do Management Studio (SQL Server) e Enterprise Manager (Oracle), como exemplo abaixo.

Mas há outras formas de ler estes logs, como acontece quando utilizamos as procedures sp_readerrorlog e xp_readerrorlog.

sp_readerrorlog: Aceita 4 parametros

Exemplo:

EXECUTE sp_readerrorlog 3, 1, 'load'

Voltar

1. Valor correspondente ao log de erros que se pretende ler: 0 = corrente, 1 = Arquivado #1, 2 = Arquivado #2, etc...

2. Tipo do Log: 1 or NULL = Log de erros do Server, 2 = Log do SQL Agent3. String de pesquisa 1: String para pesquisa nos resultados4. String de pesquisa 2: String para refinamento da pesquisa

Page 43: Guia_Performance - SQL e Oracle.xls

Se nenhum parâmetro for informado o log corrente será mostrado.

xp_readerrorlog: Aceita 7 parametros

5. Data inicial para a busca6. Data final para a busca7. Ordenação dos resultados: N'asc' = ascendente, N'desc' = descendente

Exemplo:

EXECUTE xp_readerrorlog 3, 1, 'load', NULL, NULL, N'desc'

Procedimento realizar a atualização das estatísticas no banco de dados através da prodedure RMAtualizaEstatisticas

SQL Server

CREATE PROCEDURE RMAtualizaEstatisticas AS DECLARE @tablename nvarchar(300) DECLARE @tablename_header nvarchar(150) DECLARE tnames_cursor CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U' OPEN tnames_cursor FETCH NEXT FROM tnames_cursor INTO @tablename WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN SELECT @tablename_header = 'Atualizando ' + RTRIM(UPPER(@tablename)) PRINT @tablename_header EXEC ('UPDATE STATISTICS ' + @tablename ) END FETCH NEXT FROM tnames_cursor INTO @tablename END PRINT ' ' PRINT ' ' SELECT @tablename_header = '************* Fim das Tabelas *************' PRINT @tablename_header PRINT ' ' PRINT 'As estatisticas foram atualizadas para todas as tabelas' DEALLOCATE tnames_cursor Oracle

1. Valor correspondente ao log de erros que se pretende ler: 0 = corrente, 1 = Arquivado #1, 2 = Arquivado #2, etc...2. Tipo do Log: 1 or NULL = Log de erros do Server, 2 = Log do SQL Agent3. String de pesquisa 1: String para pesquisa nos resultados4. String de pesquisa 2: String para refinamento da pesquisa

Voltar

Page 44: Guia_Performance - SQL e Oracle.xls

DBMS_STATS.CREATE_STAT_TABLE (

ownname VARCHAR2,

stattab VARCHAR2,

tblspace VARCHAR2 DEFAULT NULL);

Procedimento desabilitar a geração automática das estatísticas e exclui-la das base de dados

declare @tab_nome varchar(255)declare @tab_statistic varchar(255)declare @sql_str varchar(255)declare @db_nome varchar(255)

select @db_nome=name from master..sysdatabases where dbid=(select dbid from master..sysprocesses where spid=@@SPID)set @sql_str= 'sp_dboption ''' + @db_nome + ''',''auto create statistics'',''false'''exec (@sql_str)set @sql_str= 'sp_dboption ''' + @db_nome + ''',''auto update statistics'',''false'''exec (@sql_str)checkpoint

declare cur cursor for SELECT object_name(id),name FROM SYSINDEXES WHERE NAME LIKE '_WA_Sys%'set nocount onopen cur fetch next from cur into @tab_nome,@tab_statisticwhile(@@fetch_status=0)begin set @sql_str='drop statistics ' + @tab_nome + '.' + @tab_statistic print @sql_str exec (@sql_str) fetch next from cur into @tab_nome,@tab_statisticendclose curdeallocate curset nocount off

Verificando a versão e o patch instalado

À partir da versão 11.00 é possivel verificar qual a versão do usuário através da tabela GLOGIN

Sentença SQL:SELECT LOGINID, USERNAME, COMUPERNAME, CODSISTEMA, APPVERSION, LIBVERSION FROM GLOGINGO

Relsutado:

Voltar

Voltar

Page 45: Guia_Performance - SQL e Oracle.xls

Definindo a opção max degree of parallelism

A opção max degree of parallelism é uma opção avançada. Se você estiver usando o procedimento armazenado no sistema sp_configure para alterar a configuração, será possível alterar max degree of parallelism apenas quando show advanced options estiver definida como 1. A configuração terá efeito imediatamente (sem a reinicialização do serviço MSSQLSERVER).O exemplo a seguir define a opção max degree of parallelism como 8.

sp_configure 'show advanced options', 1;GORECONFIGURE WITH OVERRIDE;GOsp_configure 'max degree of parallelism', 8;GORECONFIGURE WITH OVERRIDE;GO

Voltar

Page 46: Guia_Performance - SQL e Oracle.xls

ela identifica o ponto exato de execução de um statement. A conexão deve estar em RUNNABLE.

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_usrinputbuffer]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

-- Intervalo de repetição entre as verificações.Valor deve estar entre 0 e 60 segundos

-- Se =1, o SPID é analizado apenas uma vez. Se =0 fica em loop até o final do processo.

RAISERROR('Valores válidos para @WAIT estão entre 0 e 60 segundos', 16, 1)

@stmt_end = CASE WHEN stmt_end = -1 THEN -1 ELSE stmt_end/2 END

Este script cria uma procedure que auxilia durante a monitoração de conexões bloqueadas. Diferente do DBCC INPUTBUFFER, dado um SPID,

Page 47: Guia_Performance - SQL e Oracle.xls

RAISERROR('Não pode encontrar o handle ou o SPID é inválido', 16, 1)

RAISERROR('Query/Stored procedure completada', 0, 1)

Print '******** STATEMENT SENDO EXECUTADO NO MOMENTO ************'

COALESCE(NULLIF(@stmt_start, 0), 1),

THEN DATALENGTH(text)

(@stmt_end - @stmt_start)

A primeira linha sempre será a ponta (a conexão que está causando o bloqueio de todas as outras) e as demais linhas, as que estão aguardando a liberação do recurso. Também é possível ver a instrução que cada conexão está executando. Ideal para ser executada junto com a sp_usrinpubuffer durante problemas de performance.

Esta procedure permite a você identificar se existe alguma conexão bloqueada no servidor e qual é a conexão causadora do bloqueio.

Page 48: Guia_Performance - SQL e Oracle.xls

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_usrheadblocker]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

Update #tbheadBlocked Set TextBuffer = #tbInputBuffer.TextBuffer from #tbInputBuffer Where Spid = @spid

Page 49: Guia_Performance - SQL e Oracle.xls

Sentença para verificação da existencia de triggers na base de dados

SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' WHERE NAME NOT LIKE 'Log%';

SELECT TRIGGER_NAME FROM USER_TRIGGERS WHERE TRIGGER_NAME NOT LIKE 'Log%';

SELECT object_id AS objectid, index_id AS indexid, partition_number AS partitionnum,avg_fragmentation_in_percent AS frag

WHERE s.object_id = o.id and o.xtype = 'U' and s.avg_fragmentation_in_percent > 10.0 AND s.index_id > 0

Page 50: Guia_Performance - SQL e Oracle.xls

SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';

SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';

SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10));

SELECT INDEX_NAME FROM dba_indexes WHERE tablespace_name<>'RM_INDICES' AND OWNER='RM'

DBMS_SQL.PARSE(cid, 'ALTER INDEX ' || V_COLUNA ||' rebuild tablespace RM_INDICES ' , dbms_sql.v7);

Passos para encontrar as querys mais demoradas no Banco de Dados Lista de procedimentos que geram um trace em arquivo onde são armazenadas as principais sentenças que consomem recursos no banco de dados

Page 51: Guia_Performance - SQL e Oracle.xls

exec @rc = sp_trace_create @TraceID output, 0, N'E:\Tracers\Querys_Demoradas', @maxfilesize, NULL

Page 52: Guia_Performance - SQL e Oracle.xls

Select Textdata, NTUserName, HostName, ApplicationName, LoginName, SPID, cast(Duration /1000/1000.00 as numeric(15,2)) Duration, Starttime,

Page 53: Guia_Performance - SQL e Oracle.xls

A avaliação do log do banco de dados pode ser realizada de várias formas, sendo a mais comum através do Management Studio (SQL Server) e Enterprise Manager (Oracle), como exemplo abaixo.

Mas há outras formas de ler estes logs, como acontece quando utilizamos as procedures sp_readerrorlog e xp_readerrorlog.

0 = corrente, 1 = Arquivado #1, 2 = Arquivado #2, etc...

Page 54: Guia_Performance - SQL e Oracle.xls

Procedimento realizar a atualização das estatísticas no banco de dados através da prodedure RMAtualizaEstatisticas

0 = corrente, 1 = Arquivado #1, 2 = Arquivado #2, etc...

Page 55: Guia_Performance - SQL e Oracle.xls

Procedimento desabilitar a geração automática das estatísticas e exclui-la das base de dados

select @db_nome=name from master..sysdatabases where dbid=(select dbid from master..sysprocesses where spid=@@SPID)

declare cur cursor for SELECT object_name(id),name FROM SYSINDEXES WHERE NAME LIKE '_WA_Sys%'

SELECT LOGINID, USERNAME, COMUPERNAME, CODSISTEMA, APPVERSION, LIBVERSION FROM GLOGIN

Page 56: Guia_Performance - SQL e Oracle.xls

A opção max degree of parallelism é uma opção avançada. Se você estiver usando o procedimento armazenado no sistema sp_configure para alterar a configuração, será possível alterar max degree of parallelism apenas quando show advanced options estiver definida como 1. A configuração terá efeito imediatamente (sem a reinicialização do serviço MSSQLSERVER).

Page 57: Guia_Performance - SQL e Oracle.xls

Avaliando IndicesAuditar o use de indices não é uma tarefa fácil, mas é fundamental para elevar a performance no banco de dados.

Tipos de avaliação:

• Indexes (Clustered) • Indexes (Composição) • Indexes (Covering) • Indexes (Non-clustered) • Indexes (Rebuild) • Index Tuning Wizard

Page 58: Guia_Performance - SQL e Oracle.xls

Auditar o use de indices não é uma tarefa fácil, mas é fundamental para elevar a performance no banco de dados.

Page 59: Guia_Performance - SQL e Oracle.xls

Limpeza de objetos da base de dados

GJOBX, GJOBXEXECUCAO e GJOBLOG

Não haverá problemas em efetuar o comando DELETE nas tabelas citadas acima.

Exemplo:

)GO

GO

GO

GO

Recomendamos que sempre antes de efetuar um delete em uma tabela que seja feito um BACKUP da base de dados.

DELETE GRELBATCH WHERE IDJOBLOG IN (SELECT IDJOBLOG FROM GJOBLOG WHERE DATACRIACAO < '01/01/2010'

DELETE GJOBLOG WHERE DATACRIACAO <'01/01/2010'

DELETE GJOBXEXECUCAO WHERE DATAPROGRAMADA < '01/01/2009'

DELETE GJOBX WHERE DATACRIACAO <'01/01/2009'

Page 60: Guia_Performance - SQL e Oracle.xls

antes de efetuar um delete em uma tabela que seja feito um BACKUP da base de dados.

Page 61: Guia_Performance - SQL e Oracle.xls

PROCEDIMENTOS PARA REALIZAÇÃO DE TESTES

Desabilitando as triggers para avaliação do desempenho das rotinas

SQL Server:

Oracle:DECLARE V_TRIGGER VARCHAR2 (200); CID INTEGER ;CURSOR OBJ IS SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;BEGINOPEN OBJ; FETCH OBJ INTO V_TRIGGER; LOOP EXIT WHEN OBJ%NOTFOUND; CID := DBMS_SQL.OPEN_CURSOR; Dbms_Output.Enable (30000); Dbms_Output.Put_Line ('Eliminando trigger ' || V_TRIGGER || '...');

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' DISABLE TRIGGER ALL' , dbms_sql.v7); FETCH OBJ INTO V_TRIGGER; DBMS_SQL.CLOSE_CURSOR(CID); END LOOP; CLOSE OBJ; END;

Para habilitar novamente as triggersSQL Server:

Oracle:DECLARE V_TRIGGER VARCHAR2 (200); CID INTEGER ;CURSOR OBJ IS SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;BEGINOPEN OBJ; FETCH OBJ INTO V_TRIGGER; LOOP EXIT WHEN OBJ%NOTFOUND; CID := DBMS_SQL.OPEN_CURSOR; Dbms_Output.Enable (30000); Dbms_Output.Put_Line ('Eliminando trigger ' || V_TRIGGER || '...');

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' ENABLE TRIGGER ALL' , dbms_sql.v7); FETCH OBJ INTO V_TRIGGER; DBMS_SQL.CLOSE_CURSOR(CID); END LOOP; CLOSE OBJ;

exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'

Page 62: Guia_Performance - SQL e Oracle.xls

END;

Page 63: Guia_Performance - SQL e Oracle.xls

SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' DISABLE TRIGGER ALL' , dbms_sql.v7);

SELECT TRIGGER_NAME FROM USER_TRIGGERS ORDER BY TRIGGER_NAME;

DBMS_SQL.PARSE(cid, 'ALTER TABLE ' || TABLE_NAME || ' ENABLE TRIGGER ALL' , dbms_sql.v7);

'ALTER TABLE ? DISABLE TRIGGER ALL'

Page 64: Guia_Performance - SQL e Oracle.xls

Figura 1

Será aberta a janela principal do Profiler.

Figura 2

Será aberta a janela para logar no servidor conforme figura abaixo:

<< Voltar

Procedimentos para executar o Profiler do SQL Server 2005.

Menu Programas à Microsoft SQL Server 2005 à Performance Tools à SQL Server Profiler conforme figura abaixo.

Clicar no ícone New Trace conforme figura abaixo

Page 65: Guia_Performance - SQL e Oracle.xls

Figura 3

Será exibida a janela abaixo, solicitando o nome para o Arquivo de trace (trace name), neste dever ser colocado qualquer nome conforme tela abaixo.

Figura 4

Em SQL Server informar o nome do servidor que se encontra o banco de dadosCaso seja Administrador da máquina poderá utilizar “Windows authentication” caso contrario utilizar

Selecionar a guia “orelha” Events Selection, marque as opções “Show all events” e “Show all coluns” para que possa ter uma melhor visualização dos eventos, na coluna

Geralmente o eventos a serem adicionados são: Errors and Warnings,Stored Procedure,Transactions e TSQL

Obs.: O eventos (Security Audit,Sessions,Stored Procedures,TSQL) por padrão vem marcados podendo manter os mesmos.

Page 66: Guia_Performance - SQL e Oracle.xls

Figura 5

Figura 6

Selecionar o botão Column Filters... . Nesta janela será configurado os “critérios” para realizar a monitoração do log, desta forma podemos monitorar isoladamente o que uma determinada estação esta realizando no banco de dados especificado, deverá ser configurado os critérios

Obs.: Caso não saiba o nome do banco de dados, este poderá ser verificado na propriedade DATABASE NAME

Conforme citado acima o outro critério a ser configurado será o HostName, neste deverá ser adicionado o nome da máquina na rede Ex: SERVER, STENOVATO, conforme janela abaixo :

Page 67: Guia_Performance - SQL e Oracle.xls

Figura 7

Figura 8

Após este procedimento, clicar no botão OK e logo em seguida no botão RUN, o profiler irá começar a gravar todas as transações enviadas para o banco de dados, simular o erro no aplicativo logo após clicar no botão

Logo após clicar na opção STOP , ir ao menu File à Save as à Trace File e informar um nome qualquer para o arquivo e clique no botão Salvar. Conforme janela abaixo.

Page 68: Guia_Performance - SQL e Oracle.xls

Figura 9

Figura 10

Page 69: Guia_Performance - SQL e Oracle.xls

SQL Server Profiler conforme figura abaixo.

Page 70: Guia_Performance - SQL e Oracle.xls

Será exibida a janela abaixo, solicitando o nome para o Arquivo de trace (trace name), neste dever ser colocado qualquer nome conforme tela abaixo.caso contrario utilizar “SQL Server authentication” e logar com o usuário SA.

marque as opções “Show all events” e “Show all coluns” para que possa ter uma melhor visualização dos eventos, na coluna events marque os eventos que você deseja que sejam gravados a serem gravados no log a ser gerado conforme tela abaixo.

Errors and Warnings,Stored Procedure,Transactions e TSQL

) por padrão vem marcados podendo manter os mesmos.

Page 71: Guia_Performance - SQL e Oracle.xls

Nesta janela será configurado os “critérios” para realizar a monitoração do log, desta forma podemos monitorar isoladamente o que uma determinada estação esta realizando no banco de dados especificado, deverá ser configurado os critérios

Obs.: Caso não saiba o nome do banco de dados, este poderá ser verificado na propriedade DATABASE NAME do alias no BDE.

neste deverá ser adicionado o nome da máquina na rede Ex: SERVER, STENOVATO, conforme janela abaixo :

Page 72: Guia_Performance - SQL e Oracle.xls

o profiler irá começar a gravar todas as transações enviadas para o banco de dados, simular o erro no aplicativo logo após clicar no botão

e informar um nome qualquer para o arquivo e clique no botão Salvar. Conforme janela abaixo.

Page 73: Guia_Performance - SQL e Oracle.xls

marque os eventos que você deseja que sejam gravados a serem gravados no log a ser gerado conforme tela abaixo.

Page 74: Guia_Performance - SQL e Oracle.xls

Nesta janela será configurado os “critérios” para realizar a monitoração do log, desta forma podemos monitorar isoladamente o que uma determinada estação esta realizando no banco de dados especificado, deverá ser configurado os critérios DataBaseName e HostName.

Page 75: Guia_Performance - SQL e Oracle.xls

o profiler irá começar a gravar todas as transações enviadas para o banco de dados, simular o erro no aplicativo logo após clicar no botão STOP conforme janela abaixo

Page 76: Guia_Performance - SQL e Oracle.xls

DataBaseName e HostName. Em DataBaseName expandir ( clicar no sinal de + “mais” ao lado deste critério) e no item like adicionar o nome do banco de dados Ex: EXEMPLO, CORPORE. Conforme janela abaixo.

Page 77: Guia_Performance - SQL e Oracle.xls

Em DataBaseName expandir ( clicar no sinal de + “mais” ao lado deste critério) e no item like adicionar o nome do banco de dados Ex: EXEMPLO, CORPORE. Conforme janela abaixo.

Page 78: Guia_Performance - SQL e Oracle.xls

Portabilidade para Servidor de Banco de DadosVersões Homologadas

SGDB 32 bits 64 bits Versão/Patch INFO TOTVSSQL Server 2000 X X SP4 Não recomendadoSQL Server 2005 X X SP3SQL Server 2008 X X SP1 RecomendadoOracle 9i X X 9.2.0.8Oracle 10g X X 10.2.0.4Oracle 11g X X 11.1.0.7 Recomendado

4GB 8GB 20

16GB 32GB 300

(*) Configuração recomendada para utilização intensiva de recursos de BI, tais como gráficos anexos, painéis de cenários (dashboard) e painéis metas.

Restrições e avisos importantes

• A TOTVS recomenda aos usuários do banco de dados Microsoft SQL Server 2000, o upgrade para o SQL Server 2005 ou 2008 e reconfiguração do seu nível de isolamento, para obter melhorias de desempenho.• Bancos de dados do MS-SQL 2005 e MS-SQL 2008 devem ter o Nível de Compatibilidade “SQL Server 2000 (8)”. É necessário instalar os servidores SQL’s com essa compatibilidade para manter a estabilidade de comunicação entre o BDE e o banco de dados.• O banco de dados da RM não suporta replicação total (de todas as tabelas) da base de dados.• É recomendado pela TOTVS que o software de banco de dados não seja virtualizado.• Consulte previamente a TOTVS caso você queira criar triggers ou stored procedures na base de dados RM.• A TOTVS recomenda que o produto RM BIS (Gestão Estratégica) seja executado em uma base de dados D-1 para não comprometer o desempenho da base de dados de produção.

Intel® Core™ 2 Duo® de 1.6 GHz ou SIMILAR.

Disco SAS 15k, Placa Controladora com 256 MB

XEON QUADRI-PROCESSADO, SIX-CORE ou SIMILAR.

02 Discos de 146GB SAS – 15k (RAID 1) Placa Controladora com 256 MB de Cachê e Bateria, 02 Placas HBA Dual Chanel de 4 GBps

Proce

ssad

or

Mín

imo

Recom

enda

do(*)

HD/Out

ros

Núm. d

e Usu

ários

Page 79: Guia_Performance - SQL e Oracle.xls

(*) Configuração recomendada para utilização intensiva de recursos de BI, tais como gráficos anexos, painéis de cenários (dashboard) e painéis metas.

• A TOTVS recomenda aos usuários do banco de dados Microsoft SQL Server 2000, o upgrade para o SQL Server 2005 ou 2008 e reconfiguração do seu nível de isolamento, para obter melhorias de desempenho.• Bancos de dados do MS-SQL 2005 e MS-SQL 2008 devem ter o Nível de Compatibilidade “SQL Server 2000 (8)”. É necessário instalar os servidores SQL’s com essa compatibilidade para manter a estabilidade de comunicação entre o BDE e o banco de dados.

• Consulte previamente a TOTVS caso você queira criar triggers ou stored procedures na base de dados RM.• A TOTVS recomenda que o produto RM BIS (Gestão Estratégica) seja executado em uma base de dados D-1 para não comprometer o desempenho da base de dados de produção.

Page 80: Guia_Performance - SQL e Oracle.xls

• A TOTVS recomenda aos usuários do banco de dados Microsoft SQL Server 2000, o upgrade para o SQL Server 2005 ou 2008 e reconfiguração do seu nível de isolamento, para obter melhorias de desempenho.• Bancos de dados do MS-SQL 2005 e MS-SQL 2008 devem ter o Nível de Compatibilidade “SQL Server 2000 (8)”. É necessário instalar os servidores SQL’s com essa compatibilidade para manter a estabilidade de comunicação entre o BDE e o banco de dados.

Page 81: Guia_Performance - SQL e Oracle.xls

BDE

A utilização de valores muito altos para BLOB SIZE, BLOBS TO CACHE e MAXFILEHANDLES pode leva uma menor performance de algumas rotinas. A necessidade de incrementar estes parâmetros se dar pelo volume de informações processadas em cache nesta rotinas.No ambiente do DataCenter foi ajustado o parâmetro BLOB SIZE de 3000 para 512. Este parâmetro pode ser configurado com valores > 32 e < 1000, portanto o valor antigo era inválido.

Sugerimos as seguintes configurações

Database:BLOB SIZE = 512BLOBS TO CHACHE = 1024

Configuration – Native – MSSQL:TIMEOUT = 7200

Configuration – System – Init:MAXFILEHANDLES = 2048MEMSIZE = 205

Configurando o Windows para gerenciar mais que 2GB de memória

Esta sessão aplica-se a ambientes com a seguinte configuração:

• Objetivo de expansão do uso de memória além dos 2GB.• Sistema operacional Server 32-bits

Windows Server 2003Windows Server 2003, Enterprise EditionWindows Server 2003, Datacenter EditionWindows 2000 Advanced ServerWindows 2000 Datacenter Server

Quanto mais programas forem executados (e, por isto, mais processos), mais memória será comprometida até o total de 2 gigabytes (GB) de espaço de endereço.

Quando esta situação ocorre, o processo de paginação aumenta dramaticamente e o desempenho pode sofrer um impacto negativo. Os gerenciadores de memória do Windows 2000 e do Windows Server 2003 usam o PAE para fornecer mais memória física a um programa. Isso reduz a necessidade de trocar a memória do arquivo de paginação e resulta em aumento no desempenho. O programa não está ciente do tamanho real da memória. Todo o gerenciamento e alocação de memória da memória PAE é controlado pelo gerenciador de memóriaindependentemente dos programas em execução.

Voltar

Normalmente, um processo em execução no Windows 2000 ou no Windows Server 2003 pode acessar até 2 GB de espaço

Page 82: Guia_Performance - SQL e Oracle.xls

Sistema Operacional Máximo de memória comsuporte PAEWindows 2000 Advanced Server 8 GB de memória de RAMWindows Server 2003 Standart Edition 4 GB de memória de RAM

Windows Server 2000 Datacenter 32 GB de memória de RAMWindows Server 2003 Enterprise Edition 32 GB de memória de RAM

Windows Server 2003 Datacenter Edition 64 GB de memória de RAM

Using the AWE API for Servers with Large Amounts of Memory

EXEC sp_configure 'show advanced options', 1

RECONFIGURE

GO

EXEC sp_configure 'awe enabled', 1

RECONFIGURE

GO

Virtualizando o ambiente de banco de dados

Rodando o SQL Server em um ambiente virtual

For computers with more than 2 GB of memory (or 3 GB if /3GB is set for Windows), SQL Server 2005 can use the Address Windowing Extensions (AWE) API to access the extended memory space in order to store data pages. For more information on this technology, along with additional caveats, see Enabling AWE Memory for SQL Server in SQL Server Books Online.

To enable AWE in SQL Server 2005, run the following script:

Voltar

Há duas maneiras para separar as aplicações SQL Server em unidades lógicas de isolamento. Um deles é para executar o SQL Server em várias instâncias dentro de um ambiente físico. Outra maneira é executar o SQL Server dentro de um ambiente virtual. Executando várias instâncias do SQL Server em um ambiente físico isola cada instância no nível do aplicativo. Em outras palavras, cabe a cada instância do SQL Server para isolar os recursos do sistema, dados e segurança dos outros. Várias instalações SQL Server que cada executado dentro de um ambiente virtual são completamente isolados uns dos outros como se cada um fosse executado em um servidor físico separado, o que permite o isolamento no nível do sistema operacional. É importante notar que um dos benefícios de um ambiente virtual é que ele pode executar qualquer sistema operacional suportado pela aplicação da tecnologia virtual. Por exemplo, um ambiente virtual pode estar executando o Windows Server 2003, outro pode executar o Windows NT ® 4.0, e ainda um outro pode executar o Windows Server 2000. Cada um desses ambientes é configurado como uma máquina virtual separada rodando em um servidor físico e deve cumprir os requisitos que o sistema operacional específico de licenciamento. Um ambiente virtual consiste em uma ou mais máquinas virtuais. Cada máquina virtual requer seu próprio sistema operacional, a aplicação da pilha, e os recursos, incluindo o espaço em disco, memória e ciclos de processador. Se você pretende virtualizar SQL Server 2005, você deve considerar os recursos necessários para cada máquina virtual. Uma máquina virtual requer aproximadamente 32 MB mais a mesma configuração rodando em uma máquina física. Essa memória adicional é exigido pelo Virtual Server 2005 para gerenciar o ambiente virtual. Outra consideração é o espaço em disco e desempenho. Como cada máquina virtual executa uma instância virtual do Windows, cada um gere paginação para o disco, assim como ambientes físicos fazem. No entanto, cada máquina virtual está fazendo isso ao mesmo tempo, o que resulta em operações de disco real na máquina física. Estes fatores devem ser considerados quando da escolha do tipo de hardware que irá executar ambientes virtuais. Executando várias instâncias do SQL Server física dentro de um ambiente é bem adequada para aplicações que têm rendimento muito elevado ou aqueles que devem ser altamente escalável ou exigir um certo nível de isolamento. Os aplicativos que usam várias instâncias física não pode ser facilmente reconstruída ou redefinir a um estado primitivo. Portanto, executando várias instâncias físicas em um ambiente de formação não pode ser a melhor escolha. Virtual SQL Server 2005 instâncias são well-suited para aplicações de médio e baixo, como ambientes de treinamento. Os ambientes virtuais de aplicativos e separar os dados do hardware subjacente. Isso permite que uma máquina virtual a ser copiado de um servidor para outro com muita facilidade.

Executando o SQL Server 2005 em um ambiente virtual tem inúmeras vantagens. Os ambientes virtuais podem efetivamente consolidar servidores a fim de que o número total de servidores necessários para uma organização é minimizado. A virtualização também permite que os aplicativos legados e bancos de dados para executar em um ambiente tecnologicamente atuais e pode conservar o espaço e as despesas de alimentação.Se a sua organização está a ponderar virtualização do SQL Server 2005, Enterprise Edition tem vantagens sobre o licenciamento edições Standard e Workgroup quando você licenciar todos os processadores disponíveis físico. Se todos os processadores físicos disponíveis são licenciados, Enterprise Edition não requer adicional SQL Server 2005, os certificados para máquinas virtuais.Embora a virtualização tem muitos benefícios, não é a solução certa para cada caso. Para aplicações de transferência muito elevada e aplicações de banco de dados que devem ser altamente escalável, a virtualização pode não ser a melhor escolha. Nesses cenários, executando várias instâncias do SQL Server 2005 seria uma melhor escolha.

Page 83: Guia_Performance - SQL e Oracle.xls

TopConnect

É o aplicativo que faz a intermediação do TOTVSSped com os vários tipos de banco de dados com os quais ele pode trabalhar. São eles: DB2, MSSQL, Oracle, Informix, PostGres, MySQL.O TopConnect deve ser instalado somente em uma estação. Por poder trabalhar com vários tipos de banco de dados não é necessário que o mesmo seja para a base do Corpore RM e apontadotambém não é necessário que o mesmo seja instalado em seu servidor de banco de dados.

É aconselhada a criação de uma base de dados exclusiva para o SPED devido ao fato do processo gerar muitos registros e do serviço de consulta de autorização dasnotas ser executado com muita freqüência nas suas tabelas.

Caso deseje ele pode apontar o TopConnect para sua base do Corpore RM. A escolha da base de dados e do banco para o SPED fica a cargo do cliente. Uma vez definido o banco e a base a serutilizada isto não poderá ser refeito sem a perda de dados da base do SPED.

Voltar

Há duas maneiras para separar as aplicações SQL Server em unidades lógicas de isolamento. Um deles é para executar o SQL Server em várias instâncias dentro de um ambiente físico. Outra maneira é executar o SQL Server dentro de um ambiente virtual. Executando várias instâncias do SQL Server em um ambiente físico isola cada instância no nível do aplicativo. Em outras palavras, cabe a cada instância do SQL Server para isolar os recursos do sistema, dados e segurança dos outros. Várias instalações SQL Server que cada executado dentro de um ambiente virtual são completamente isolados uns dos outros como se cada um fosse executado em um servidor físico separado, o que permite o isolamento no nível do sistema operacional. É importante notar que um dos benefícios de um ambiente virtual é que ele pode executar qualquer sistema operacional suportado pela aplicação da tecnologia virtual. Por exemplo, um ambiente virtual pode estar executando o Windows Server 2003, outro pode executar o Windows NT ® 4.0, e ainda um outro pode executar o Windows Server 2000. Cada um desses ambientes é configurado como uma máquina virtual separada rodando em um servidor físico e deve cumprir os requisitos que o sistema operacional específico de licenciamento. Um ambiente virtual consiste em uma ou mais máquinas virtuais. Cada máquina virtual requer seu próprio sistema operacional, a aplicação da pilha, e os recursos, incluindo o espaço em disco, memória e ciclos de processador. Se você pretende virtualizar SQL Server 2005, você deve considerar os recursos necessários para cada máquina virtual. Uma máquina virtual requer aproximadamente 32 MB mais a mesma configuração rodando em uma máquina física. Essa memória adicional é exigido pelo Virtual Server 2005 para gerenciar o ambiente virtual. Outra consideração é o espaço em disco e desempenho. Como cada máquina virtual executa uma instância virtual do Windows, cada um gere paginação para o disco, assim como ambientes físicos fazem. No entanto, cada máquina virtual está fazendo isso ao mesmo tempo, o que resulta em operações de disco real na máquina física. Estes fatores devem ser considerados quando da escolha do tipo de hardware que irá executar ambientes virtuais. Executando várias instâncias do SQL Server física dentro de um ambiente é bem adequada para aplicações que têm rendimento muito elevado ou aqueles que devem ser altamente escalável ou exigir um certo nível de isolamento. Os aplicativos que usam várias instâncias física não pode ser facilmente reconstruída ou redefinir a um estado primitivo. Portanto, executando várias instâncias físicas em um ambiente de formação não pode ser a melhor escolha. Virtual SQL Server 2005 instâncias são well-suited para aplicações de médio e baixo, como ambientes de treinamento. Os ambientes virtuais de aplicativos e separar os dados do hardware subjacente. Isso permite que uma máquina virtual a ser copiado de um servidor para outro com muita facilidade.

Executando o SQL Server 2005 em um ambiente virtual tem inúmeras vantagens. Os ambientes virtuais podem efetivamente consolidar servidores a fim de que o número total de servidores necessários para uma organização é minimizado. A virtualização também permite que os aplicativos legados e bancos de dados para executar em um ambiente tecnologicamente atuais e pode conservar o espaço e as despesas de alimentação.Se a sua organização está a ponderar virtualização do SQL Server 2005, Enterprise Edition tem vantagens sobre o licenciamento edições Standard e Workgroup quando você licenciar todos os processadores disponíveis físico. Se todos os processadores físicos disponíveis são licenciados, Enterprise Edition não requer adicional SQL Server 2005, os certificados para máquinas virtuais.Embora a virtualização tem muitos benefícios, não é a solução certa para cada caso. Para aplicações de transferência muito elevada e aplicações de banco de dados que devem ser altamente escalável, a virtualização pode não ser a melhor escolha. Nesses cenários, executando várias instâncias do SQL Server 2005 seria uma melhor escolha.

Page 84: Guia_Performance - SQL e Oracle.xls

A utilização de valores muito altos para BLOB SIZE, BLOBS TO CACHE e MAXFILEHANDLES pode leva uma menor performance de algumas rotinas. A necessidade de incrementar estes parâmetros se dar pelo volume de informações processadas em cache nesta rotinas.No ambiente do DataCenter foi ajustado o parâmetro BLOB SIZE de 3000 para 512. Este parâmetro pode ser configurado com valores > 32 e < 1000, portanto o valor antigo era inválido.

Configurando o Windows para gerenciar mais que 2GB de memória

Quanto mais programas forem executados (e, por isto, mais processos), mais memória será comprometida até o total de 2 gigabytes (GB) de espaço de endereço.

Quando esta situação ocorre, o processo de paginação aumenta dramaticamente e o desempenho pode sofrer um impacto negativo. Os gerenciadores de memória do Windows 2000 e do Windows Server 2003 usam o PAE para fornecer mais memória física a um programa. Isso reduz a necessidade de trocar a memória do arquivo de paginação e resulta em aumento no desempenho. O programa não está ciente do tamanho real da memória. Todo o gerenciamento e alocação de memória da memória PAE é controlado pelo gerenciador de memória

Normalmente, um processo em execução no Windows 2000 ou no Windows Server 2003 pode acessar até 2 GB de espaço com uma parte da memória sendo física e outra virtual.

Page 85: Guia_Performance - SQL e Oracle.xls

For computers with more than 2 GB of memory (or 3 GB if /3GB is set for Windows), SQL Server 2005 can use the Address Windowing Extensions (AWE) API to access the extended memory space in order to store data pages. For more information on this technology, along with additional caveats, see Enabling AWE Memory for SQL Server in SQL Server Books Online.

Há duas maneiras para separar as aplicações SQL Server em unidades lógicas de isolamento. Um deles é para executar o SQL Server em várias instâncias dentro de um ambiente físico. Outra maneira é executar o SQL Server dentro de um ambiente virtual. Executando várias instâncias do SQL Server em um ambiente físico isola cada instância no nível do aplicativo. Em outras palavras, cabe a cada instância do SQL Server para isolar os recursos do sistema, dados e segurança dos outros. Várias instalações SQL Server que cada executado dentro de um ambiente virtual são completamente isolados uns dos outros como se cada um fosse executado em um servidor físico separado, o que permite o isolamento no nível do sistema operacional. É importante notar que um dos benefícios de um ambiente virtual é que ele pode executar qualquer sistema operacional suportado pela aplicação da tecnologia virtual. Por exemplo, um ambiente virtual pode estar executando o Windows Server 2003, outro pode executar o Windows NT ® 4.0, e ainda um outro pode executar o Windows Server 2000. Cada um desses ambientes é configurado como uma máquina virtual separada rodando em um servidor físico e deve cumprir os requisitos que o sistema operacional específico de licenciamento. Um ambiente virtual consiste em uma ou mais máquinas virtuais. Cada máquina virtual requer seu próprio sistema operacional, a aplicação da pilha, e os recursos, incluindo o espaço em disco, memória e ciclos de processador. Se você pretende virtualizar SQL Server 2005, você deve considerar os recursos necessários para cada máquina virtual. Uma máquina virtual requer aproximadamente 32 MB mais a mesma configuração rodando em uma máquina física. Essa memória adicional é exigido pelo Virtual Server 2005 para gerenciar o ambiente virtual. Outra consideração é o espaço em disco e desempenho. Como cada máquina virtual executa uma instância virtual do Windows, cada um gere paginação para o disco, assim como ambientes físicos fazem. No entanto, cada máquina virtual está fazendo isso ao mesmo tempo, o que resulta em operações de disco real na máquina física. Estes fatores devem ser considerados quando da escolha do tipo de hardware que irá executar ambientes virtuais. Executando várias instâncias do SQL Server física dentro de um ambiente é bem adequada para aplicações que têm rendimento muito elevado ou aqueles que devem ser altamente escalável ou exigir um certo nível de isolamento. Os aplicativos que usam várias instâncias física não pode ser facilmente reconstruída ou redefinir a um estado primitivo. Portanto, executando várias instâncias físicas em um ambiente de formação não pode ser a melhor escolha. Virtual SQL Server 2005 instâncias são well-suited para aplicações de médio e baixo, como ambientes de treinamento. Os ambientes virtuais de aplicativos e separar os dados do hardware subjacente. Isso permite que uma máquina virtual a ser copiado de um servidor para outro com muita facilidade.

Executando o SQL Server 2005 em um ambiente virtual tem inúmeras vantagens. Os ambientes virtuais podem efetivamente consolidar servidores a fim de que o número total de servidores necessários para uma organização é minimizado. A virtualização também permite que os aplicativos legados e bancos de dados para executar em um ambiente tecnologicamente atuais e pode conservar o espaço e as despesas de alimentação.Se a sua organização está a ponderar virtualização do SQL Server 2005, Enterprise Edition tem vantagens sobre o licenciamento edições Standard e Workgroup quando você licenciar todos os processadores disponíveis físico. Se todos os processadores físicos disponíveis são licenciados, Enterprise Edition não requer adicional SQL Server 2005, os certificados para máquinas virtuais.Embora a virtualização tem muitos benefícios, não é a solução certa para cada caso. Para aplicações de transferência muito elevada e aplicações de banco de dados que devem ser altamente escalável, a virtualização pode não ser a melhor escolha. Nesses cenários, executando várias instâncias do SQL Server 2005 seria uma melhor escolha.

Page 86: Guia_Performance - SQL e Oracle.xls

É o aplicativo que faz a intermediação do TOTVSSped com os vários tipos de banco de dados com os quais ele pode trabalhar. São eles: DB2, MSSQL, Oracle, Informix, PostGres, MySQL.O TopConnect deve ser instalado somente em uma estação. Por poder trabalhar com vários tipos de banco de dados não é necessário que o mesmo seja para a base do Corpore RM e apontado

É aconselhada a criação de uma base de dados exclusiva para o SPED devido ao fato do processo gerar muitos registros e do serviço de consulta de autorização das

Caso deseje ele pode apontar o TopConnect para sua base do Corpore RM. A escolha da base de dados e do banco para o SPED fica a cargo do cliente. Uma vez definido o banco e a base a ser

Há duas maneiras para separar as aplicações SQL Server em unidades lógicas de isolamento. Um deles é para executar o SQL Server em várias instâncias dentro de um ambiente físico. Outra maneira é executar o SQL Server dentro de um ambiente virtual. Executando várias instâncias do SQL Server em um ambiente físico isola cada instância no nível do aplicativo. Em outras palavras, cabe a cada instância do SQL Server para isolar os recursos do sistema, dados e segurança dos outros. Várias instalações SQL Server que cada executado dentro de um ambiente virtual são completamente isolados uns dos outros como se cada um fosse executado em um servidor físico separado, o que permite o isolamento no nível do sistema operacional. É importante notar que um dos benefícios de um ambiente virtual é que ele pode executar qualquer sistema operacional suportado pela aplicação da tecnologia virtual. Por exemplo, um ambiente virtual pode estar executando o Windows Server 2003, outro pode executar o Windows NT ® 4.0, e ainda um outro pode executar o Windows Server 2000. Cada um desses ambientes é configurado como uma máquina virtual separada rodando em um servidor físico e deve cumprir os requisitos que o sistema operacional específico de licenciamento. Um ambiente virtual consiste em uma ou mais máquinas virtuais. Cada máquina virtual requer seu próprio sistema operacional, a aplicação da pilha, e os recursos, incluindo o espaço em disco, memória e ciclos de processador. Se você pretende virtualizar SQL Server 2005, você deve considerar os recursos necessários para cada máquina virtual. Uma máquina virtual requer aproximadamente 32 MB mais a mesma configuração rodando em uma máquina física. Essa memória adicional é exigido pelo Virtual Server 2005 para gerenciar o ambiente virtual. Outra consideração é o espaço em disco e desempenho. Como cada máquina virtual executa uma instância virtual do Windows, cada um gere paginação para o disco, assim como ambientes físicos fazem. No entanto, cada máquina virtual está fazendo isso ao mesmo tempo, o que resulta em operações de disco real na máquina física. Estes fatores devem ser considerados quando da escolha do tipo de hardware que irá executar ambientes virtuais. Executando várias instâncias do SQL Server física dentro de um ambiente é bem adequada para aplicações que têm rendimento muito elevado ou aqueles que devem ser altamente escalável ou exigir um certo nível de isolamento. Os aplicativos que usam várias instâncias física não pode ser facilmente reconstruída ou redefinir a um estado primitivo. Portanto, executando várias instâncias físicas em um ambiente de formação não pode ser a melhor escolha. Virtual SQL Server 2005 instâncias são well-suited para aplicações de médio e baixo, como ambientes de treinamento. Os ambientes virtuais de aplicativos e separar os dados do hardware subjacente. Isso permite que uma máquina virtual a ser copiado de um servidor para outro com muita facilidade.

Executando o SQL Server 2005 em um ambiente virtual tem inúmeras vantagens. Os ambientes virtuais podem efetivamente consolidar servidores a fim de que o número total de servidores necessários para uma organização é minimizado. A virtualização também permite que os aplicativos legados e bancos de dados para executar em um ambiente tecnologicamente atuais e pode conservar o espaço e as despesas de alimentação.Se a sua organização está a ponderar virtualização do SQL Server 2005, Enterprise Edition tem vantagens sobre o licenciamento edições Standard e Workgroup quando você licenciar todos os processadores disponíveis físico. Se todos os processadores físicos disponíveis são licenciados, Enterprise Edition não requer adicional SQL Server 2005, os certificados para máquinas virtuais.Embora a virtualização tem muitos benefícios, não é a solução certa para cada caso. Para aplicações de transferência muito elevada e aplicações de banco de dados que devem ser altamente escalável, a virtualização pode não ser a melhor escolha. Nesses cenários, executando várias instâncias do SQL Server 2005 seria uma melhor escolha.

Page 87: Guia_Performance - SQL e Oracle.xls

A utilização de valores muito altos para BLOB SIZE, BLOBS TO CACHE e MAXFILEHANDLES pode leva uma menor performance de algumas rotinas. A necessidade de incrementar estes parâmetros se dar pelo volume de informações processadas em cache nesta rotinas.

Page 88: Guia_Performance - SQL e Oracle.xls

For computers with more than 2 GB of memory (or 3 GB if /3GB is set for Windows), SQL Server 2005 can use the Address Windowing Extensions (AWE) API to access the extended memory space in order to store data pages. For more information on this technology, along with additional caveats, see Enabling AWE Memory for SQL Server in SQL Server Books Online.

Page 89: Guia_Performance - SQL e Oracle.xls

For computers with more than 2 GB of memory (or 3 GB if /3GB is set for Windows), SQL Server 2005 can use the Address Windowing Extensions (AWE) API to access the extended memory space in order to store data pages. For more information on this technology, along with additional caveats, see Enabling AWE Memory for SQL Server in SQL Server Books Online.

Page 90: Guia_Performance - SQL e Oracle.xls

Virutalização de ambientes OLAP

Page 91: Guia_Performance - SQL e Oracle.xls

Caching

Configurando o cache de saída do IIS

Aplica-se a: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista

o IIS processará a solicitação e retornará uma página ao navegador cliente. Se você habilitar o cache de saída, uma cópia dessa página da Web processada será armazenadana memória no servidor Web e retornada aos navegadores cliente nas solicitações subseqüentes para esse mesmo recurso. Isso elimina a necessidade de reprocessar a páginasempre que ela for solicitada. Isso é útil quando o seu conteúdo depender de um programa externo para processamento, como com um programa CGI, ou incluir dados de uma fonte externa, como de um compartilhamento ou banco de dados remoto.

Para criar uma regra de cache de saídaÉ possível realizar este procedimento usando a UI (interface de usuário) ou uma linha de comando.

Para usar a UI

Compressão de páginas

e envia por e-mail para seu amigo (o browser) que, por sua vez, descompacta o arquivo zip para ver a imagem. Os métodos de compressão mais comuns são Deflate e gzip.

Para ativar o IIS a comprimir páginas .aspx, siga estes passos:

1. Abra uma linha de comandos (CMD).2. Execute o comando: net stop iisadmin (pressioneENTER)3. Acesse o diretório C:\InetPub\adminscripts

Comando: cd C:\InetPub\adminscripts

4. Execute o seguinte comando, pressionando ENTER ao final:

Dll "exe cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/GZIP/HcScriptFileExtensions"asp"" "aspx"

5. Execute o seguinte comando, pressionando ENTER ao final:

Voltar

No IIS 7, você pode configurar o cache de saída para aprimorar o desempenho no servidor Web e no web site. Quando um usuário solicitar uma página da Web,

1. Abra o Gerenciador do IIS e navegue até o nível que deseja gerenciar. Para obter mais informações sobre como abrir o Gerenciador do IIS, consulte 2. Em Exibição de Recursos, clique duas vezes em Cache de Saída.3. No painel Ações, clique em Adicionar.4. Na caixa de diálogo Adicionar Regra de Cache, na caixa Extensão de nome de arquivo5. Marque a caixa de seleção Cache de modo de usuário para habilitar o cache de saída e selecione uma das seguintes opções:

Usando notificações de alteração de arquivo: se quiser que um item seja removido do cache quando for atualizado.

Em intervalos (hh:mm:ss): se quiser que um item seja removido do cache depois que determinado tempo decorrer. Em seguida, digite uma hora no formato de

Voltar

Fazendo uma analogia, compactar objetos da página via server é semelhante a zipar um arquivo grande para enviar por e-mail: você (servidor web) zipa um grande da família (o componente da página)retrato

Page 92: Guia_Performance - SQL e Oracle.xls

aspx"cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/DEFLATE/HcScriptFileExtensions"asp""dll""exe""

6. Execute o comando: net start w3svc e na linha de comando para iniciar o IIS

Page 93: Guia_Performance - SQL e Oracle.xls

Aplica-se a: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista

o IIS processará a solicitação e retornará uma página ao navegador cliente. Se você habilitar o cache de saída, uma cópia dessa página da Web processada será armazenadana memória no servidor Web e retornada aos navegadores cliente nas solicitações subseqüentes para esse mesmo recurso. Isso elimina a necessidade de reprocessar a páginasempre que ela for solicitada. Isso é útil quando o seu conteúdo depender de um programa externo para processamento, como com um programa CGI, ou incluir dados de uma fonte externa,

É possível realizar este procedimento usando a UI (interface de usuário) ou uma linha de comando.

e envia por e-mail para seu amigo (o browser) que, por sua vez, descompacta o arquivo zip para ver a imagem. Os métodos de compressão mais comuns são Deflate e gzip.

Dll "exe cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/GZIP/HcScriptFileExtensions"asp"" "aspx"

No IIS 7, você pode configurar o cache de saída para aprimorar o desempenho no servidor Web e no web site. Quando um usuário solicitar uma página da Web,

1. Abra o Gerenciador do IIS e navegue até o nível que deseja gerenciar. Para obter mais informações sobre como abrir o Gerenciador do IIS, consulte IIS 7.0: Abrir o gerenciador do IIS. Para obter informações sobre como navegar até locais na interface do usuário, consulte

Extensão de nome de arquivo, insira a extensão de nome de arquivo, como .aspx, para a qual deseja criar uma regra de cache. para habilitar o cache de saída e selecione uma das seguintes opções:

: se quiser que um item seja removido do cache quando for atualizado.

: se quiser que um item seja removido do cache depois que determinado tempo decorrer. Em seguida, digite uma hora no formato de hh:mm:ss (onde h são horas,

é semelhante a zipar um arquivo grande para enviar por e-mail: você (servidor web) zipa um grande da família (o componente da página)retrato

Page 94: Guia_Performance - SQL e Oracle.xls

aspx"cscript.exe ADSUTIL.VBS SET W3SVC/Filters/compressão/DEFLATE/HcScriptFileExtensions"asp""dll""exe""

Page 95: Guia_Performance - SQL e Oracle.xls

sempre que ela for solicitada. Isso é útil quando o seu conteúdo depender de um programa externo para processamento, como com um programa CGI, ou incluir dados de uma fonte externa,

IIS 7.0: Abrir o gerenciador do IIS. Para obter informações sobre como navegar até locais na interface do usuário, consulte IIS 7.0: Navegação no gerenciador do IIS

, insira a extensão de nome de arquivo, como .aspx, para a qual deseja criar uma regra de cache.

h são horas, m são minutos e s são segundos) na caixa correspondente.

é semelhante a zipar um arquivo grande para enviar por e-mail: você (servidor web) zipa um grande da família (o componente da página)retrato

Page 96: Guia_Performance - SQL e Oracle.xls

IIS 7.0: Navegação no gerenciador do IIS.

Page 97: Guia_Performance - SQL e Oracle.xls

Acesso o Portal do Cliente no site da TOTVS para ter utilizar os serviços que foram disponibilizados para ajudá-lo no dia a dia.

Log de auditoria

Voltar

http://www.totvs.com/web/portaldocliente

Voltar

Auditoria Qualquer rotina de auditoria se resume em controlar processos, sempre que “controlamos” algo tornamos nossos processos mais lentos. Entendendo o LOGO LOG de auditoria é composto por uma serie de Triggers que são habilitadas no banco. Podemos selecionar tabelas e campos para auditoria.Com ele podemos obter um histórico de todas as Inclusões/alterações /exclusões que ocorreram nos campos selecionados para serem auditados pelo LOG.Quando selecionamos um campo/tabela para auditoria automaticamente habilitamos a trigger referente a esta tabela. Quando o campo marcado sofre uma ação (inclusão/alteração/exclusão) a trigger é disparada e grava na tabela de LOG dados sobre o autor da ação e valores alterados. Preço que pagamos ao usar o LOG Quanto mais campos e tabelas auditamos, mais recursos de hardware (servidor) são necessários. Se o LOG for usado com critério, não haverá degradação de performance. A perda de performance vai depender de dois fatores inversamente proporcionais O quanto de nossos processos estamos auditando X O quanto de Recursos de Máquina temos disponível Quando falamos em performance temos que nos atentar a algumas regras que devem ser cuidadosamente analisadas. Devemos marcar somente os campos que realmente tem necessidade de auditoria. Por exemplo, se marcarmos o campo Salário ta tabela PFUNC, este campo não sofre alterações ha todo momento. Não há impacto sobre performance. Ao contrario, se marcarmos um campo de uma tabela sofre alterações constantes, por exemplo, valor original da tabela de Lançamentos , suponhamos que o cliente processa em media 200 lançamentos por dia ... isso “pode“ ocasionar perda de performance, pois a trigger estará sendo executada a todo momento. É importante salientar que não há como afirmar que haverá perda de performance, pois vários fatores contribuem para isso como configuração de maquina e rede. Quanto mais “parrudo” o servidor menos impactos teremos na performance. Temos relatos de clientes que auditam tabelas que sofrem alterações constantes e nem por isso perderam performance, porem sabemos que seu ambiente é hiperdimensionado. Um mal exemplo de utilização do Log seria marcar sem critério todos os campos da varias tabelas, isso fará com que o sistema grave a todo o momento informações na tabela de LOG, acarretaria em uma massa de dados muito grande, dificultando inclusive a leitura destes registros. OBS: O Log é armazenado no banco pelo numero de dias parametrizado pelo usuário, se informado 20 dias a tabela mantém os registros dos últimos 20 dias. Vale ressaltar que dependendo da quantidade de campos auditados e dias para armazenamento a tabela de LOG pode assumir proporções gigantescas que podem interferir no gerenciamento do SGDB. O mais importante é ter critério e selecionar para Log somente o que é necessário.

Page 98: Guia_Performance - SQL e Oracle.xls

Utilização do TSS

Arquitetura de Comunicação

Configurador do TSS para o banco de dados SQL Server

No menu Iniciar | Programas | TOTVS | TOTVSped e clique em TOTVSSped Monitor para abrir o monitor. Imagens da Guia TopConnect no Monitor. Veja a explicação dos campos

Voltar

Auditoria Qualquer rotina de auditoria se resume em controlar processos, sempre que “controlamos” algo tornamos nossos processos mais lentos. Entendendo o LOGO LOG de auditoria é composto por uma serie de Triggers que são habilitadas no banco. Podemos selecionar tabelas e campos para auditoria.Com ele podemos obter um histórico de todas as Inclusões/alterações /exclusões que ocorreram nos campos selecionados para serem auditados pelo LOG.Quando selecionamos um campo/tabela para auditoria automaticamente habilitamos a trigger referente a esta tabela. Quando o campo marcado sofre uma ação (inclusão/alteração/exclusão) a trigger é disparada e grava na tabela de LOG dados sobre o autor da ação e valores alterados. Preço que pagamos ao usar o LOG Quanto mais campos e tabelas auditamos, mais recursos de hardware (servidor) são necessários. Se o LOG for usado com critério, não haverá degradação de performance. A perda de performance vai depender de dois fatores inversamente proporcionais O quanto de nossos processos estamos auditando X O quanto de Recursos de Máquina temos disponível Quando falamos em performance temos que nos atentar a algumas regras que devem ser cuidadosamente analisadas. Devemos marcar somente os campos que realmente tem necessidade de auditoria. Por exemplo, se marcarmos o campo Salário ta tabela PFUNC, este campo não sofre alterações ha todo momento. Não há impacto sobre performance. Ao contrario, se marcarmos um campo de uma tabela sofre alterações constantes, por exemplo, valor original da tabela de Lançamentos , suponhamos que o cliente processa em media 200 lançamentos por dia ... isso “pode“ ocasionar perda de performance, pois a trigger estará sendo executada a todo momento. É importante salientar que não há como afirmar que haverá perda de performance, pois vários fatores contribuem para isso como configuração de maquina e rede. Quanto mais “parrudo” o servidor menos impactos teremos na performance. Temos relatos de clientes que auditam tabelas que sofrem alterações constantes e nem por isso perderam performance, porem sabemos que seu ambiente é hiperdimensionado. Um mal exemplo de utilização do Log seria marcar sem critério todos os campos da varias tabelas, isso fará com que o sistema grave a todo o momento informações na tabela de LOG, acarretaria em uma massa de dados muito grande, dificultando inclusive a leitura destes registros. OBS: O Log é armazenado no banco pelo numero de dias parametrizado pelo usuário, se informado 20 dias a tabela mantém os registros dos últimos 20 dias. Vale ressaltar que dependendo da quantidade de campos auditados e dias para armazenamento a tabela de LOG pode assumir proporções gigantescas que podem interferir no gerenciamento do SGDB. O mais importante é ter critério e selecionar para Log somente o que é necessário.

Page 99: Guia_Performance - SQL e Oracle.xls

O TSS também é utilizado por nosso Sistema de Gestão Fiscal (RM Líber) para gerar as informações da EFD por isso ele contém informações relacionadas a esta rotina.

Page 100: Guia_Performance - SQL e Oracle.xls

Acesso o Portal do Cliente no site da TOTVS para ter utilizar os serviços que foram disponibilizados para ajudá-lo no dia a dia.

Auditoria Qualquer rotina de auditoria se resume em controlar processos, sempre que “controlamos” algo tornamos nossos processos mais lentos. Entendendo o LOGO LOG de auditoria é composto por uma serie de Triggers que são habilitadas no banco. Podemos selecionar tabelas e campos para auditoria.Com ele podemos obter um histórico de todas as Inclusões/alterações /exclusões que ocorreram nos campos selecionados para serem auditados pelo LOG.Quando selecionamos um campo/tabela para auditoria automaticamente habilitamos a trigger referente a esta tabela. Quando o campo marcado sofre uma ação (inclusão/alteração/exclusão) a trigger é disparada e grava na tabela de LOG dados sobre o autor da ação e valores alterados. Preço que pagamos ao usar o LOG Quanto mais campos e tabelas auditamos, mais recursos de hardware (servidor) são necessários. Se o LOG for usado com critério, não haverá degradação de performance. A perda de performance vai depender de dois fatores inversamente proporcionais O quanto de nossos processos estamos auditando X O quanto de Recursos de Máquina temos disponível Quando falamos em performance temos que nos atentar a algumas regras que devem ser cuidadosamente analisadas. Devemos marcar somente os campos que realmente tem necessidade de auditoria. Por exemplo, se marcarmos o campo Salário ta tabela PFUNC, este campo não sofre alterações ha todo momento. Não há impacto sobre performance. Ao contrario, se marcarmos um campo de uma tabela sofre alterações constantes, por exemplo, valor original da tabela de Lançamentos , suponhamos que o cliente processa em media 200 lançamentos por dia ... isso “pode“ ocasionar perda de performance, pois a trigger estará sendo executada a todo momento. É importante salientar que não há como afirmar que haverá perda de performance, pois vários fatores contribuem para isso como configuração de maquina e rede. Quanto mais “parrudo” o servidor menos impactos teremos na performance. Temos relatos de clientes que auditam tabelas que sofrem alterações constantes e nem por isso perderam performance, porem sabemos que seu ambiente é hiperdimensionado. Um mal exemplo de utilização do Log seria marcar sem critério todos os campos da varias tabelas, isso fará com que o sistema grave a todo o momento informações na tabela de LOG, acarretaria em uma massa de dados muito grande, dificultando inclusive a leitura destes registros. OBS: O Log é armazenado no banco pelo numero de dias parametrizado pelo usuário, se informado 20 dias a tabela mantém os registros dos últimos 20 dias. Vale ressaltar que dependendo da quantidade de campos auditados e dias para armazenamento a tabela de LOG pode assumir proporções gigantescas que podem interferir no gerenciamento do SGDB. O mais importante é ter critério e selecionar para Log somente o que é necessário.

Page 101: Guia_Performance - SQL e Oracle.xls

No menu Iniciar | Programas | TOTVS | TOTVSped e clique em TOTVSSped Monitor para abrir o monitor. Imagens da Guia TopConnect no Monitor. Veja a explicação dos campos

Auditoria Qualquer rotina de auditoria se resume em controlar processos, sempre que “controlamos” algo tornamos nossos processos mais lentos. Entendendo o LOGO LOG de auditoria é composto por uma serie de Triggers que são habilitadas no banco. Podemos selecionar tabelas e campos para auditoria.Com ele podemos obter um histórico de todas as Inclusões/alterações /exclusões que ocorreram nos campos selecionados para serem auditados pelo LOG.Quando selecionamos um campo/tabela para auditoria automaticamente habilitamos a trigger referente a esta tabela. Quando o campo marcado sofre uma ação (inclusão/alteração/exclusão) a trigger é disparada e grava na tabela de LOG dados sobre o autor da ação e valores alterados. Preço que pagamos ao usar o LOG Quanto mais campos e tabelas auditamos, mais recursos de hardware (servidor) são necessários. Se o LOG for usado com critério, não haverá degradação de performance. A perda de performance vai depender de dois fatores inversamente proporcionais O quanto de nossos processos estamos auditando X O quanto de Recursos de Máquina temos disponível Quando falamos em performance temos que nos atentar a algumas regras que devem ser cuidadosamente analisadas. Devemos marcar somente os campos que realmente tem necessidade de auditoria. Por exemplo, se marcarmos o campo Salário ta tabela PFUNC, este campo não sofre alterações ha todo momento. Não há impacto sobre performance. Ao contrario, se marcarmos um campo de uma tabela sofre alterações constantes, por exemplo, valor original da tabela de Lançamentos , suponhamos que o cliente processa em media 200 lançamentos por dia ... isso “pode“ ocasionar perda de performance, pois a trigger estará sendo executada a todo momento. É importante salientar que não há como afirmar que haverá perda de performance, pois vários fatores contribuem para isso como configuração de maquina e rede. Quanto mais “parrudo” o servidor menos impactos teremos na performance. Temos relatos de clientes que auditam tabelas que sofrem alterações constantes e nem por isso perderam performance, porem sabemos que seu ambiente é hiperdimensionado. Um mal exemplo de utilização do Log seria marcar sem critério todos os campos da varias tabelas, isso fará com que o sistema grave a todo o momento informações na tabela de LOG, acarretaria em uma massa de dados muito grande, dificultando inclusive a leitura destes registros. OBS: O Log é armazenado no banco pelo numero de dias parametrizado pelo usuário, se informado 20 dias a tabela mantém os registros dos últimos 20 dias. Vale ressaltar que dependendo da quantidade de campos auditados e dias para armazenamento a tabela de LOG pode assumir proporções gigantescas que podem interferir no gerenciamento do SGDB. O mais importante é ter critério e selecionar para Log somente o que é necessário.

Page 102: Guia_Performance - SQL e Oracle.xls

O TSS também é utilizado por nosso Sistema de Gestão Fiscal (RM Líber) para gerar as informações da EFD por isso ele contém informações relacionadas a esta rotina.

Page 103: Guia_Performance - SQL e Oracle.xls

Como verificar se o log de auditoria está habilitado na base de dados

Voltar

Page 104: Guia_Performance - SQL e Oracle.xls