{"id":97702,"date":"2020-10-20T20:42:28","date_gmt":"2020-10-20T18:42:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah"},"modified":"2020-10-20T20:42:28","modified_gmt":"2020-10-20T18:42:28","slug":"rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah","title":{"rendered":"Decifrando Key e Page WaitResource em deadlocks e bloqueios","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se voc\u00ea utiliza o relat\u00f3rio de bloqueios (blocked process report) ou coleta gr\u00e1ficos de deadlocks fornecidos pelo SQL Server, periodicamente voc\u00ea se deparar\u00e1 com coisas como estas: <\/p>\n<blockquote><p>waitresource=\"PAGE: 6:3:70133\"<\/p>\n<p>waitresource=\"KEY: 6:72057594041991168 (ce52f92a058c)\"<\/p><\/blockquote>\n<p>\n\u00c0s vezes, naquele imenso XML que voc\u00ea est\u00e1 analisando, haver\u00e1 mais informa\u00e7\u00f5es (as informa\u00e7\u00f5es de deadlocks cont\u00eam uma lista de recursos que ajudam a identificar nomes de objeto e \u00edndice), mas nem sempre.<\/p>\n<p>Este texto ajudar\u00e1 a decifr\u00e1-las.<\/p>\n<p>Toda a informa\u00e7\u00e3o contida aqui est\u00e1 dispon\u00edvel na internet em v\u00e1rios lugares, mas est\u00e1 bastante dispersa! Quero reunir tudo \u2014 do DBCC PAGE ao hobt_id e \u00e0s fun\u00e7\u00f5es n\u00e3o documentadas %%physloc%% e %%lockres%%.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPrimeiro, vamos falar sobre esperas em bloqueios de PAGE e depois vamos abordar bloqueios de KEY.<\/p>\n<h3>1) waitresource=\"PAGE: 6:3:70133\" = Database_Id: FileId: PageNumber<\/h3>\n<p>\nSe sua consulta est\u00e1 aguardando um bloqueio de PAGE, o SQL Server fornecer\u00e1 o endere\u00e7o dessa p\u00e1gina.<\/p>\n<p>Decompondo \"PAGE: 6:3:70133\" obtemos:<\/p>\n<ul>\n<li>database_id = 6<\/li>\n<li>data_file_id = 3<\/li>\n<li>page_number = 70133<\/li>\n<\/ul>\n<h4>1.1) Decifrando database_id<\/h4>\n<p>\nVamos encontrar o nome do banco de dados usando a consulta:<\/p>\n<pre><code class=\"sql\">SELECT \n    name \nFROM sys.databases \nWHERE database_id=6;\nGO<\/code><\/pre>\n<p>\nEste \u00e9 o p\u00fablico <noindex><a rel=\"nofollow\" href=\"https:\/\/www.littlekendra.com\/2016\/09\/13\/deadlock-code-for-the-wideworldimporters-sample-database\/\">BD WideWorldImporters<\/a><\/noindex> no meu SQL Server.<\/p>\n<h4>1.2) Procurando o nome do arquivo de dados \u2014 se voc\u00ea estiver interessado<\/h4>\n<p>\nVamos usar o data_file_id na pr\u00f3xima etapa para encontrar o nome da tabela. Voc\u00ea pode pular para a pr\u00f3xima etapa, mas se voc\u00ea est\u00e1 interessado no nome do arquivo, pode encontr\u00e1-lo executando a consulta no contexto do banco de dados encontrado, substituindo data_file_id nesta consulta:<\/p>\n<pre><code class=\"sql\">USE WideWorldImporters;\nGO\nSELECT \n    name, \n    physical_name\nFROM sys.database_files\nWHERE file_id = 3;\nGO<\/code><\/pre>\n<p>\nNo BD WideWorldImporters, este \u00e9 o arquivo chamado WWI_UserData e ele est\u00e1 recuperado no meu C:MSSQLDATAWideWorldImporters_UserData.ndf. (Ops, voc\u00ea me pegou colocando arquivos no disco do sistema! N\u00e3o! Que situa\u00e7\u00e3o desconfort\u00e1vel).<\/p>\n<h4>1.3) Obten\u00e7\u00e3o do nome do objeto a partir do DBCC PAGE<\/h4>\n<p>\nAgora sabemos que a p\u00e1gina #70133 no arquivo de dados 3 pertence ao BD WorldWideImporters. Podemos examinar o conte\u00fado dessa p\u00e1gina usando o DBCC PAGE n\u00e3o documentado e a trace flag 3604.<br \/>\nNota: prefiro usar o DBCC PAGE em uma c\u00f3pia restaurada de um backup em outro servidor, porque isso \u00e9 uma coisa n\u00e3o documentada. Em alguns casos, ela <noindex><a rel=\"nofollow\" href=\"https:\/\/connect.microsoft.com\/SQLServer\/feedback\/details\/776144\/dbcc-page-incorrect-output-with-filtered-indexes\">pode levar \u00e0 cria\u00e7\u00e3o de um dump<\/a><\/noindex> (<i>nota do tradutor \u2014 o link, infelizmente, leva a lugar nenhum, mas pelo que parece no url, trata-se de \u00edndices filtrados.<\/i>).<\/p>\n<pre><code class=\"sql\">\/* This trace flag makes DBCC PAGE output go to our Messages tab\ninstead of the SQL Server Error Log file *\/\nDBCC TRACEON (3604);\nGO\n\/* DBCC PAGE (DatabaseName, FileNumber, PageNumber, DumpStyle)*\/\nDBCC PAGE ('WideWorldImporters',3,70133,2);\nGO<\/code><\/pre>\n<p>\nRolando para os resultados, pode-se encontrar object_id e index_id.<br \/>\n<img decoding=\"async\" alt=\"Decifrando Key e Page WaitResource em deadlocks e bloqueios\" src=\"\/wp-content\/uploads\/2020\/10\/c5a42f36fb7a87cfd2e11adfef3caa17.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nQuase pronto! Agora voc\u00ea pode encontrar os nomes da tabela e do \u00edndice usando a consulta:<\/p>\n<pre><code class=\"sql\">USE WideWorldImporters;\nGO\nSELECT \n    sc.name as schema_name, \n    so.name as object_name, \n    si.name as index_name\nFROM sys.objects as so \nJOIN sys.indexes as si on \n    so.object_id=si.object_id\nJOIN sys.schemas AS sc on \n    so.schema_id=sc.schema_id\nWHERE \n    so.object_id = 94623380\n    and si.index_id = 1;\nGO<\/code><\/pre>\n<p>\nE aqui vemos que a espera por bloqueio foi no \u00edndice PK_Sales_OrderLines da tabela Sales.OrderLines.<\/p>\n<p>Nota: no SQL Server 2014 e vers\u00f5es posteriores, o nome do objeto tamb\u00e9m pode ser encontrado usando o DMO n\u00e3o documentado sys.dm_db_database_page_allocations. Mas voc\u00ea ter\u00e1 que consultar cada p\u00e1gina no banco de dados, o que n\u00e3o parece nada legal para bancos de dados grandes, por isso eu usei DBCC PAGE.<\/p>\n<h4>1.4) Posso ver os dados naquela p\u00e1gina que estava bloqueada?<\/h4>\n<p>\nBem, sim. Mas\u2026 voc\u00ea tem certeza de que realmente precisa disso?<br \/>\nIsso \u00e9 lento at\u00e9 mesmo em tabelas pequenas. Mas \u00e9 legal, ent\u00e3o, uma vez que voc\u00ea leu at\u00e9 aqui\u2026 vamos falar sobre %%physloc%%!<\/p>\n<p>%%physloc%% \u00e9 um peda\u00e7o de m\u00e1gica n\u00e3o documentado que retorna o identificador f\u00edsico para cada registro. Voc\u00ea pode usar <noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlskills.com\/blogs\/paul\/sql-server-2008-new-undocumented-physical-row-locator-function\/\">%%physloc%% junto com sys.fn_PhysLocFormatter no SQL Server 2008 e vers\u00f5es superiores<\/a><\/noindex>.<\/p>\n<p>Agora que sabemos que queremos aplicar bloqueio na p\u00e1gina em Sales.OrderLines, podemos ver todos os dados nesta tabela que est\u00e3o armazenados no arquivo de dados #3 na p\u00e1gina #70133, usando a seguinte consulta:<\/p>\n<pre><code class=\"sql\">Use WideWorldImporters;\nGO\nSELECT \n    sys.fn_PhysLocFormatter (%%physloc%%),\n    *\nFROM Sales.OrderLines (NOLOCK)\nWHERE sys.fn_PhysLocFormatter (%%physloc%%) like '(3:70133%'\nGO<\/code><\/pre>\n<p>Como eu disse \u2014 isso \u00e9 lento mesmo em tabelas min\u00fasculas. Adicionei NOLOCK \u00e0 consulta porque n\u00e3o temos garantia de que os dados que queremos olhar sejam exatamente os mesmos que estavam no momento em que o bloqueio foi detectado \u2014 ent\u00e3o podemos fazer leituras sujas sem problemas.<br \/>\nMas, uau, a consulta retorna exatamente aquelas 25 linhas pelas quais nossa consulta lutou.<br \/>\n<img decoding=\"async\" alt=\"Decifrando Key e Page WaitResource em deadlocks e bloqueios\" src=\"\/wp-content\/uploads\/2020\/10\/e7909bb7c496d9509e5f5a1aa30a135a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nChega de bloqueios de P\u00c1GINA. E se estivermos aguardando um bloqueio de CHAVE?<\/p>\n<h3>2) waitresource=\"KEY: 6:72057594041991168 (ce52f92a058c)\" = Database_Id, HOBT_Id (um hash m\u00e1gico que pode ser decifrado com %%lockres%%, se voc\u00ea realmente quiser)<\/h3>\n<p>Se sua consulta tentar aplicar um bloqueio a um registro no \u00edndice e acabar sendo bloqueada, voc\u00ea recebe um tipo completamente diferente de endere\u00e7o.<br \/>\nDividindo \"6:72057594041991168 (ce52f92a058c)\" em partes, obtemos:<\/p>\n<ul>\n<li>database_id = 6<\/li>\n<li>hobt_id = 72057594041991168<\/li>\n<li>hash m\u00e1gico = (ce52f92a058c)<\/li>\n<\/ul>\n<h4>2.1) Decifrando database_id<\/h4>\n<p>\nIsso funciona exatamente como no exemplo acima! Vamos encontrar o nome do BD com a consulta:<\/p>\n<pre><code class=\"sql\">SELECT \n    name \nFROM sys.databases \nWHERE database_id=6;\nGO<\/code><\/pre>\n<p>\nNo meu caso, \u00e9 o mesmo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.littlekendra.com\/2016\/09\/13\/deadlock-code-for-the-wideworldimporters-sample-database\/\">BD WideWorldImporters<\/a><\/noindex>.<\/p>\n<h4>2.2) Decifrando hobt_id<\/h4>\n<p>\nNo contexto do BD encontrado, precisamos executar uma consulta ao sys.partitions com um par de joins que ajudar\u00e3o a determinar os nomes da tabela e do \u00edndice\u2026<\/p>\n<pre><code class=\"sql\">USE WideWorldImporters;\nGO\nSELECT \n    sc.name as schema_name, \n    so.name as object_name, \n    si.name as index_name\nFROM sys.partitions AS p\nJOIN sys.objects AS so ON \n    p.object_id=so.object_id\nJOIN sys.indexes AS si ON \n    p.index_id=si.index_id AND \n    p.object_id=si.object_id\nJOIN sys.schemas AS sc ON \n    so.schema_id=sc.schema_id\nWHERE hobt_id = 72057594041991168;\nGO<\/code><\/pre>\n<p>\nEle me diz que a consulta estava aguardando no bloqueio Application.Countries, usando o \u00edndice PK_Application_Countries.<\/p>\n<h4>2.3) Agora um pouco de m\u00e1gica %%lockres%% \u2014 se voc\u00ea quiser descobrir qual registro foi bloqueado<\/h4>\n<p>\nSe eu realmente quiser saber em qual linha o bloqueio foi necess\u00e1rio, posso descobrir isso com uma consulta \u00e0 pr\u00f3pria tabela. Podemos usar a fun\u00e7\u00e3o n\u00e3o documentada %%lockres%% para encontrar o registro que corresponde ao hash m\u00e1gico.<br \/>\nTenha em mente que esta consulta ir\u00e1 escanear toda a tabela, e em tabelas grandes isso pode n\u00e3o ser nada divertido:<\/p>\n<pre><code class=\"sql\">SELECT\n    *\nFROM Application.Countries (NOLOCK)\nWHERE %%lockres%% = '(ce52f92a058c)';\nGO<\/code><\/pre>\n<p>\nEu adicionei NOLOCK (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/Aschenbrenner\/status\/788036874891853824\">a conselho de Klaus Aschenbrenner no Twitter<\/a><\/noindex>) porque bloqueios podem se tornar um problema. Queremos apenas ver o que est\u00e1 l\u00e1 agora, e n\u00e3o o que havia l\u00e1 quando a transa\u00e7\u00e3o come\u00e7ou \u2014 n\u00e3o acho que a consist\u00eancia dos dados seja importante para n\u00f3s.<br \/>\nVoil\u00e0, o registro pelo qual est\u00e1vamos lutando!<br \/>\n<img decoding=\"async\" alt=\"Decifrando Key e Page WaitResource em deadlocks e bloqueios\" src=\"\/wp-content\/uploads\/2020\/10\/4107bfa33261ea62d17f27f61b1b4c23.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Agradecimentos e leitura adicional<\/h3>\n<p>\nN\u00e3o lembro quem primeiro descreveu muitas dessas coisas, mas aqui est\u00e3o dois posts sobre as coisas menos documentadas que podem te interessar:<\/p>\n<ul>\n<li>Post de Paul Randal sobre <noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlskills.com\/blogs\/paul\/sql-server-2008-new-undocumented-physical-row-locator-function\/\">%%physloc%% e sys.fn_PhysLocFormatter<\/a><\/noindex> (como obtemos nossos dados no primeiro exemplo)<\/li>\n<li>Pergunta no StackOverflow sobre <noindex><a rel=\"nofollow\" href=\"https:\/\/dba.stackexchange.com\/questions\/106762\/how-can-i-convert-a-key-in-a-sql-server-deadlock-report-to-the-value\">o uso de %%lockres%%<\/a><\/noindex> (como encontramos os dados no segundo exemplo). Uma das respostas leva ao post <noindex><a rel=\"nofollow\" href=\"http:\/\/www.scarydba.com\/2010\/03\/18\/undocumented-virtual-column-lockres\/\">de Grant Fritchey sobre %%lockres%%, escrito em 2010<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/524098\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u0447\u0451\u0442\u043e\u043c \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 (blocked process report) \u0438\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0433\u0440\u0430\u0444\u044b \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 SQL Server&#8217;\u043e\u043c, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438: waitresource=\u201cPAGE: 6:3:70133\u201c waitresource=\u201cKEY: 6:72057594041991168 (ce52f92a058c)\u201c \u0418\u043d\u043e\u0433\u0434\u0430, \u0432 \u0442\u043e\u043c \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u043e\u043c XML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0437\u0443\u0447\u0430\u0435\u0442\u0435, \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (\u0433\u0440\u0430\u0444\u044b \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430), \u043d\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97702","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u0447\u0451\u0442\u043e\u043c \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 (blocked process report) \u0438\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0433\u0440\u0430\u0444\u044b \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 SQL Server&#039;\u043e\u043c, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438: .\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c Key \u0438 Page WaitResource \u0432 \u0434\u0435\u0434\u043b\u043e\u043a\u0430\u0445 \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u0447\u0451\u0442\u043e\u043c \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 (blocked process report) \u0438\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0433\u0440\u0430\u0444\u044b \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 SQL Server&#039;\u043e\u043c, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438: .\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-20T18:42:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-20T18:42:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Decifrando Key e Page WaitResource em deadlocks e bloqueios | ProHoster","description":"Se voc\u00ea est\u00e1 usando o relat\u00f3rio de bloqueios (blocked process report) ou coletando gr\u00e1ficos de deadlocks fornecidos pelo SQL Server, periodicamente voc\u00ea ir\u00e1 se deparar com essas coisas:","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c Key \u0438 Page WaitResource \u0432 \u0434\u0435\u0434\u043b\u043e\u043a\u0430\u0445 \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u0447\u0451\u0442\u043e\u043c \u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 (blocked process report) \u0438\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0433\u0440\u0430\u0444\u044b \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 SQL Server'\u043e\u043c, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438: .","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/rasshifrovyvaem-key-i-page-waitresource-v-dedlokah-i-blokirovkah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-20T18:42:28+00:00","article:modified_time":"2020-10-20T18:42:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97702","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:15:26","updated":"2022-10-03 07:13:25","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/97702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=97702"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/97702\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/97703"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=97702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=97702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=97702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}