{"id":1106,"date":"2019-05-27T01:23:12","date_gmt":"2019-05-27T04:23:12","guid":{"rendered":"http:\/\/thesqltimes.com\/blog\/?p=1106"},"modified":"2019-05-27T11:39:25","modified_gmt":"2019-05-27T14:39:25","slug":"desempenho-do-processador-x-desempenho-do-sql-server-parte-4","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2019\/05\/27\/desempenho-do-processador-x-desempenho-do-sql-server-parte-4\/","title":{"rendered":"Desempenho do Processador x Desempenho do SQL Server \u2013 Parte 4"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"1106\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><div class=\"seriesmeta\">Post 4\/4. Este post \u00e9 parte da s\u00e9rie: <a href=\"https:\/\/thesqltimes.com\/blog\/series\/desempenho-do-processador-x-desempenho-do-sql-server\/\" class=\"series-225\" title=\"Desempenho do Processador x Desempenho do SQL Server\">Desempenho do Processador x Desempenho do SQL Server<\/a>\r\n<\/div>\r\n<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 7<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span><p>Quando falamos de desempenho de processador, estamos falando de tempo, conforme j\u00e1 foi mostrado nos posts anteriores desta s\u00e9rie. A conta \u00e9 simples:\u00a0 Um processador mais r\u00e1pido significa que executa instru\u00e7\u00f5es em menos tempo!<\/p>\n<p>Mas como o tempo de CPU \u00e9 transformado em uma porcentagem? Essa foi uma pergunta que me fizeram h\u00e1 anos: Quantos por cento significa esses tempos reportados nas DMVs do SQL Server? Eu fui atr\u00e1s das respostas e isto gerou at\u00e9 um <a href=\"https:\/\/www.devmedia.com.br\/revista-sql-magazine-144\/37693\">artigo que foi capa na SQL Magazine<\/a>!<\/p>\n<p>No SQL Server, a famosa <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-exec-requests-transact-sql?view=sql-server-2017\">sys.dm_exec_requests<\/a> tem uma coluna chamada cpu_time.\u00a0 Voc\u00ea tamb\u00e9m conheceu o <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/statements\/set-statistics-time-transact-sql?view=sql-server-2017\">SET STATISTICS TIME<\/a>, que traz informa\u00e7\u00f5es sobre tempo de CPU gasto por queries em uma determinada sess\u00e3o. E ainda h\u00e1 muitos outros lugares que reportam tempos de CPU dentro do SQL. Qual \u00e9 a rela\u00e7\u00e3o desses tempos com o percentual de CPU reportado no gerenciador de tarefas, por exemplo?<\/p>\n<p>A resposta \u00e9 simples, mas para entend\u00ea-la, vamos voltar um pouco pro sistema operacional!<\/p>\n<h2>Tempo Total de CPU<\/h2>\n<p>A m\u00e9trica mais simples de entender, \u00e9 o tempo total de CPU. Ela \u00e9 apenas um valor, geralmente em microssegundos ou milissegundos, indicando por quanto tempo a CPU foi usada para completar uma opera\u00e7\u00e3o, ou, quando a opera\u00e7\u00e3o ainda n\u00e3o foi completada, quanto tempo de CPU j\u00e1 foi gasto at\u00e9 o momento. O SQL Server consegue mensurar o tempo de CPU gasto por suas opera\u00e7\u00f5es gra\u00e7as ao Windows, que cuida de manter essa informa\u00e7\u00e3o atualizada, e a fornece aos processos, quando eles precisam!<\/p>\n<p>Basicamente, o Windows guarda as informa\u00e7\u00f5es de tempo de CPU por thread. Uma thread representa uma sequ\u00eancia de instru\u00e7\u00f5es. Todo processo (programa em execu\u00e7\u00e3o), tem pelo menos uma thread e com o SQL Server n\u00e3o \u00e9 diferente. Cada thread pode executar em apenas uma CPU por vez (e uma CPU \u00e9 capaz de rodar apenas uma thread), e o Windows \u00e9 respons\u00e1vel por decidir qual thread vai rodar em qual CPU.<\/p>\n<p>&nbsp;<\/p>\n<p id=\"yucWgGy\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb25da34afc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1138 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb25da34afc.png\" alt=\"\" width=\"582\" height=\"574\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb25da34afc.png 582w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb25da34afc-300x296.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Sempre que o Windows coloca uma thread em uma CPU, ele periodicamente vai atualizando o tempo em que esta thread est\u00e1 rodando na CPU. Sendo assim, at\u00e9 que a thread seja encerrada, o Windows mant\u00e9m um tempo total de CPU gasto para cada uma das threads existentes, de cada processo.<\/p>\n<figure id=\"attachment_1139\" aria-describedby=\"caption-attachment-1139\" style=\"width: 1160px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1139 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8.png\" alt=\"\" width=\"1160\" height=\"416\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8.png 1160w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8-300x108.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8-768x275.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3acec6fb8-1024x367.png 1024w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><\/a><figcaption id=\"caption-attachment-1139\" class=\"wp-caption-text\">A imagem mostra uma linha do tempo com duas threads de exemplo (que podem ser do mesmo processo, ou de processos diferentes). A medida que o Windows retira e coloca threads para execu\u00e7\u00e3o, ele vai atualizando as informa\u00e7\u00f5es de execu\u00e7\u00e3o! A frequ\u00eancia com que essa atualiza\u00e7\u00e3o \u00e9 feita depende de muitos fatores, mas \u00e9 em quest\u00e3o de millisegundos<\/figcaption><\/figure>\n<p>Com essa informa\u00e7\u00e3o \u00e9 poss\u00edvel que qualquer outro programa possa monitorar o consumo de CPU de qualquer opera\u00e7\u00e3o. Por exemplo, para que o SQL Server saiba quanto tempo de CPU um comando gastou, ele poderia utilizar os seguintes passos:<\/p>\n<ol>\n<li>Obter o tempo total de CPU gasto at\u00e9 agora pela thread que vai rodar a query.<\/li>\n<li>Deixa a query rodar at\u00e9 o final<\/li>\n<li>Depois que a query rodar, basta subtrair\u00a0 o tempo total da thread, pelo tempo capturado no passo 1.<\/li>\n<\/ol>\n<p>Por exemplo, vamos supor que o SQL Server v\u00e1 rodar um comando SELECT.\u00a0 Para que este comando execute, uma thread (que dentro do SQL Server, ele chama de worker) j\u00e1 est\u00e1 associada com essa execu\u00e7\u00e3o, ent\u00e3o ele pode fazer o seguinte:<\/p>\n<ul>\n<li>Obter (do Windows) o tempo total de CPU que essa thread j\u00e1 gastou durante a vida dela. Suponha que seja 2000 millisegundos. Vamos chamar de TempoInicio = 2000<\/li>\n<li>Executa a query&#8230;<\/li>\n<li>Ap\u00f3s a execu\u00e7\u00e3o, obter novamente o tempo total e CPU que a thread gastou. Como a thread precisou rodar a query, certamente ela precisou entrar algumas vezes na CPU, aumentando o valor do seu tempo total de CPU. Suponha que tenha aumentado para 3000ms. Vamos chamar de TempoFim = 3000<\/li>\n<li>Agora \u00e9 s\u00f3 calcular:\u00a0 TempoFim &#8211; TempoInicio = 3000 &#8211; 2000 = 1000ms<\/li>\n<li>Ou seja, a query gastou 1000ms de CPU!<\/li>\n<\/ul>\n<p id=\"BcWHGoF\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3cb13aea0.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1140 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3cb13aea0.png\" alt=\"\" width=\"954\" height=\"333\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3cb13aea0.png 954w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3cb13aea0-300x105.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb3cb13aea0-768x268.png 768w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/a><\/p>\n<p>Voc\u00ea vai ver que, utilizando esta mesma l\u00f3gica, o SQL Server consegue registrar diversas informa\u00e7\u00f5es de tempo de CPU, n\u00e3o somente para cada query que executa, mas para outros n\u00edveis como requests, sess\u00f5es, tempo de compila\u00e7\u00e3o, por pool do Resource Governor, etc.<\/p>\n<p>Todo esse exemplo foi considerando queries que rodam sem paralelismo. Com paralelismo, a conta tem apenas uma pequena varia\u00e7\u00e3o, mas segue todos esse princ\u00edpios. Veremos em outros posts da s\u00e9rie.<\/p>\n<p>&nbsp;<\/p>\n<h2>Percentual de uso de CPU<\/h2>\n<p>O percentual de tempo de CPU j\u00e1 \u00e9 um valor um pouquinho mais elaborado. Como \u00e9 uma porcentagem, ele \u00e9 um valor que se baseia em um total. Voc\u00ea j\u00e1 se perguntou quanto \u00e9 o 100% de CPU?<\/p>\n<p>Muitos podem pensar que o 100% significa estar usando a capacidade m\u00e1xima da CPU.\u00a0 Mas esse percentual, n\u00e3o tem nada a ver com capacidade, at\u00e9 porqu\u00ea ou h\u00e1 algo executando na CPU, ou n\u00e3o h\u00e1.<\/p>\n<p>Essa informa\u00e7\u00e3o \u00e9 calculada usando um intervalo de tempo previamente definido. A ideia \u00e9 contabilizar quanto desse intervalo de tempo foi gasto processando algo na CPU. Por exemplo, se em um intervalo de 1 segundo, 400 ms foram gastos processando algo, ent\u00e3o podemos dizer que a CPU esteve utilizada por 40% daquele intervalo de 1 segundo (400ms\/1000ms).<\/p>\n<p>E \u00e9 assim que a maioria das ferramentas do Windows fazem: Elas coletam o tempo total de CPU de uma thread, e ap\u00f3s um certo intervalo, coletam novamente. Ent\u00e3o, para calcular quanto foi gasto de CPU nesse intervalo, elas apenas subtraem a segunda coleta pela primeira, e dividem pelo intervalo que se passou. A f\u00f3rmula \u00e9 essa:<\/p>\n<p>(T2 &#8211; T1)\/Intervalo<\/p>\n<p><em>Onde T2, \u00e9 o tempo total de CPU da segunda coleta, T1 \u00e9 o da primeira, e Intervalo \u00e9 tempo que se passou.<\/em><\/p>\n<p>Ou seja, uma thread que gaste 100% de CPU, significa que durante todo o intervalo que se passou, ela n\u00e3o saiu da CPU. Geralmente, esse intervalo \u00e9 de 1 segundo, sendo que a maioria das ferramentas de monitoramento permite que voc\u00ea altere este valor.<\/p>\n<p>Repare a diferen\u00e7a entre total de cpu, e percentual de utiliza\u00e7\u00e3o de CPU. O total de cpu \u00e9 um valor acumulado que representa tudo o que um recurso (thread, query, request, sess\u00e3o, etc.) gastou durante toda sua vida. J\u00e1 o percentual de uso de CPU \u00e9 um valor relativo, indicando o uso de CPU em um dado momento no tempo.<\/p>\n<p>&nbsp;<\/p>\n<h2>Tempo de CPU x Percentual de CPU<\/h2>\n<p>Isso cria situa\u00e7\u00f5es interessantes com as quais voc\u00ea pode se deparar: Por exemplo, imagine uma query que tenha gasto 2 segundos para executar na CPU. Esse \u00e9 o tempo total de CPU. Dependendo de diversos fatores, ela pode ter ocasionado v\u00e1rios padr\u00f5es de percentual uso de CPU:<\/p>\n<p>&nbsp;<\/p>\n<h4 id=\"smPJbBd\">Exemplo 1<\/h4>\n<p id=\"Jxdnwqf\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1149 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6.png\" alt=\"\" width=\"1040\" height=\"522\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6.png 1040w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6-300x151.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6-768x385.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6-1024x514.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5d389c4f6-720x360.png 720w\" sizes=\"auto, (max-width: 1040px) 100vw, 1040px\" \/><\/a><\/p>\n<ul>\n<li>Entre o intervalo 1 e 2, gastou 500 ms de CPU, causando 50% de uso<\/li>\n<li>Entre o intervalo 2 e 3 n\u00e3o gastou nada (por esperar disco por exemplo), ocasionando 0% de CPU<\/li>\n<li>Entre o intervalo 3 e 4, gastou 1 segundo, ocasionando 100%<\/li>\n<li>Entre o intervalo 4 e 5, n\u00e3o gastou nada (devido a locks, por exemplo), ocasionando 0% de CPU<\/li>\n<li>Entre o valor 5 e 6, ter gasto mais 500ms, ocasionando 50%<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h4 id=\"smPJbBd\">Exemplo 2<\/h4>\n<p id=\"dgSBrcZ\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1147 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130.png\" alt=\"\" width=\"1040\" height=\"486\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130.png 1040w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130-300x140.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130-768x359.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5bb637130-1024x479.png 1024w\" sizes=\"auto, (max-width: 1040px) 100vw, 1040px\" \/><\/a><\/p>\n<ul>\n<li>Entre o intervalo 1 e 2,\u00a0 gastou 700ms, ocasionando 70% de uso<\/li>\n<li>Entre o intervalo 2 e 3, gastou 1s, ocasionando 100% de uso<\/li>\n<li>Entre o intervalo 3 e 4, e 4 e 5, gastou nada, ocasionando 0%<\/li>\n<li>Entre o intervalo 5 e 6, gastou 300ms, ocasionando 30% de uso<\/li>\n<\/ul>\n<h4 id=\"smPJbBd\">Exemplo 3<\/h4>\n<p id=\"EFVXoaG\"><a href=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1148 size-full\" src=\"http:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485.png\" alt=\"\" width=\"1040\" height=\"512\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485.png 1040w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485-300x148.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485-768x378.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2019\/05\/img_5ceb5ca843485-1024x504.png 1024w\" sizes=\"auto, (max-width: 1040px) 100vw, 1040px\" \/><\/a><\/p>\n<ul>\n<li>Entre o intervalo 1 e 2,\u00a0 gastou nada (0%)<\/li>\n<li>Entre o intervalo 2 e 3, gastou 1s (100%)<\/li>\n<li>Entre o intervalo 2 e 3, gastou 1s (100%)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Perceba como a mesma query, com o mesmo tempo total de CPU, pode apresentar diferentes padr\u00f5es de percentual de utiliza\u00e7\u00e3o, devido a teoria por detr\u00e1s destes conceitos! Isso nos leva a uma terceira defini\u00e7\u00e3o de tempo que est\u00e1 envolvido nisso tudo: O tempo de dura\u00e7\u00e3o! O tempo de dura\u00e7\u00e3o (elapsed time) \u00e9 o tempo total gasto para executar a query, incluindo o tempo de CPU e o tempo de espera.<\/p>\n<p>Por exemplo, no exemplo 1 e 2, a query teve dura\u00e7\u00e3o de 6 segundos, desses 6, 2 segundos foram gastos com CPU! J\u00e1 no exemplo 3, a dura\u00e7\u00e3o foi de 3 segundos, gastando os mesmos 2 segundosde CPU.<\/p>\n<p>\u00c9 por esse simples motivo, que o SQL Server reporta tempos completamente diferentes e que as vezes n\u00e3o fazem sentido algum quando voc\u00ea compara com a porcentagem reportada no Gerenciador de Tarefas.\u00a0 Na maior parte das informa\u00e7\u00f5es fornecidas pelo SQL Server, ele est\u00e1 falando de &#8220;tempo total de CPU&#8221; e n\u00e3o de &#8220;percentual de utiliza\u00e7\u00e3o&#8221;.\u00a0 O tempo total de CPU \u00e9 um acumulado durante toda a opera\u00e7\u00e3o, enquanto que o percentual de utiliza\u00e7\u00e3o \u00e9 baseado em determinado momento no tempo. Ent\u00e3o, n\u00e3o tem como voc\u00ea dizer quantos por cento foi gasto por uma query que gastou 2 segundos CPU no passado. Voc\u00ea\u00a0 precisaria ter capturado isso no momento em que ela foi executada.<\/p>\n<p>O SQL Server fornece informa\u00e7\u00f5es de consumo de CPU em v\u00e1rios n\u00edveis, como por query, por sess\u00e3o, por requests, etc. Ao longo de outros posts desta s\u00e9rie, iremos explorar mais estes conceitos e observar com alguns exemplos pr\u00e1ticos como podemos utiliz\u00e1-los para fazer uma melhor an\u00e1lise do consumo de CPU no SQL Server!<\/p>\n<p>&#8212;<\/p>\n<p>E se voc\u00ea quer aprender mais sobre SQL Server e o Windows, n\u00e3o deixe de fazer o curso <strong>Fundamentos de Windows para DBA SQL Server &#8211; M\u00f3dulo 1<\/strong>! Tem v\u00e1rias perguntas pra testar seu conhecimento, certificado de conclus\u00e3o, e mais de 30 minutos FREE sobre algumas ferramentas que todo usu\u00e1rio do Windows precisa conhecer! Confira em <a href=\"https:\/\/cursos.fabriciolima.net\">https:\/\/cursos.fabriciolima.net<\/a>\u00a0e enxergue novas formas de administrar seu ambiente SQL!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"seriesmeta\">This entry is part 4 of 4 in the series <a href=\"https:\/\/thesqltimes.com\/blog\/series\/desempenho-do-processador-x-desempenho-do-sql-server\/\" class=\"series-225\" title=\"Desempenho do Processador x Desempenho do SQL Server\">Desempenho do Processador x Desempenho do SQL Server<\/a><\/div><p>Quando falamos de desempenho de processador, estamos falando de tempo, conforme j\u00e1 foi mostrado nos posts anteriores desta s\u00e9rie. A conta \u00e9 simples:\u00a0 Um processador mais r\u00e1pido significa que executa instru\u00e7\u00f5es em menos tempo! Mas como o tempo de CPU \u00e9 transformado em uma porcentagem? Essa foi uma pergunta que me fizeram h\u00e1 anos: Quantos&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2019\/05\/27\/desempenho-do-processador-x-desempenho-do-sql-server-parte-4\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Desempenho do Processador x Desempenho do SQL Server \u2013 Parte 4<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1138,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[9,3,1,93],"tags":[246,31,234,244,245,73],"series":[225],"class_list":["post-1106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arquitetura","category-banco-de-dados-2","category-uncategorized","category-windows","tag-consumo","tag-cpu","tag-cpu-time","tag-percentual","tag-processor-time","tag-sql-server","series-desempenho-do-processador-x-desempenho-do-sql-server"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=1106"}],"version-history":[{"count":8,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1106\/revisions"}],"predecessor-version":[{"id":1152,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1106\/revisions\/1152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1138"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1106"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}