{"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\/\" target=\"_blank\" rel=\"noopener\">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\" target=\"_blank\" rel=\"noopener\">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&#8230;<\/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","_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},"jetpack_post_was_ever_published":false,"_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":942,"url":"https:\/\/www.tiagoneves.net\/blog\/isolation-level-no-sql-server\/","url_meta":{"origin":425,"position":0},"title":"Isolation Level no SQL Server","author":"tiagoneves","date":"30 de maio de 2017","format":false,"excerpt":"Ol\u00e1 pessoal, tudo certo? Depois de um tempo sem postar nada t\u00e9cnico estamos de volta. No post de hoje quero tentar explicar um pouco sobre n\u00edveis de isolamento do SQL Server. O comportamento entre duas transa\u00e7\u00f5es simult\u00e2neas depende da configura\u00e7\u00e3o do n\u00edvel de isolamento configurado. No SQL Server temos 5\u2026","rel":"","context":"Em &quot;SQLServer Geral&quot;","block_context":{"text":"SQLServer Geral","link":"https:\/\/www.tiagoneves.net\/blog\/category\/sqlserver-geral\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2017\/05\/Isolation_Level_Version_Tempdb.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2017\/05\/Isolation_Level_Version_Tempdb.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2017\/05\/Isolation_Level_Version_Tempdb.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":511,"url":"https:\/\/www.tiagoneves.net\/blog\/descobrindo-a-quanto-tempo-a-instancia-esta-up\/","url_meta":{"origin":425,"position":1},"title":"Descobrindo a quanto tempo a inst\u00e2ncia est\u00e1 UP","author":"tiagoneves","date":"31 de mar\u00e7o de 2016","format":false,"excerpt":"Ol\u00e1 pessoal, No post de hoje vou compartilhar com voc\u00eas como descobrir o tempo que o servi\u00e7o do SQL Server est\u00e1 em execu\u00e7\u00e3o no seu servidor. Para obter essa informa\u00e7\u00e3o vamos utilizar a DMV dm_os_sys_info ela retorna informa\u00e7\u00f5es sobre os recursos que a inst\u00e2ncia est\u00e1 consumindo, al\u00e9m da data que\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"ServicoEmExecucao","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/03\/ServicoEmExecucao.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/03\/ServicoEmExecucao.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/03\/ServicoEmExecucao.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2016\/03\/ServicoEmExecucao.png?resize=700%2C400 2x"},"classes":[]},{"id":1209,"url":"https:\/\/www.tiagoneves.net\/blog\/instalando-o-sql-server-2017\/","url_meta":{"origin":425,"position":2},"title":"Instalando o SQL Server 2017","author":"tiagoneves","date":"16 de janeiro de 2018","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? Espero que todos tenham come\u00e7ado bem o ano de 2018. Bom como \u00e9 de conhecimento da grande maioria em Outubro de 2017, a Microsoft lan\u00e7ou o SQL Server 2017, esse que talvez seja o maior lan\u00e7amento dos \u00faltimos tempos, pois agora o SQL Server finalmente vai\u2026","rel":"","context":"Em &quot;Microsoft&quot;","block_context":{"text":"Microsoft","link":"https:\/\/www.tiagoneves.net\/blog\/category\/microsoft\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/01\/Install_SQLSERVER2017_WindowsServer_Installation_Concluida_Sucesso.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/01\/Install_SQLSERVER2017_WindowsServer_Installation_Concluida_Sucesso.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/01\/Install_SQLSERVER2017_WindowsServer_Installation_Concluida_Sucesso.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2018\/01\/Install_SQLSERVER2017_WindowsServer_Installation_Concluida_Sucesso.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2431,"url":"https:\/\/www.tiagoneves.net\/blog\/atualizacao-estatisticas-sql-server-vldb\/","url_meta":{"origin":425,"position":3},"title":"Estat\u00edsticas SQL Server em VLDB: Por Que Atualizar Pode Ser Melhor Que Rebuild de \u00cdndices","author":"tiagoneves","date":"1 de junho de 2026","format":false,"excerpt":"Descubra por que a atualiza\u00e7\u00e3o de estat\u00edsticas SQL Server pode gerar mais performance que rebuild de \u00edndices em ambientes VLDB e janelas curtas de manuten\u00e7\u00e3o.","rel":"","context":"Em &quot;Tuning&quot;","block_context":{"text":"Tuning","link":"https:\/\/www.tiagoneves.net\/blog\/category\/tuning\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2026\/06\/StatisticsXRebuild.png?resize=700%2C400 2x"},"classes":[]},{"id":307,"url":"https:\/\/www.tiagoneves.net\/blog\/restaurando-databases-de-sistemas\/","url_meta":{"origin":425,"position":4},"title":"Restaurando databases de sistemas","author":"tiagoneves","date":"21 de outubro de 2015","format":false,"excerpt":"Ol\u00e1 pessoal, No post de hoje vou demonstrar como fazer o restore das bases de sistemas (master, msdb e model). Geralmente restauramos essas bases quando precisamos migrar o nosso servidor ou precisamos recuperar de algum desastre. Para iniciar o processo precisamos parar os servi\u00e7os do SQL Server e do SQL\u2026","rel":"","context":"Em &quot;Casos do dia-a-dia&quot;","block_context":{"text":"Casos do dia-a-dia","link":"https:\/\/www.tiagoneves.net\/blog\/category\/casos-do-dia-a-dia\/"},"img":{"alt_text":"Servico_Iniciado","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/10\/Servico_Iniciado.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/10\/Servico_Iniciado.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/10\/Servico_Iniciado.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/10\/Servico_Iniciado.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2015\/10\/Servico_Iniciado.png?resize=1050%2C600 3x"},"classes":[]},{"id":2216,"url":"https:\/\/www.tiagoneves.net\/blog\/como-tirei-a-certificacao-mcse-data-management-and-analytics\/","url_meta":{"origin":425,"position":5},"title":"Como tirei a certifica\u00e7\u00e3o MCSE &#8211; Data Management and Analytics","author":"tiagoneves","date":"18 de setembro de 2019","format":false,"excerpt":"Ol\u00e1 pessoal tudo certo? No post de hoje eu vou comentar um pouco sobre provas de certifica\u00e7\u00e3o, especialmente sobre as provas 70-764, 70-765 e 70-465. Quem me acompanha nas redes sociais (LinkedIn \/ Twitter \/ Facebook) viu que nas \u00faltimas semanas eu recebi o t\u00edtulo de MCSE (Microsoft Certified Solutions\u2026","rel":"","context":"Em &quot;Certifica\u00e7\u00e3o&quot;","block_context":{"text":"Certifica\u00e7\u00e3o","link":"https:\/\/www.tiagoneves.net\/blog\/category\/certificacao\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.tiagoneves.net\/blog\/wp-content\/uploads\/2019\/09\/MCSE-Data-Management-and-Analytics2019.png?fit=600%2C600&ssl=1&resize=525%2C300 1.5x"},"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}]}}