{"id":4649,"date":"2016-06-22T08:30:23","date_gmt":"2016-06-22T11:30:23","guid":{"rendered":"http:\/\/www.fabriciolima.net\/blog\/?p=4350"},"modified":"2016-07-23T14:51:34","modified_gmt":"2016-07-23T17:51:34","slug":"queries-do-dia-a-dia-monitorando-contadores-de-forma-simples-via-dmv","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2016\/06\/22\/queries-do-dia-a-dia-monitorando-contadores-de-forma-simples-via-dmv\/","title":{"rendered":"Queries do Dia a Dia &#8211; Monitorando Contadores de forma simples via DMV"},"content":{"rendered":"<p>Ol\u00e1 Pessoal,<\/p>\n<p>Hoje vou compartilhar com voc\u00eas mais um script que utilizo nos clientes que realizo um <a href=\"https:\/\/www.fabriciolima.net\/consultoria-remota\/dba-remoto\/\" target=\"_blank\">monitoramento di\u00e1rio do SQL Server<\/a>.<\/p>\n<p>Realizando uma busca na internet voc\u00ea encontra algumas formas de monitorar contadores no SQL Server. Voc\u00ea pode enviar dados do perfmon para um arquivo e depois importar para o SQL Server, pode fazer alguma rotina em powershell, pode usar uma ferramenta de terceiro e etc&#8230;<\/p>\n<p>Normalmente, antes de analisar contadores mais espec\u00edficos em um ambiente, eu crio uma rotina para monitorar apenas 4 contadores que consigo pegar <strong>facilmente<\/strong> via DMV (existem outros contadores que tamb\u00e9m podem ser monitorados por essa mesma DMV).<\/p>\n<p>A DMV que nos d\u00e1 essa informa\u00e7\u00e3o \u00e9 a sys.<em><strong>dm_os_performance_counters<\/strong><\/em>. Fa\u00e7a um select * nela para validar se existem outros contadores que possam ser interessantes para voc\u00ea.<\/p>\n<p>J\u00e1 vi casos dessa DMV n\u00e3o retornar informa\u00e7\u00f5es. Existem algumas solu\u00e7\u00f5es no google para isso, e se acontecer com voc\u00ea, seu amigo ser\u00e1 o google. Tem muito tempo que n\u00e3o pego esse problema, e n\u00e3o lembro qual solu\u00e7\u00e3o me atendeu na \u00e9poca. (viu Fabr\u00edcio&#8230; n\u00e3o colocou no blog sobre isso, n\u00e3o lembra mais&#8230; Bem feito&#8230; =\\&#8230;)<\/p>\n<p>Se consigo pegar de forma bem simples alguns contadores, porque n\u00e3o criar uma Baseline para isso?<\/p>\n<p>Seguem os contadores que vou monitorar nessa rotina:<\/p>\n<ul>\n<li><strong><span style=\"text-decoration: underline;\">BatchRequests<\/span><span style=\"text-decoration: underline;\">:<\/span><\/strong> Transa\u00e7\u00f5es por segundo no SQL Server (bom para monitorar como est\u00e1 a utiliza\u00e7\u00e3o do banco de dados);<\/li>\n<li><strong><span style=\"text-decoration: underline;\">User<\/span><span style=\"text-decoration: underline;\"> Connection:<\/span><\/strong> Quantidade de conex\u00f5es no banco de dados (bom para monitorar quando temos um maior n\u00famero de usu\u00e1rios conectados).\n<ul>\n<li>Esse log de conex\u00f5es me ajudou a desvendar um problema em um cliente onde o SQL Server estava chegando ao seu limite de conex\u00f5es que \u00e9 de 32.767 conex\u00f5es. Mas isso j\u00e1 \u00e9 assunto para um futuro post no Blog;<\/li>\n<\/ul>\n<\/li>\n<li><strong><span style=\"text-decoration: underline;\">CPU:<\/span><\/strong> Consumo de CPU do servidor (bom para acompanhar o consumo de CPU);<\/li>\n<li><strong><span style=\"text-decoration: underline;\">Page Life <\/span><span style=\"text-decoration: underline;\">Expectancy<\/span><span style=\"text-decoration: underline;\">:<\/span><\/strong> Expectativa de vida em segundos de uma p\u00e1gina na mem\u00f3ria do SQL Server (bom para monitorar se voc\u00ea est\u00e1 mantendo dados em cache por muito tempo, evitando acessos a disco).<\/li>\n<\/ul>\n<p>Para criar essa rotina, basta abrir o arquivo abaixo na base que deseja criar esse log e executar o script:<\/p>\n<p><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/06\/Historico_Contadores_SQLServer.txt\" target=\"_blank\">Historico_Contadores_SQLServer<\/a><\/p>\n<p>O script vai criar as tabelas abaixo:<\/p>\n<ul>\n<li><strong>Contador<\/strong><\/li>\n<li><strong>Registro_Contador<\/strong><\/li>\n<\/ul>\n<p>E a procedure que far\u00e1 a carga dos dados nas Tabelas:<\/p>\n<ul>\n<li><strong>stpCarga_ContadoresSQL<\/strong><\/li>\n<\/ul>\n<p>Depois de executar o script, basta criar um job para executar a procedure <em><strong>stpCarga_ContadoresSQL<\/strong><\/em> a cada 1 minuto, ou menos, caso queira informa\u00e7\u00f5es mais precisas.<\/p>\n<p>Essa procedure demora 5 segundos para rodar devido a um <em><strong>waitfor delay<\/strong> <\/em>que existe dentro dela. Ela \u00e9 bem leve e n\u00e3o impacta na performance do seu ambiente.<\/p>\n<p>Ap\u00f3s executado, voc\u00ea pode conferir os contadores armazenados com o Script abaixo:<\/p>\n<pre class=\"lang:tsql decode:true \">SELECT Dt_Log, Nm_Contador, Valor\r\nFROM Registro_Contador A\r\nJOIN Contador B ON A.Id_Contador = B.Id_Contador\r\nORDER BY Nm_Contador, Dt_Log<\/pre>\n<p>Segue o resultado ap\u00f3s 3 execu\u00e7\u00f5es da procedure:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/POSTContadoresPerformance.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-4352 aligncenter\" title=\"POSTContadoresPerformance\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/POSTContadoresPerformance.jpg\" alt=\"\" width=\"312\" height=\"232\" \/><\/a><\/p>\n<p>N\u00e3o se esque\u00e7a de criar um outro job para excluir dados antigos para que a tabela Registro_Contador n\u00e3o cres\u00e7a muito.<\/p>\n<p>Se hoje voc\u00ea j\u00e1 tem seu monitoramento de contadores mais completo, parab\u00e9ns!!! Permane\u00e7a com ele.<\/p>\n<p>Se hoje n\u00e3o monitora nada, esses 4 contadores j\u00e1 s\u00e3o um bom come\u00e7o.<\/p>\n<p>\u00c9 um script simples, mas j\u00e1 est\u00e1 a\u00ed prontinho para voc\u00eas utilizarem caso achem interessante.<\/p>\n<p><b>Gostou dessa dica?<\/b><\/p>\n<p>Cadastre seu e-mail para receber novos Posts e curta minha <a href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\">P\u00e1gina no Facebook<\/a> para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Aprenda a criar essa e muitas outras rotinas importantes para o seu dia a dia de DBA no meu <a href=\"https:\/\/www.fabriciolima.net\/cursos-online\/treinamento-tarefas-do-dia-a-dia-de-um-dba-online\/\" target=\"_blank\">Treinamento de Tarefas do Dia a Dia de um DBA<\/a>.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>MCITP \u2013 Database Administrator<\/p>\n<p>Consultor e Instrutor SQL Server<\/p>\n<p>Trabalha com SQL Server desde 2006<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas mais um script que utilizo nos clientes que realizo um monitoramento di\u00e1rio do SQL Server. Realizando uma busca na internet voc\u00ea encontra algumas formas de monitorar contadores no SQL Server. Voc\u00ea pode enviar dados do perfmon para um arquivo e depois importar para o SQL Server, pode fazer [&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":"","jetpack_post_was_ever_published":false},"categories":[3,942,1248,33,280],"tags":[1325,1330,1322,1323,1268,1328,25,80,1332,1329,1327,120,1324,1331,1326],"class_list":["post-4649","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-consultoria-sql-server","category-queries-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-batch-requestssec","tag-consumo-cpu-sql-server","tag-contadores","tag-contadores-sql-server","tag-cpu","tag-cpu-sql-server","tag-dmv","tag-dm_os_performance_counters","tag-ferramenta-contadores","tag-monitoramento-cpu-sql-server","tag-monitorando-cpu","tag-page-life-expectancy","tag-perfmon","tag-performance-monitor","tag-user-connections"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":6982,"url":"https:\/\/fabriciolima.net\/blog\/2017\/05\/01\/criando-um-e-mail-de-checklist-diario-no-sql-server\/","url_meta":{"origin":4649,"position":0},"title":"Criando um E-mail de CheckList Di\u00e1rio no SQL Server","author":"Fabr\u00edcio Lima","date":"1 de maio de 2017","format":false,"excerpt":"Update dia 22\/09\/2019: Veja nesse post uma nova vers\u00e3o para a cria\u00e7\u00e3o desse Checklist para seu BD SQL Server junto com outros 40 alertas: http:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ \u00a0 \u00a0 Ol\u00e1 Pessoal, No dia 07\/03\/2010 eu fiz meu primeiro post para esse blog: Apresenta\u00e7\u00e3o Contudo, foi no dia 24\/03\/2010 que eu comecei a\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"checklist","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/01\/checklist.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":12055,"url":"https:\/\/fabriciolima.net\/blog\/2020\/04\/19\/monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-cpu\/","url_meta":{"origin":4649,"position":1},"title":"Monitoramento no SQL Server &#8211; O que fazer quando receber um alerta de CPU?","author":"Fabr\u00edcio Lima","date":"19 de abril de 2020","format":false,"excerpt":"Fala Pessoal, Em Setembro de 2019 liberei uma nova vers\u00e3o dos meus scripts para a cria\u00e7\u00e3o de 40 alertas no SQL Server: https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ Legal Fabr\u00edcio, mas o que eu fa\u00e7o quando receber esses Alertas? Esse \u00e9 o quinto v\u00eddeo para ajudar a dar essa resposta para voc\u00eas. Nesse v\u00eddeo vou\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/z7Gu_ufXuzs\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":7833,"url":"https:\/\/fabriciolima.net\/blog\/2017\/05\/23\/migrando-um-sql-server-2008-totvs-protheus-para-o-sql-server-2016-standard\/","url_meta":{"origin":4649,"position":2},"title":"Migrando um SQL Server 2008 Totvs Protheus para o SQL Server 2016 Standard","author":"Fabr\u00edcio Lima","date":"23 de maio de 2017","format":false,"excerpt":"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\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/05\/sql2016Totvs.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3129,"url":"https:\/\/fabriciolima.net\/blog\/2014\/11\/03\/treinamento-sql-server-tarefas-do-dia-a-dia-de-um-dba\/","url_meta":{"origin":4649,"position":3},"title":"Treinamento SQL Server: Tarefas do dia a dia de um DBA","author":"Fabr\u00edcio Lima","date":"3 de novembro de 2014","format":false,"excerpt":"\u00a0 Ol\u00e1 Pessoal, Um amigo quer entrar para a \u00e1rea de administra\u00e7\u00e3o de banco de dados e me solicitou um treinamento que abordasse as atividades de um DBA no seu dia a dia de trabalho. Diante disso, resolvi preparar um treinamento para ele, mas abrirei o treinamento para mais 4\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/11\/Treinamento.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":7402,"url":"https:\/\/fabriciolima.net\/blog\/2019\/02\/06\/query-store-01-introducao\/","url_meta":{"origin":4649,"position":4},"title":"Query Store (#01) &#8211; Introdu\u00e7\u00e3o","author":"Fabr\u00edcio Lima","date":"6 de fevereiro de 2019","format":false,"excerpt":"Fala Pessoal, O Query Store hoje j\u00e1 n\u00e3o \u00e9 novidade para ningu\u00e9m, disponibilizado desde o SQL Server 2016, temos v\u00e1rios posts e v\u00eddeos que j\u00e1 falam um pouco dessa feature. Contudo, pretendo fazer uma s\u00e9rie de post para tentar cobrir de uma forma mais detalhada as funcionalidades, benef\u00edcios e poss\u00edveis\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/QueryStore.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":206,"url":"https:\/\/fabriciolima.net\/blog\/2010\/12\/25\/casos-do-dia-a-dia-diminuindo-um-problema-de-memoria-no-sql-server\/","url_meta":{"origin":4649,"position":5},"title":"Casos do Dia a Dia &#8211; Diminu\u00edndo um problema de mem\u00f3ria no SQL Server","author":"Fabr\u00edcio Lima","date":"25 de dezembro de 2010","format":false,"excerpt":"\ufeff Fala Pessoal, Em meu ambiente de trabalho, possuo um servidor 32 bits com o SQL Server 2005 32 bits,\u00a0com 4 GB de mem\u00f3ria e com a op\u00e7\u00e3o \/3GB habilitada. Esse servidor possui uma m\u00e9dia de 1500 conex\u00f5es simult\u00e2neas no banco de dados durante o hor\u00e1rio de pico e possui\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2010\/12\/3.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/4649","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=4649"}],"version-history":[{"count":0,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/4649\/revisions"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=4649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=4649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=4649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}