Você está na página 1de 4
zarao ‘mats para quem ulizao Protus (Tos) conatar um DBA SOL Serer | Fabricio Lira Consultoria SQL Server ag ae eee ea Fabricio Lima Consuitoria e Treinamento SQL Server * Péigina Inicial © Consuitoria Remota © Clientes © Entre em Contato * Blog SQL Server Hype text to search here... | Pagina Inicial > Administragdo de Banco de Dados, Carreira, Consuttoria SQL Server, DBA Remoto, SQL Server, Virtual PASS BR > 5 motivos para quem utiliza o Protheus (Totvs) contratar um DBA SQL Server 5 motivos para quem utiliza o Protheus (Totvs) contratar um DBA SQL Server 14, dezembro, 2013 Fabricio Lima Deixar um comentirio Ir para os comentiios Olé Pessoal, Trabalho com administragio de banco de dados SQL Server Protheus desde 2009 em um ambiente que considero de grande porte: + Base de Dados de 300 GB completamente compactada & nivel de pagina, caso contritio jé estaria passando de 1 TB de dados. ‘+ 3.000 usuirios simultineos conectados no Top Comect + Tenho um Database Mirroring dessa base de dados do Protheus configurado para outro servidor para subir 0 ambiente em caso de desastre ‘Vejo muita gente em foruns ou listas de e-mails sobre SQL Server reclamando de alguns pontos da arquitetura do banco de dados Protheus. Defendendo um pouco 0 lado da Totvs, o sistema deles ¢ feito para ser executado em todos os grandes bancos de dados do mercado, entdo, acredito que por isso eles acabam fazendo algo um pouco mais generico, Apesar se sempre me perguntar porque ndo existe algo do tipo na implantagdo de um ambiente protheus: htpfebriciolima nsog/20'3'2/14-moties-pare-quer-liza-oprotheus-ohe-contratar-um-dbe-sql-servet! vw rarvora ‘5 motives para quem tliza o Proteus Tas) coriretar um DBA SQL. Sener | Fabricio Lima IF SGBD = ‘SQL Server’ exec Customizagdes SQL Server IF SGBD = ‘Oracle’ exec Customizagdes Oracle IF SGBD = ‘DB2’ exec Customizagdes DB2 A complexidade de fazer isso deve ser muito alta e\ou o investimento nessa estratégia no vale a pena financeiramente para a empresa, Diante disso tudo, mesmo no sendo possivel alterar queries padres do sistema Protheus, existem uma série de agdes que vocé pode fizer para melhorar a performance do seu ambiente Totvs Protheus com SQL Server. Por is tem problema de performance no seu ambiente Protheus e ndio quer comprar um servidor mais potente, o que normalmente ¢ a indicagao da Totvs, segue abaixo 5 motivos para vocé contratar um DBA ou uma Consultoria em SOL Server: 9, Se vous 1—Para realizar a criagao de novos indices para o ambiente Protheus Jé comego pelo ponto que eu acho mais problemitico no banco de dados Totys. 99% dos indices do Protheus comegam. coma colina FILIAL, Existe uma tabela no Protheus chamada SE1010 (empresa 1). Emuma base da versio 10 padrdo (sem customizagées), 24 indices nonclustered, 23 comegam coma coluna E1_FILIAL. Olkando como DBA, esses 23 indices so “praticamente” iguais, pois 0 SQL server montaré a B-Tree do indice para fazer as buscas de forma mais répida por essa cohina. Se vocé procurar por um eddigo de cliente, uma data de emisso ou um cédigo de documento, ao invés do Protheus fizer uma busca por esses campos, ele vai fitrar primeiro a filial e s6 depois fitrar o campo principal que vocé quer buscar. Isso gera uma perda de performance incrivel. Se vocé s6 tem uma filial, o indice ndo fitra quase nada. Para amenizar esse problema, no meu ambiente identiiquei a necessidade de criagdo de MUITOS indices customizados isso melhorou demais 0 desempenho do nosso ambiente. Como seu indice customizado via SQL Server nflo esti no dicionirio de dados do Protheus, quando vocé realizar alguma atualiza¢o maior no seu ambiente, os indices podem ser excluidos. Para resolver isso, deve ser eriado um job para criar todos indices customizados caso eles ainda ndo existam (IF NOT EXISTS ... CREATE INDEX ...) 2— Para desabil 1 indices do Protheus “Necessario validacdo com seu suporte Totys e homologagio Nao podemos nunca exchiir um indice do Protheus, todavia, existe uma solugdo de contorno para isso. Ao invés de exchir um indice, no SQL Server voeé pode desabilitar um indice. Dessa forma, o indice continua existindo na tabela sys.indexes, mas agora como valor da coluna is_disable = 1, Como o Protheus néio usa hints para forgar a utiizagdo de um indice (with index= XXX), 0 SQL Server & quem escolhe o indice que deve ser usado quando uma consulta & realizda na base. Caso o Protheus forgasse a utlizagdo de um indice, ele ndo poderia ser desabilitado de forma alguma, Desabilitando o indice, 0 SQL Server libera o espago em disco ocupado por ess reduzindo o custo das operagdes de VO. indice e no atualiza mais esse indice, Existem muitos indices criados pelo Protheus que ndo so usados, ainda mais quando vocé criar os indices customizados. Por isso, desabiltar esses indices pode trazer grandes ganhos de performance. Mas Fabricio, ¢ se cu comegar a usar uma nova funcionalidade do Protheus que uliizaria esses indices que foram desabilitados? tp:ebciotima nevelgi2013112/145-retives-pare-quer- liza protheus-tohs-cotratar-ume-dbe-sql-serer! am zeazo%4 ‘5 motives para quem tliza o Proteus Tas) coriretar um DBA SQL. Sener | Fabricio Lima R:A necessidade de utilizar novos indices voeé tem que identifcar com as queries mais lentas ou as que esto consumindo ais recursos no seu banco de dados. Assim, vocé pode criar os indices necessérios e melhorar essas queries. Esse monitoramento deve ser constante. Jé homologue’ e utilzei isso em produgdo (versdo 10) e ndo tive problema com suporte da Totvs. Jé vi pessoas da Totvs dizendo que eles podiam ser desabilitados e pessoas que usam Protheus dizendo que o suporte da Totvs nao deixa realizar essa operagdo. Dessa forma, fica como dica para validarem com o suporte Totvs e homologar no seu Protheus antes de colocar em produsao. Se o suporte dizer que no pode, pega uma explicagao técnica para isso. Da mesma forma que deve ser erado um job para a recriar os indices, deve se criado um job para desabiltar os indices ‘novamente caso uma atualizagaio do Protheus crie eles novamente. 3— Para alterar o FILLFACTOR dos indices Todos os indices do Protheus sdo criados como FILLFACTOR de 100%. Isso significa que as paginas so preenchidas or completo, o que gera gera um aumento na fiagmentago das paginas desses indices e também eleva o nimero de Page Splits no ambiente (operago de /O que divide uma pagina em duas). Para melhorar o desempenho do seu Protheus SQL, vocé pode analisar os indices que estio se fiagmentando mais e/ou gerando mais PAGE SPLIT e akerar 0 FILLFACTOR desses indices ‘Seguem dois artigos deste blog que podem te ajudar: ‘* Como monitorar o Page Split de um indice? * Qual o valor ideal para o FILLFACTOR de um indice? 4— Para realizar um expurgos de dados da base de produgao Se sua rea de tributos\contabilidade precisa de cinco anos de dados ONLINE, deixe apenas cinco anos ONLINE. Se precisa de trés anos, deixe apenas trés anos. Vocé pode criar uma ou varias bases de histérico para que os dados da base de produedo sejam expurgados para essas bases. Dessa maneira, a performance do seu ambiente de produedo aumentard pois serdo menos dados para o banco de produgdo fazer uma busea 5— Para compactar tabelas e indices (disponivel apenas na verso enterprise do SQL Server 2008/2008R2/2012) Novamente utiizando a tabela SE1010 como exemplo, essa tabela possui na versio do Protheus 10 um total de 228 colunas. E isso mesmo, 228 colunas. Achou isso impressionante? Para aumentar 0 problema, a tabela possui uma constraint DEFAULT para cada uma dessas cohimas, Caso seja um nimero ele preenche com zero, caso seja string ele preenche com espaco em branco, Exemplo de uma constraint na tabela SEIOL0: (hide ati glee atin aed eric oral es ee : vy Esse é um dos principais motivos que fizem a compactagdo de paginas de tabelas do Protheus ter GANHOS IMPRESSIONANTES. ‘Segue um exemplo de uma tabela antes e depois de uma compactagdo de todos os seus indices a nivel de pagina Antes: tp:ebciotima nevelgi2013112/145-retives-pare-quer- liza protheus-tohs-cotratar-ume-dbe-sql-serer! ant zarao ‘mates para quem ulizao Protus (Tos) conatar um DBA SOL Serer | Fabricio Lira rows. reserved ata indexsie unused 27624259 100324472KB G4549088KE 35751944KB 23440 KB Depois: name rows reserved data index size unused 1 (lami 27624253 19051912KB 7620296 KB 11409640 KB 21976 KB De 100 GB baixou para apenas 19 GB. 81 GB de ganho de espago em disco, Redusio de 81% de espago utiizando a compactagao. A compactagdo gera um aumento de consumo de CPU, mas além do ganho de espago em disco ($$), otimizn a utizazio da meméria, pois como a tabela possui menos paginas, ela ocupa menos espago em memiria € mais tabelas conseguem permanecer no Data Cache do SQL. O Saldo final é um ambiente com uma performance melhor. Dica Extra - Nao desabilite o auto create statistics A indicagdo da Totvs é para vocé desabiltar a ope auto create e update statistics e criar uma rotina para atualizar as stati A dica de criar uma rotina para atualizar as estatisticas ¢ excelente e também fago isso, contudo, nilo desabilto as opgdes de estatisticas do SQL Server, pois penso que ele pode criar novas estatiticas e atualizar estatisticas de tabelas menores para otimizar a performance. As tabelas maiores que podiam causar uma perda de performance, teriam as estatisticas atualizadas somente na rotina da noite. ‘Segue post deste blog sobre esse assunto: Rotina para Atualizar as Estatisticas do seu Banco de Dados ARTIGO sobre Protheus (Totys) Fiz uma busca no google e encontrei apenas o artigo abaixo do meu amigo Marcel Inowe (Biog[Liwitter) falando sobre 0 assunto e nele tem uma dica que ainda néfo implantei em produso que ¢ 0 particionamento de tabelas. Mais uma agiio que posso realizar para melhorar 0 desempenho do meu ambiente SQL Server com Protheus. Seria o sexto motivo para contratar um DBA ou uma Consultoria SQL SERVER, Artigo: hitp:/4sqlserver, wordpress,cony2012/00/1 2/dicas-sobre-o-banco-de-dados-do-protheustotvs/ Finalizando esse post, para quem esti com problema de performance OU nao quer que um problema de performance aconteca em seu ambiente Protheus com SQL Server, voeé tem trés opgdes: Caso vocé jé tenha um DBA na sua empresa, eke pode trabalhar nessas customizagdes caso ainda ndo tenha feito. + Caso sua empresa seja pequena nio tenha um DBA FULL Time, pode contratar meus servigos de Consultoria SQL Server ou o servigo de consultoria de outra empresa para implementar essas methorias. * Comprar um Hardware de maior desempenho, que na maioria das vezes € a solugdo indicada pela Totus. Antes de comprar um servidor novo para resolver um problema de lentidao no seu ambiente, contrate um especialista SQL Server e pega para ele fazer um Tuning no seu banco de dados. A economia de niio comprar um novo Hardware vai pagar a consultoria ¢ ainda sobrard $8! Quem tiver outras dicas e puder compartihar nos comentarios, seria de grande contribuigdo para o post. Abracos, Fabricio Franga Lima MCTIP - Database Administrator Trabalha com SQL Server desde 2006 tp:ebciotima nevelgi2013112/145-retives-pare-quer- liza protheus-tohs-cotratar-ume-dbe-sql-serer! an

Você também pode gostar