{"id":425,"date":"2016-02-11T12:15:08","date_gmt":"2016-02-11T12:15:08","guid":{"rendered":"http:\/\/www.tiagoneves.net\/blog\/?p=425"},"modified":"2019-09-06T13:06:52","modified_gmt":"2019-09-06T13:06:52","slug":"contencao-de-tempdb-como-resolver","status":"publish","type":"post","link":"https:\/\/www.tiagoneves.net\/blog\/contencao-de-tempdb-como-resolver\/","title":{"rendered":"Conten\u00e7\u00e3o de Tempdb, como resolver?"},"content":{"rendered":"<p>Ol\u00e1 pessoal, tudo certo?<\/p>\n<p>Como no Brasil o ano s\u00f3 come\u00e7a depois do carnaval, estamos de volta com as baterias recarregadas para mais um ano de muitos compartilhamento de informa\u00e7\u00e3o e conhecimento.<\/p>\n<p>Neste primeiro post do ano quero compartilhar com voc\u00eas a experi\u00eancia que tive logo na primeira semana do ano. A principal inst\u00e2ncia da empresa que trabalho come\u00e7ou a ter s\u00e9rios problemas de performance, ao realizar uma analise percebi que estava tendo uma quantidade muito elevada de PAGELATCH_UP, que significa que estava tendo uma conten\u00e7\u00e3o no Tempdb, especificamente uma conten\u00e7\u00e3o na PFS (Page Free Space), que \u00e9 respons\u00e1vel por registrar o status de aloca\u00e7\u00e3o de cada pagina, ou seja, respons\u00e1vel por mapear a quantidade de espa\u00e7o livre tem cada pagina.<\/p>\n<p>O que me chamou a aten\u00e7\u00e3o para o problema de conten\u00e7\u00e3o foi o resultado da execu\u00e7\u00e3o da <a href=\"http:\/\/whoisactive.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">sp_whoisactive<\/a>, mostrando v\u00e1rios wait_info de PAGELATCH_UP:tempdb:1(PFS).<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png\"  rel=\"lightbox[425] attachment wp-att-435\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-435\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?resize=678%2C162\" alt=\"contencao_tempdb_result_spwhoisactive\" width=\"678\" height=\"162\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?w=1753&amp;ssl=1 1753w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?resize=300%2C72&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?resize=768%2C183&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?resize=1024%2C244&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_spwhoisactive.png?w=1356&amp;ssl=1 1356w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Ao verificar o resultado acima executei um script que utilizo, desenvolvido pelo Paul Randal (<a href=\"http:\/\/www.sqlskills.com\/blogs\/paul\/wait-statistics-or-please-tell-me-where-it-hurts\/\">link<\/a>).<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true \">WITH [Waits] AS\n    (SELECT\n        [wait_type],\n        [wait_time_ms] \/ 1000.0 AS [WaitS],\n        ([wait_time_ms] - [signal_wait_time_ms]) \/ 1000.0 AS [ResourceS],\n        [signal_wait_time_ms] \/ 1000.0 AS [SignalS],\n        [waiting_tasks_count] AS [WaitCount],\n        100.0 * [wait_time_ms] \/ SUM ([wait_time_ms]) OVER() AS [Percentage],\n        ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum]\n    FROM sys.dm_os_wait_stats\n    WHERE [wait_type] NOT IN (\n        N'BROKER_EVENTHANDLER',             N'BROKER_RECEIVE_WAITFOR',\n        N'BROKER_TASK_STOP',                N'BROKER_TO_FLUSH',\n        N'BROKER_TRANSMITTER',              N'CHECKPOINT_QUEUE',\n        N'CHKPT',                           N'CLR_AUTO_EVENT',\n        N'CLR_MANUAL_EVENT',                N'CLR_SEMAPHORE',\n        N'DBMIRROR_DBM_EVENT',              N'DBMIRROR_EVENTS_QUEUE',\n        N'DBMIRROR_WORKER_QUEUE',           N'DBMIRRORING_CMD',\n        N'DIRTY_PAGE_POLL',                 N'DISPATCHER_QUEUE_SEMAPHORE',\n        N'EXECSYNC',                        N'FSAGENT',\n        N'FT_IFTS_SCHEDULER_IDLE_WAIT',     N'FT_IFTSHC_MUTEX',\n        N'HADR_CLUSAPI_CALL',               N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',\n        N'HADR_LOGCAPTURE_WAIT',            N'HADR_NOTIFICATION_DEQUEUE',\n        N'HADR_TIMER_TASK',                 N'HADR_WORK_QUEUE',\n        N'KSOURCE_WAKEUP',                  N'LAZYWRITER_SLEEP',\n        N'LOGMGR_QUEUE',                    N'ONDEMAND_TASK_QUEUE',\n        N'PWAIT_ALL_COMPONENTS_INITIALIZED',\n        N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',\n        N'QDS_SHUTDOWN_QUEUE',\n        N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',\n        N'REQUEST_FOR_DEADLOCK_SEARCH',     N'RESOURCE_QUEUE',\n        N'SERVER_IDLE_CHECK',               N'SLEEP_BPOOL_FLUSH',\n        N'SLEEP_DBSTARTUP',                 N'SLEEP_DCOMSTARTUP',\n        N'SLEEP_MASTERDBREADY',             N'SLEEP_MASTERMDREADY',\n        N'SLEEP_MASTERUPGRADED',            N'SLEEP_MSDBSTARTUP',\n        N'SLEEP_SYSTEMTASK',                N'SLEEP_TASK',\n        N'SLEEP_TEMPDBSTARTUP',             N'SNI_HTTP_ACCEPT',\n        N'SP_SERVER_DIAGNOSTICS_SLEEP',     N'SQLTRACE_BUFFER_FLUSH',\n        N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',\n        N'SQLTRACE_WAIT_ENTRIES',           N'WAIT_FOR_RESULTS',\n        N'WAITFOR',                         N'WAITFOR_TASKSHUTDOWN',\n        N'WAIT_XTP_HOST_WAIT',              N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',\n        N'WAIT_XTP_CKPT_CLOSE',             N'XE_DISPATCHER_JOIN',\n        N'XE_DISPATCHER_WAIT',              N'XE_TIMER_EVENT')\n    AND [waiting_tasks_count] &gt; 0\n )\nSELECT\n    MAX ([W1].[wait_type]) AS [WaitType],\n    CAST (MAX ([W1].[WaitS]) AS DECIMAL (16,2)) AS [Wait_S],\n    CAST (MAX ([W1].[ResourceS]) AS DECIMAL (16,2)) AS [Resource_S],\n    CAST (MAX ([W1].[SignalS]) AS DECIMAL (16,2)) AS [Signal_S],\n    MAX ([W1].[WaitCount]) AS [WaitCount],\n    CAST (MAX ([W1].[Percentage]) AS DECIMAL (5,2)) AS [Percentage],\n    CAST ((MAX ([W1].[WaitS]) \/ MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgWait_S],\n    CAST ((MAX ([W1].[ResourceS]) \/ MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgRes_S],\n    CAST ((MAX ([W1].[SignalS]) \/ MAX ([W1].[WaitCount])) AS DECIMAL (16,4)) AS [AvgSig_S]\nFROM [Waits] AS [W1]\nINNER JOIN [Waits] AS [W2]\n    ON [W2].[RowNum] &lt;= [W1].[RowNum]\nGROUP BY [W1].[RowNum]\nHAVING SUM ([W2].[Percentage]) - MAX ([W1].[Percentage]) &lt; 95; -- percentage threshold\nGO<\/pre>\n<p>Que comprovou que o Wait Type que estava gerando o gargalo na minha inst\u00e2ncia era o PAGELATCH_UP.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_waittypes.png\"  rel=\"lightbox[425] attachment wp-att-437\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-437\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_waittypes.png?resize=678%2C95\" alt=\"contencao_tempdb_result_waittypes\" width=\"678\" height=\"95\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_waittypes.png?w=764&amp;ssl=1 764w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_result_waittypes.png?resize=300%2C42&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Para identificar que estava tendo um problema de conten\u00e7\u00e3o na Tempdb executei um outro script no momento da lentid\u00e3o, que identifica os wait_type e diz qual o tipo de recurso que ele esta gerando gargalo.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true \">Select session_id,\nwait_type,\nwait_duration_ms,\nblocking_session_id,\nresource_description,\n      ResourceType = Case\nWhen Cast(Right(resource_description, Len(resource_description) - Charindex(':', resource_description, 3)) As Int) - 1 % 8088 = 0 Then 'Is PFS Page'\n            When Cast(Right(resource_description, Len(resource_description) - Charindex(':', resource_description, 3)) As Int) - 2 % 511232 = 0 Then 'Is GAM Page'\n            When Cast(Right(resource_description, Len(resource_description) - Charindex(':', resource_description, 3)) As Int) - 3 % 511232 = 0 Then 'Is SGAM Page'\n            Else 'Is Not PFS, GAM, or SGAM page'\n            End\nFrom sys.dm_os_waiting_tasks\nWhere wait_type Like 'PAGE%LATCH_%'\nAnd resource_description Like '2:%'\n\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png\"  rel=\"lightbox[425] attachment wp-att-439\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-439\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?resize=678%2C204\" alt=\"contencao_tempdb_PFS_PAGE\" width=\"678\" height=\"204\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?w=1824&amp;ssl=1 1824w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?resize=300%2C90&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?resize=768%2C232&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?resize=1024%2C309&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_PFS_PAGE.png?w=1356&amp;ssl=1 1356w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>O resultado acima mostra que o database id 2, que \u00e9 o Tempdb, o arquivo de dados 1, e a pagina 1 que \u00e9 a PFS estava sofrendo com o PAGELATCH_UP e estava gerando a lentid\u00e3o da inst\u00e2ncia.<\/p>\n<p>Uma das poss\u00edveis solu\u00e7\u00e3o e at\u00e9 mesmo evitar que este problema ocorra, \u00e9 adicionar mais arquivos de dados ao Tempdb, para que o SQL Server possa distribuir as requisi\u00e7\u00f5es.<\/p>\n<p>Quando criamos v\u00e1rios arquivos de dados para o Tempdb o SQL Server passa a utilizar um algoritmo de preenchimento proporcional para determinar qual arquivo ele vai utilizar para cada requisi\u00e7\u00e3o. Os arquivos devem ser configurados no mesmo tamanho e ter o mesmo autogrowth, eles podem estar no mesmo disco, mas recomendo se poss\u00edvel colocar em discos separados por quest\u00e3o de IO no disco.<\/p>\n<p>Quanto a quantidade de arquivos de dados em linha geral a Microsoft recomenda 1 arquivo de dados para 1CPU l\u00f3gica, se o numero de processadores l\u00f3gicos for maior que 8, \u00e9 recomendado usar 8 arquivos, porem se a conten\u00e7\u00e3o persistir aumente o numero de arquivos de dados em m\u00faltiplos de 4 at\u00e9 o numero de processadores l\u00f3gicos (<a href=\"https:\/\/support.microsoft.com\/pt-br\/kb\/2154845\">https:\/\/support.microsoft.com\/pt-br\/kb\/2154845<\/a>).<\/p>\n<p>Para adicionar adicionar os arquivos de dados voc\u00ea pode fazer via GUI, ou por script, nesta demo como o meu servidor est\u00e1 configurado com 4 processadores estou adicionando mais 3 arquivos de dados totalizando 4 arquivos de dados para 4 processadores.<\/p>\n<pre class=\"theme:ssms2012 lang:tsql decode:true \">USE [master]\nGO\nALTER DATABASE [tempdb] ADD FILE ( NAME = N'Tempdb_1_Data', FILENAME = N'H:\\tempdb_1_data.ndf' , SIZE = 5120000KB , MAXSIZE = 15360000KB , FILEGROWTH = 1048576KB )\nGO\nALTER DATABASE [tempdb] ADD FILE ( NAME = N'Tempdb_2_Data', FILENAME = N'I:\\tempdb_2_data.ndf' , SIZE = 5120000KB , MAXSIZE = 15360000KB , FILEGROWTH = 1048576KB )\nGO\nALTER DATABASE [tempdb] ADD FILE ( NAME = N'Tempdb_3_Data', FILENAME = N'J:\\tempdb_3_data.ndf' , SIZE = 5120000KB , MAXSIZE = 15360000KB , FILEGROWTH = 1049600KB )\nGO\nALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', SIZE = 5120000KB , MAXSIZE = 15360000KB , FILEGROWTH = 1048576KB )\nGO\n<\/pre>\n<p>Ou via interface gr\u00e1fica.<\/p>\n<p>Bot\u00e3o direito no tempdb<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File.png\"  rel=\"lightbox[425] attachment wp-att-441\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-441\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File.png?resize=487%2C402\" alt=\"contencao_tempdb_Add_Tempdb_File\" width=\"487\" height=\"402\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File.png?w=487&amp;ssl=1 487w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File.png?resize=300%2C248&amp;ssl=1 300w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/a><\/p>\n<p>Propriedades &#8211; Files<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_Properties.png\"  rel=\"lightbox[425] attachment wp-att-442\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-442\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_Properties.png?resize=678%2C610\" alt=\"contencao_tempdb_Add_Tempdb_File_Properties\" width=\"678\" height=\"610\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_Properties.png?w=704&amp;ssl=1 704w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_Properties.png?resize=300%2C270&amp;ssl=1 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Adiciona os arquivos, os arquivos pode ser adicionado todos no mesmo disco, mas por boa pratica \u00e9 recomendado que coloque os arquivos em discos separados.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png\"  rel=\"lightbox[425] attachment wp-att-443\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-443\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png?resize=678%2C327\" alt=\"contencao_tempdb_Add_Tempdb_File_add_files\" width=\"678\" height=\"327\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png?w=1311&amp;ssl=1 1311w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png?resize=768%2C371&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_Add_Tempdb_File_add_files.png?resize=1024%2C494&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/a><\/p>\n<p>Ap\u00f3s a adi\u00e7\u00e3o dos novos arquivos \u00e9 necess\u00e1rio reiniciar a inst\u00e2ncia, ap\u00f3s reiniciar a inst\u00e2ncia o SQL Server vai come\u00e7ar a distribuir as requisi\u00e7\u00f5es entre os arquivos,<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_affeter_add_archive.png\"  rel=\"lightbox[425] attachment wp-att-444\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-444\" src=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_affeter_add_archive.png?resize=352%2C330\" alt=\"contencao_tempdb_affeter_add_archive\" width=\"352\" height=\"330\" srcset=\"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_affeter_add_archive.png?w=352&amp;ssl=1 352w, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/02\/contencao_tempdb_affeter_add_archive.png?resize=300%2C281&amp;ssl=1 300w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/a><\/p>\n<p>O problema de performance por conten\u00e7\u00e3o do Tempdb foi solucionado na inst\u00e2ncia, venho acompanhando os contadores para verificar se tem tido muitas ocorr\u00eancias de\u00a0 PAGELATCH_UP, o que n\u00e3o vem acontecendo.<\/p>\n<p>Bom por hoje \u00e9 isso, e que o ano comece de maneira produtiva para todos e que Deus nos ajude.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Tiago Neves<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 pessoal, tudo certo? Como no Brasil o ano s\u00f3 come\u00e7a depois do carnaval, estamos de volta com as baterias recarregadas para mais um ano de muitos compartilhamento de informa\u00e7\u00e3o e conhecimento. Neste primeiro post do ano quero compartilhar com voc\u00eas a experi\u00eancia que tive logo na primeira semana do ano. A principal inst\u00e2ncia da [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_91251433_91251433":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","_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,"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpscppro_dont_share_socialmedia":false,"_wpscppro_custom_social_share_image":0,"_facebook_share_type":"","_twitter_share_type":"","_linkedin_share_type":"","_pinterest_share_type":"","_linkedin_share_type_page":"","_instagram_share_type":"","_medium_share_type":"","_threads_share_type":"","_google_business_share_type":"","_selected_social_profile":[],"_wpsp_enable_custom_social_template":false,"_wpsp_social_scheduling":{"enabled":false,"datetime":null,"platforms":[],"status":"template_only","dateOption":"today","timeOption":"now","customDays":"","customHours":"","customDate":"","customTime":"","schedulingType":"absolute"},"_wpsp_active_default_template":true},"categories":[2,20,5],"tags":[106,107,54,35,110,105,109,108],"class_list":["post-425","post","type-post","status-publish","format-standard","hentry","category-casos-do-dia-a-dia","category-sqlserver-geral","category-virtual-pass-br","tag-contencao","tag-lentidao","tag-performance","tag-sql-server","tag-sql-server-performance","tag-tempdb","tag-wait-types","tag-wait_stats"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6eIyh-6R","jetpack-related-posts":[{"id":2414,"url":"https:\/\/www.tiagoneves.net\/blog\/sql-server-2016-esta-chegando-ao-fim-do-suporte-o-que-isso-significa-na-pratica\/","url_meta":{"origin":425,"position":0},"title":"SQL Server 2016 est\u00e1 chegando ao fim do suporte: o que isso significa na pr\u00e1tica?","author":"tiagoneves","date":"27 de abril de 2026","format":false,"excerpt":"O SQL Server 2016 ter\u00e1 seu suporte estendido encerrado em 14 de julho de 2026, o que resultar\u00e1 na falta de atualiza\u00e7\u00f5es de seguran\u00e7a e suporte. Continuar usando essa vers\u00e3o traz riscos como vulnerabilidades e n\u00e3o conformidade regulat\u00f3ria. Planejar a migra\u00e7\u00e3o para vers\u00f5es mais recentes ou cloud deve ser prioridade\u2026","rel":"","context":"Em &quot;Seguran\u00e7a&quot;","block_context":{"text":"Seguran\u00e7a","link":"https:\/\/www.tiagoneves.net\/blog\/category\/seguranca\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/04\/sql_server_2016_eos_v3.png?fit=772%2C702&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/comments?post=425"}],"version-history":[{"count":6,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/425\/revisions"}],"predecessor-version":[{"id":2214,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/posts\/425\/revisions\/2214"}],"wp:attachment":[{"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/media?parent=425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/categories?post=425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tiagoneves.net\/blog\/wp-json\/wp\/v2\/tags?post=425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}