{"id":7833,"date":"2017-05-23T09:38:49","date_gmt":"2017-05-23T12:38:49","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=7833"},"modified":"2020-10-10T14:36:50","modified_gmt":"2020-10-10T17:36:50","slug":"migrando-um-sql-server-2008-totvs-protheus-para-o-sql-server-2016-standard","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2017\/05\/23\/migrando-um-sql-server-2008-totvs-protheus-para-o-sql-server-2016-standard\/","title":{"rendered":"Migrando um SQL Server 2008 Totvs Protheus para o SQL Server 2016 Standard"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7843 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs.png\" alt=\"\" width=\"406\" height=\"248\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs.png 627w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs-300x183.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs-410x250.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs-100x61.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs-275x168.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs-20x12.png 20w\" sizes=\"auto, (max-width: 406px) 100vw, 406px\" \/><\/p>\n<p>Fala Pessoal,<\/p>\n<p>Hoje vou compartilhar com voc\u00eas sobre uma migra\u00e7\u00e3o que fiz em um cliente no in\u00edcio do m\u00eas.<\/p>\n<p>Cen\u00e1rio Antigo:<\/p>\n<ul>\n<li>Windows Server 2008<\/li>\n<li>SQL Server 2008 R2 Standard<\/li>\n<li>Servidor \u00fanico (migra\u00e7\u00e3o para o mesmo Hardware)<\/li>\n<\/ul>\n<p>Novo Cen\u00e1rio:<\/p>\n<ul>\n<li>Windows Server 2012 R2<\/li>\n<li>SQL Server 2016 Standard Edition<\/li>\n<\/ul>\n<p>Como n\u00e3o t\u00ednhamos um hardware em paralelo para fazer uma migra\u00e7\u00e3o Side-by-Side que \u00e9 a mais r\u00e1pida e segura, tivemos que formatar o servidor para reinstalar o Sistema Operacional e o SQL Server. Contudo, as letras das bases do SQL Server ficavam em um Storage e foram\u00a0mantidas na formata\u00e7\u00e3o.<\/p>\n<h6>Atividades pr\u00e9-virada<\/h6>\n<ul>\n<li>Instalar o SQL Server 2016 em uma VM para homologa\u00e7\u00e3o<\/li>\n<li>Testar as aplica\u00e7\u00f5es apontadas para o SQL Server 2016<\/li>\n<li>Documentar todo o ambiente pois vamos ter que formatar o servidor. Se esquecer de algo, lascou!!!\n<ul>\n<li>Localiza\u00e7\u00e3o das bases<\/li>\n<li>Localiza\u00e7\u00e3o da instala\u00e7\u00e3o<\/li>\n<li>Collation da Inst\u00e2ncia<\/li>\n<li>Configura\u00e7\u00e3o de mem\u00f3ria do SQL<\/li>\n<li>Configura\u00e7\u00f5es\u00a0avan\u00e7adas da Inst\u00e2ncia<\/li>\n<li>Servi\u00e7os do SQL Instalados<\/li>\n<li>Usu\u00e1rios dos servi\u00e7os do SQL Server, Agent e etc&#8230;<\/li>\n<li>Tem alguma procedure na master ou msdb? (n\u00e3o deveria, mas \u00e9 bom conferir)<\/li>\n<li>Configura\u00e7\u00f5es do Database Mail<\/li>\n<li>Usa plano de Manuten\u00e7\u00e3o? (confere)<\/li>\n<li>Etc&#8230;<\/li>\n<\/ul>\n<\/li>\n<li>Executar o DMA (<a href=\"https:\/\/luanmorenodba.com\/2017\/02\/21\/data-migration-assistant-dma-realizando-migraes-para-o-sql-server-2016\/\" target=\"_blank\" rel=\"noopener noreferrer\">Data Migration Assist<\/a>) para identificar poss\u00edveis problemas de incompatibilidade das bases.\n<ul>\n<li>Nesse teste do DMA, identifiquei duas bases com problema e repassei ao cliente que teve que acertar essas bases antes de migrar.<\/li>\n<li>Ele mostra inclusive o nome das procedures, functions ou views que est\u00e3o com c\u00f3digos incompat\u00edveis. Sensacional!!!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h6>Pouco antes da migra\u00e7\u00e3o realizei as atividades abaixo:<\/h6>\n<ul>\n<li>Gerar os scripts de logins para recriar posteriormente com a mesma senha.\n<ul>\n<li><a href=\"https:\/\/support.microsoft.com\/pt-br\/help\/918992\/how-to-transfer-logins-and-passwords-between-instances-of-sql-server\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/support.microsoft.com\/pt-br\/help\/918992\/how-to-transfer-logins-and-passwords-between-instances-of-sql-server<\/a><\/li>\n<li>Logins <strong>sysadmin<\/strong>, n\u00e3o s\u00e3o recriados como sysadmin. Dessa forma, voc\u00ea deve documentar para dar esse acesso manualmente na nova instala\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<li>Gerar os Scripts dos Jobs, Operators e Linked Server direto no SSMS (F7-&gt;Seleciona os objetos-&gt;Generate Script).\n<ul>\n<li>Cuidado que LS que tem password, o script n\u00e3o\u00a0\u00e9 gerado com essa senha. Ter\u00e1 que ter a senha para recriar no novo server.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h6>Atividades Durante a Virada<\/h6>\n<p>Esse cliente tinha um Mirror configurado e 24 bases na inst\u00e2ncia. Dentre elas uma de 528 GB e outra de 252 GB.<\/p>\n<p>O servidor de mirror tem uma capacidade muito menor e por isso n\u00e3o foi utilizado para fazer uma migra\u00e7\u00e3o Side-by-Side. A produ\u00e7\u00e3o\u00a0teve que se manter no mesmo hardware. O objetivo desse mirror \u00e9 apenas ter o dado espelhado.<\/p>\n<p>O planejado foi iniciar a virada as 19:00h de sexta-feira.<\/p>\n<p><strong>Atividades:<\/strong><\/p>\n<ul>\n<li>Executar Backup FULL \u00e0s 17:00 (dura\u00e7\u00e3o de 1h e 30 min)<\/li>\n<li>Parar os Sistemas<\/li>\n<li>Desabilitar os Jobs do SQL Server<\/li>\n<li>Rodar um \u00faltimo backup do log (Agora tenho o backup da madrugada passada + todos os bkps do log do dia &#8211; <strong>C\u00f3pia 1<\/strong>)<\/li>\n<li>Executar um backup Diferencial \u00a0(Agora tenho o backup FULL e Diferencial que acabei de executar &#8211; <strong>C\u00f3pia 2<\/strong>)<\/li>\n<li>Retirar as bases do Mirror (Agora tenho as bases sincronizadas no servidor de Mirror &#8211; <strong>C\u00f3pia 3<\/strong>)<\/li>\n<li>Alterar o n\u00edvel de compatibilidade das bases para 100 (SQL 2008).\u00a0J\u00e1 que o menor n\u00edvel no SQL Server 2016 \u00e9 100, j\u00e1 estou fazendo logo antes de dar um attach nas bases.<\/li>\n<li>Realizar um Detach das bases (Agora tenho as bases no disco de Storage e que ser\u00e3o mantidos e utilizados para fazer o Attach quando reinstalar o servidor &#8211; <strong>C\u00f3pia 4<\/strong>)<\/li>\n<\/ul>\n<p>Isso que \u00e9 DBA medroso &#8211; <strong>C\u00f3pia 1, 2, 3 e 4!!!!<\/strong> #DBA #DBAMedroso #Soumesmo<\/p>\n<ul>\n<li>Formatar o servidor\n<ul>\n<li>Essa parte \u00e9 a mais demorada, at\u00e9 formatar e instalar todos os milhares de updates do windows, configurar Storage e etc&#8230;<\/li>\n<\/ul>\n<\/li>\n<li>Instalar o SQL Server 2016, o Service Pack 1 e o CU mais recente que nesse caso era o 2.<\/li>\n<li>Configurar o SQL Server nas melhores pr\u00e1ticas e de acordo com tudo o que foi documentado da instala\u00e7\u00e3o anterior<\/li>\n<li>Realizar um Attach das bases<\/li>\n<li>Criar os usu\u00e1rios com os scripts que geramos<\/li>\n<li>Criar os Jobs, LS e Operators\n<ul>\n<li>Se tentar criar os usu\u00e1rios e jobs antes das bases, vai ter problema, pois n\u00e3o ter\u00e1 a database default dos logins e n\u00e3o ter\u00e1 as databases dos steps dos jobs.<\/li>\n<\/ul>\n<\/li>\n<li>Subir os sistemas<\/li>\n<li>Testar os sistemas<\/li>\n<li>Realizar um novo backup FULL no SQL Server 2016<\/li>\n<li>Executar um CheckDB ap\u00f3s a migra\u00e7\u00e3o<\/li>\n<li>Atualizar as estat\u00edsticas ap\u00f3s a migra\u00e7\u00e3o<\/li>\n<\/ul>\n<p><strong>Aqui que identifiquei um grande problema.<\/strong><\/p>\n<h6>Regra m\u00e1gica dos Arquivos do Tempdb<\/h6>\n<p>Voc\u00eas j\u00e1 est\u00e3o cansados de\u00a0ver por a\u00ed que TEMOS que criar v\u00e1rios arquivos para o tempdb de acordo com o n\u00famero de cores\u00a0que temos, mas com uma limita\u00e7\u00e3o de 8 arquivos inicialmente. O pr\u00f3prio SQL Server 2016 no momento da instala\u00e7\u00e3o j\u00e1 faz esse trabalho para n\u00f3s agora.<\/p>\n<p>Se voc\u00ea separar isso em discos diferentes, show de bola. Voc\u00ea \u00e9 rico e tem v\u00e1rios discos diferentes para o tempdb. Mas na pr\u00e1tica isso \u00e9 dif\u00edcil de acontecer.<\/p>\n<p>Mesmo sem separar em discos diferentes, essa cria\u00e7\u00e3o de v\u00e1rios arquivos para o TEMPDB \u00e9 indicada com o intuito de reduzir conten\u00e7\u00f5es nas p\u00e1ginas GAM, SGAM e PFS.<\/p>\n<p>Mas e ai, essa receita de bolo <strong>SEMPRE<\/strong> funciona?<\/p>\n<p>S\u00f3 dar next-&gt;next-&gt;finish no instalador do 2016 que ele j\u00e1 vai criar esse monte de arquivo para mim e isso sempre \u00e9 bom?<\/p>\n<p><strong>Veja bem&#8230;<\/strong><\/p>\n<p>No meu caso, a vers\u00e3o antiga do sql server tinha 1 arquivo do tempdb. Como o servidor tinha 16 cores, o SQL Server 2016 sugeriu 8 arquivos para o tempdb durante a instala\u00e7\u00e3o.\u00a0Para n\u00e3o fazer uma mudan\u00e7a t\u00e3o dr\u00e1stica do que tinha antes para o novo SQL Server, eu criei apenas 4 arquivos para o tempdb (#DBAMedroso).<\/p>\n<p>O pessoal fez os testes dos sistemas tranquilo at\u00e9 que eu comecei a atualizar as estat\u00edsticas das bases.<\/p>\n<p>Ao colocar um UPDATE STATISTICS WITH FULL_SCAN o SQL Server engargalou o disco onde estava o TEMPDB.<\/p>\n<p>Olha um dos retornos da DMV\u00a0dm_io_pending_io_requests:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-7837\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV.png\" alt=\"\" width=\"551\" height=\"391\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV.png 784w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-300x213.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-768x545.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-700x496.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-410x291.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-100x71.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-275x195.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusDMV-20x14.png 20w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Olha as mensagens no Error Log:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7836 \" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog.png\" alt=\"\" width=\"1017\" height=\"98\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog.png 1482w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-300x29.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-1024x99.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-768x74.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-700x68.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-410x40.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-100x10.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-275x27.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/postmigracaoprotheusErrorLog-20x2.png 20w\" sizes=\"auto, (max-width: 1017px) 100vw, 1017px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff0000;\"><em>&#8220;SQL Server has encountered 253 occurrence of I\/O requests taking longer than 15 seconds to complete on file T:\\&#8230;.&#8221;<\/em><\/span><\/p>\n<p>Minha conclus\u00e3o foi que com o aumento de arquivos do tempdb, o sql passou a requisitar muito mais I\/O para o Storage e ele n\u00e3o aguentou a press\u00e3o. Isso porque deixei s\u00f3 quatro arquivos, imagina se tivesse deixado o default da instala\u00e7\u00e3o de 8 arquivos? <strong>A receita de bolo para arquivos do tempdb poderia me gerar problemas na migra\u00e7\u00e3o.<\/strong><\/p>\n<p>Tive que fazer o rollback e deixar apenas 1 arquivo para o tempdb. Feito isso o update statistics parou de gerar todo esse gargalo no disco.<\/p>\n<p>Imagina se\u00a0na segunda-feira com a produ\u00e7\u00e3o bombando, o disco do tempdb resouvesse agarrar dessa forma?<\/p>\n<p>Agora, quando eu tiver mais IOPS do Storage, poderei\u00a0aumentar os arquivos do tempdb para\u00a0evitar os gargalos da GAM, SGAM e PFS.<\/p>\n<h6>N\u00edvel de Compatibilidade x Query Store<\/h6>\n<ul>\n<li>A \u00faltima atividade que ficou pendente da migra\u00e7\u00e3o \u00e9 subir o n\u00edvel de compatibilidade das bases para o 2016.<\/li>\n<\/ul>\n<p>Mas antes de fazer isso, habilitei o <strong>Query Store<\/strong> para coletar informa\u00e7\u00f5es sobre os planos de execu\u00e7\u00e3o e ap\u00f3s alterar o n\u00edvel de compatibilidade, conferir se tivemos alguma regress\u00e3o de planos.<\/p>\n<p>Quando migramos o SQL Server de vers\u00e3o, a ideia \u00e9 que as queries rodem mais r\u00e1pidas com as melhorias implementadas na Engine, contudo, algumas queries mais espec\u00edficas podem ficar mais lentas e temos que identificar esses casos para tratar.<\/p>\n<p>Dito e feito!<\/p>\n<p>Ap\u00f3s mudar o n\u00edvel de compatibilidade, algumas queries passaram a rodar mais lentas. Veja o que nosso novo best friend Query Store me mostrou:<\/p>\n<p>Query 1:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7881\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2.png\" alt=\"\" width=\"562\" height=\"265\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2.png 730w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-300x141.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-700x330.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-410x193.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-100x47.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-275x130.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/migracaoQueryStore2-20x9.png 20w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<p>Query 2:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7882\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1.png\" alt=\"\" width=\"559\" height=\"271\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1.png 726w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-300x145.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-700x339.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-410x199.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-100x48.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-275x133.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/MigracaoQueryStore1-20x10.png 20w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/p>\n<p>Conseguem ver que ap\u00f3s o dia 16, foi gerado um novo plano para essas duas queries com um tempo de dura\u00e7\u00e3o muito maior?<\/p>\n<p>Identifiquei isso em algumas queries que mereciam aten\u00e7\u00e3o.<\/p>\n<p>Duas delas faziam join no WHERE:<\/p>\n<p>SELECT &#8230;<br \/>\nFROM SE5010 SE5 , SA1010 SA1 , SE1010 SE1<br \/>\nWHERE &#8230;<\/p>\n<p>Criei alguns \u00edndices para essas queries, o SQL passou a usar um novo plano com meus \u00edndices e elas passaram a rodar r\u00e1pidas novamente.<\/p>\n<p>Thanks <strong>Query Store<\/strong> por tornar minha vida mais f\u00e1cil em uma migra\u00e7\u00e3o.<\/p>\n<h6><strong>Compacta\u00e7\u00e3o de dados<\/strong><\/h6>\n<p>J\u00e1 comentei isso em outros posts nesse blog:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2013\/12\/14\/5-motivos-para-quem-utiliza-o-protheus-totvs-contratar-um-dba-sql-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2013\/12\/14\/5-motivos-para-quem-utiliza-o-protheus-totvs-contratar-um-dba-sql-server\/<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2016\/11\/21\/tem-sql-server-standard-na-sua-empresa-hora-de-planejar-a-migracao-para-o-sql-server-2016\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2016\/11\/21\/tem-sql-server-standard-na-sua-empresa-hora-de-planejar-a-migracao-para-o-sql-server-2016\/<\/a><\/li>\n<\/ul>\n<p>Compacta\u00e7\u00e3o de dados para bases Totvs Protheus \u00e9 sensacional!!! S\u00f3 com esse argumento estou conseguindo convencer alguns clientes a migrar para o 2016 Standard SP1 que liberou a compacta\u00e7\u00e3o.<\/p>\n<p>Olha o resultado nesse cliente:<\/p>\n<p>Base de <strong>252 GB<\/strong> reduziu para 7<strong>2 GB<\/strong><\/p>\n<p>Base de <strong>528 GB<\/strong> reduziu para <strong>152 GB<\/strong><\/p>\n<p><strong>Juntando todas as bases tivemos uma redu\u00e7\u00e3o de 955 GB para 280 GB.<\/strong> <span style=\"color: #ff0000;\"><strong>70% de ganho. Amazing!!!<\/strong><\/span><\/p>\n<p>Como nesse cliente CPU n\u00e3o era um problema, utilizei compress\u00e3o de p\u00e1gina para todos os \u00edndices. Em um ambiente que j\u00e1 tem um consumo alto de CPU, minha dica \u00e9 ir compactando aos poucos e ir monitorando o consumo de CPU.<\/p>\n<p>Mas e a CPU Fabr\u00edcio, como ficou?<\/p>\n<p>Nesse cliente, o consumo de CPU era muito baixo (menos de 10% de m\u00e9dia). Identifiquei um aumento de 1% apenas.<\/p>\n<p>E a utiliza\u00e7\u00e3o de mem\u00f3ria, como ficou?<\/p>\n<p>Veja com os pr\u00f3prios olhos a diferen\u00e7a do contador Page Life Expectance:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7848 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance.png\" alt=\"\" width=\"431\" height=\"274\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance.png 675w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance-300x191.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance-410x261.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance-100x64.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance-275x175.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/PageLifeExpectance-20x13.png 20w\" sizes=\"auto, (max-width: 431px) 100vw, 431px\" \/><\/p>\n<p>Ele tinha uma m\u00e9dia di\u00e1ria de 4 mil e\u00a0chegou at\u00e9 51mil de m\u00e9dia no dia 11\/05.<\/p>\n<p>Isso acontece porque as p\u00e1ginas agora v\u00e3o compactadas para a mem\u00f3ria e conseguimos manter mais p\u00e1ginas em mem\u00f3ria. A migra\u00e7\u00e3o\/compacta\u00e7\u00e3o fez um efeito semelhante a voc\u00ea ter comprado mais mem\u00f3ria para o server.<\/p>\n<p><strong>Resumindo:<\/strong><\/p>\n<p><strong>Disco:<\/strong> Reduziu demais o consumo (Economia de Storage)<\/p>\n<p><strong>Mem\u00f3ria:<\/strong> Est\u00e1 muito melhor aproveitada (Economizamos um upgrade de mem\u00f3ria)<\/p>\n<p><strong>CPU:<\/strong> Aumento insignificante no consumo para esse cliente. (Lembrando que cada caso \u00e9 um caso)<\/p>\n<p>Com essa melhor utiliza\u00e7\u00e3o do disco e mem\u00f3ria, acaba que tamb\u00e9m <strong>ganhamos uma melhoria de performance para o ambiente.<\/strong> Exceto casos onde a CPU \u00e9 um gargalo (Lembrando que cada caso \u00e9 um caso).<\/p>\n<p>Ufa&#8230; Post ficou um pouco grande, mas ficou legal&#8230;<\/p>\n<p>\u00c9 isso a\u00ed pessoal. Espero que tenha te ajudado caso esteja planejando uma migra\u00e7\u00e3o para o SQL Server 2016.<\/p>\n<p>Se voc\u00ea tem um ambiente\u00a0Protheus Totvs, migre para ontem. Em alguns casos o custo de armazenamento pode amenizar bem o investimento nas licen\u00e7as.<\/p>\n<p>Esse cliente vai ficar um bom tempo sem ter\u00a0que aumentar o Storage para o SQL (ele j\u00e1 estava perto de ter que fazer isso).<\/p>\n<p>At\u00e9 o pr\u00f3ximo Casos do Dia a Dia do Fabricio Lima.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Atualizado no dia 07\/10\/2020:<\/strong><\/span><\/p>\n<p>Publiquei um curso com 11 horas de dura\u00e7\u00e3o com toda minha experi\u00eancia de anos no assunto e de dezenas de clientes Protheus atendidos:<\/p>\n<p>Curso:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/cursos.powertuning.com.br\/course?courseid=melhorando-a-performance-de-consultas-no-totvs-protheus\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Melhorando a Performance de Consultas no Totvs Protheus<\/a><\/p>\n<p>Gravei uma aula gr\u00e1tis com 60 minutos de dura\u00e7\u00e3o sobre o que voc\u00ea deve aprender para melhorar a performance no Protheus:<\/p>\n<div class=\"fluid-width-video-wrapper\"><a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/watch?v=BKmUa3aZn6s\" target=\"_blank\" rel=\"noopener noreferrer nofollow external\" data-wpel-link=\"external\">https:\/\/www.youtube.com\/watch?v=BKmUa3aZn6s<\/a><\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no <a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"external nofollow noopener noreferrer\" data-wpel-link=\"external\">Youtube<\/a> e curta minha <a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"external nofollow noopener noreferrer\" data-wpel-link=\"external\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Hoje vou compartilhar com voc\u00eas sobre uma migra\u00e7\u00e3o que fiz em um cliente no in\u00edcio do m\u00eas. Cen\u00e1rio Antigo: Windows Server 2008 SQL Server 2008 R2 Standard Servidor \u00fanico (migra\u00e7\u00e3o para o mesmo Hardware) Novo Cen\u00e1rio: Windows Server 2012 R2 SQL Server 2016 Standard Edition Como n\u00e3o t\u00ednhamos um hardware em paralelo para [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,6,942,33,280],"tags":[1027,1387,1517,1523,1518,1516,1393,1519,1520,1042,1020,1522,1534,1535,1362,1536,1521,1015],"class_list":["post-7833","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-casos-do-dia-a-dia","category-consultoria-sql-server","category-sql-server","category-virtual-pass-br","tag-compactacao-de-dados","tag-compressao-de-dados","tag-database-migration-assistant","tag-dicas-migracao-sql-server","tag-migracao-protheus","tag-migracao-sql-server","tag-migracao-sql-server-2016","tag-migracao-totvs","tag-migrar-sql-server-2016","tag-protheus","tag-protheus-sql-server","tag-protheus-sql-server-2016","tag-rm","tag-rm-totvs","tag-sql-server-2016","tag-sql-server-2016-standard","tag-sql-server-protheus","tag-totvs"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/7833","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=7833"}],"version-history":[{"count":1,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/7833\/revisions"}],"predecessor-version":[{"id":13847,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/7833\/revisions\/13847"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=7833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=7833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=7833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}