{"id":8532,"date":"2018-01-30T11:30:49","date_gmt":"2018-01-30T13:30:49","guid":{"rendered":"http:\/\/www.fabriciolima.net\/?p=8532"},"modified":"2020-10-10T14:30:19","modified_gmt":"2020-10-10T17:30:19","slug":"melhorando-a-performance-de-consultas-no-totvs-protheus-parte-6","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2018\/01\/30\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-6\/","title":{"rendered":"Melhorando a Performance de Consultas no Totvs Protheus &#8211; Parte 6"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8762 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6.png\" alt=\"\" width=\"602\" height=\"363\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6.png 1117w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-300x181.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-1024x618.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-768x463.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-700x422.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-410x247.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-100x60.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-275x166.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2018\/01\/Netflix6-20x12.png 20w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/p>\n<p>Fala pessoal,<\/p>\n<p>Antes de lerem esse post, caso ainda n\u00e3o tenham lido os anteriores, sugiro que fa\u00e7am para seguirem a linha de racioc\u00ednio:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2017\/12\/18\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2017\/12\/18\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2\/<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/01\/08\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2018\/01\/08\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3\/<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/01\/16\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-4\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2018\/01\/16\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-4\/<\/a><\/li>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2018\/01\/23\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2018\/01\/23\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-5\/<\/a><\/li>\n<\/ul>\n<p>Hoje vamos analisar a query abaixo que est\u00e1 fazendo um n\u00famero muito alto de leituras no banco:<\/p>\n<pre class=\"lang:tsql decode:true \">SELECT   RA_XREGIO XREGIO ,\r\n         RA_FILIAL FILIAL ,\r\n         RA_NOME NOME ,\r\n         RA_CIC CIC ,\r\n         RA_BCDEPSA BCDEPSA ,\r\n         RA_CTDEPSA CTDEPSA ,\r\n         ZT_TITULO TITULO ,\r\n         ZT_CODTIT CODTIT ,\r\n         ZT_MAT MAT ,\r\n         ROUND(ZT_VALVER, 2) VALVER ,\r\n         ZT_VERBA VERBA ,\r\n         ZT_XBCOFUN XBCOFUN ,\r\n         ZT_XAGEFUN XAGEFUN ,\r\n         ZT_XCTAFUN XCTAFUN ,\r\n         RC1_TIPO TIPO ,\r\n         RC1_EMISSA EMISSA ,\r\n         RC1_VENREA VENREA ,\r\n         RC1_VALOR VALOR ,\r\n         RC1_XBCO1 XBCO1 ,\r\n         RC1_XAGE1 XAGE1 ,\r\n         RC1_XCTA1 XCTA1 ,\r\n         RC1_XDTPAG XDTPAG ,\r\n         RC1_XUSPAG XUSPAG ,\r\n         RC1_XUSNPA XUSNPA ,\r\n         RC1.R_E_C_N_O_ RC1RECNO ,\r\n         RC1_NATURE NATUREZA\r\nFROM     SRA080 SRA ,\r\n         RC1080 RC1 ,\r\n         SZT010 SZT ,\r\n         SED010 SED\r\nWHERE    SRA.D_E_L_E_T_ = ' '\r\n         AND RC1.D_E_L_E_T_ = ' '\r\n         AND SZT.D_E_L_E_T_ = ' '\r\n         AND SED.D_E_L_E_T_ = ' '\r\n         AND RA_MAT = ZT_MAT\r\n         AND RA_SITFOLH IN ( ' ', 'A', 'D', 'F', 'T' )\r\n         AND ZT_CODTIT NOT IN ( ' ', '23', '234')\r\n         AND SUBSTRING(RA_BCDEPSA, 1, 3) IN ( '234', '543', '123', '987', '979' )\r\n         AND RA_FILIAL\r\n         BETWEEN '0 ' AND 'ZZ'\r\n         AND RA_MAT\r\n         BETWEEN '0     ' AND 'ZZZZZ '\r\n         AND RC1_NUMTIT\r\n         BETWEEN '0        ' AND 'ZZZZZZZZZ'\r\n         AND RA_XREGIO\r\n         BETWEEN '0 ' AND 'ZZ'\r\n         AND RC1_EMISSA\r\n         BETWEEN '20160101' AND '20171231'\r\n         AND RC1_VENREA\r\n         BETWEEN '20171212' AND '20171212'\r\n         AND RC1_NATURE IN ( '23243', '23423' )\r\n         AND RA_FILIAL = ZT_FILIAL\r\n         AND ZT_TITULO = RC1_NUMTIT\r\n         AND ZT_PREFIXO = RC1_PREFIX\r\n         AND ZT_CODTIT = RC1_CODTIT\r\n         AND ZT_RECTIT = RC1.R_E_C_N_O_\r\nGROUP BY RA_XREGIO ,\r\n         RA_FILIAL ,\r\n         RA_NOME ,\r\n         RA_CIC ,\r\n         RA_BCDEPSA ,\r\n         RA_CTDEPSA ,\r\n         ZT_TITULO ,\r\n         ZT_PREFIXO ,\r\n         ZT_CODTIT ,\r\n         ZT_MAT ,\r\n         ZT_VALVER ,\r\n         ZT_VERBA ,\r\n         ZT_XBCOFUN ,\r\n         ZT_XAGEFUN ,\r\n         ZT_XCTAFUN ,\r\n         RC1_TIPO ,\r\n         RC1_EMISSA ,\r\n         RC1_VENREA ,\r\n         RC1_VALOR ,\r\n         RC1_XBCO1 ,\r\n         RC1_XAGE1 ,\r\n         RC1_XCTA1 ,\r\n         RC1_XDTPAG ,\r\n         RC1_XUSPAG ,\r\n         RC1_XUSNPA ,\r\n         RC1.R_E_C_N_O_ ,\r\n         RC1_NATURE<\/pre>\n<p>Segue o custo dessa query:<\/p>\n<pre class=\"lang:tsql decode:true\">Table 'RC1080'. Scan count 1, logical reads 8832\r\nTable 'SZT010'. Scan count 7961, logical reads 3017362\r\nTable 'SRA080'. Scan count 9, logical reads 4710\r\nTable 'SED010'. Scan count 3, logical reads 40\r\n\r\n SQL Server Execution Times:\r\n CPU time = 5031 ms, elapsed time = 1074 ms.\r\n<\/pre>\n<p><strong>3 milh\u00f5es de reads<\/strong> na tabela <strong>SZT010<\/strong>. A treta da query est\u00e1 a\u00ed.<\/p>\n<p>Esse \u00e9 o plano da query:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8535 aligncenter\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1.png\" alt=\"\" width=\"887\" height=\"233\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1.png 1820w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-300x79.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-1024x269.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-768x202.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-1536x403.png 1536w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-700x184.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-410x108.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-100x26.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-275x72.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_1-20x5.png 20w\" sizes=\"auto, (max-width: 887px) 100vw, 887px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Como vimos que a treta est\u00e1 na tabela <strong>SZT<\/strong>, vamos procurar essa tabela no plano.<\/p>\n<p>O SQL Server est\u00e1 realizando um <strong>Key Lookup 703 mil vezes<\/strong> no \u00edndice clustered dessa tabela.<\/p>\n<p>Hummm&#8230; <strong>Olha a\u00ed o motivo da treta.<\/strong><\/p>\n<p>Mas Fabr\u00edcio, agora o SQL Server n\u00e3o me sugeriu nenhum \u00edndice. <strong>Lascou<\/strong>. S\u00f3 conseguia melhorar algo quando ele me mostrava.<\/p>\n<p>Como n\u00e3o s\u00f3 de missed index vive o homem, vamos olhar para a query e pensar como ela poderia ser executada de forma mais r\u00e1pida.<\/p>\n<p>O Filtro mais seletivo que encontrei no <strong>WHERE<\/strong> foi esse abaixo:<\/p>\n<pre class=\"lang:tsql decode:true \">     AND RC1_VENREA     BETWEEN '20171212' AND '20171212'<\/pre>\n<p>Dessa forma vou criar um \u00edndice na tabela <strong>RC1080<\/strong> come\u00e7ando por essa coluna. Vou incluir nesse \u00edndice apenas as colunas utilizadas no WHERE para ele n\u00e3o ficar muito grande.<\/p>\n<p>Em seguida, o SQL dever\u00e1 fazer um join com a tabela <strong>SZT010<\/strong> pelas colunas abaixo:<\/p>\n<pre class=\"lang:tsql decode:true \">         AND ZT_TITULO = RC1_NUMTIT\r\n         AND ZT_PREFIXO = RC1_PREFIX\r\n         AND ZT_CODTIT = RC1_CODTIT\r\n         AND ZT_RECTIT = RC1.R_E_C_N_O_<\/pre>\n<p>Para induzir o SQL a fazer isso, vou criar um \u00edndice que come\u00e7a por essas colunas do join (a mais seletiva para a esquerda).<\/p>\n<p>Segue abaixo os dois \u00edndices que criei:<\/p>\n<pre class=\"lang:tsql decode:true \">CREATE NONCLUSTERED INDEX RC1080W01\r\nON [dbo].RC1080(RC1_VENREA,RC1_EMISSA,RC1_NATURE,RC1_NUMTIT)\r\nwith (DATA_COMPRESSION=PAGE,FILLFACTOR=90)\r\n\r\nCREATE NONCLUSTERED INDEX SZT010W01\r\nON [dbo].SZT010(ZT_TITULO,ZT_PREFIXO,ZT_CODTIT,ZT_RECTIT,ZT_FILIAL,ZT_MAT,D_E_L_E_T_)\r\ninclude(ZT_VALVER, ZT_VERBA ,ZT_XBCOFUN ,ZT_XAGEFUN ,ZT_XCTAFUN)\r\nwith (DATA_COMPRESSION=PAGE,FILLFACTOR=90)<\/pre>\n<p>Ao rodar a query novamente, <strong>temos mais um WOW!!!!<\/strong><\/p>\n<p>A quantidade de leituras reduziu drasticamente.<\/p>\n<p>Consumo antes:<\/p>\n<pre class=\"lang:tsql decode:true \">Table 'RC1080'. Scan count 1, logical reads 8832\r\nTable 'SZT010'. Scan count 7961, logical reads 3017364\r\n\r\n SQL Server Execution Times:\r\n   CPU time = 5031 ms,  elapsed time = 1074 ms.<\/pre>\n<p>Consumo depois:<\/p>\n<pre class=\"lang:tsql decode:true\">Table 'SZT010'. Scan count 8, logical reads 32\r\nTable 'RC1080'. Scan count 1, logical reads 27\r\n\r\n SQL Server Execution Times:\r\n   CPU time = 16 ms,  elapsed time = 125 ms.\r\n<\/pre>\n<p><strong>Redu\u00e7\u00e3o de 3 milh\u00f5es de leitura de p\u00e1ginas de 8 kb para 32 leituras<\/strong> e gerando o mesmo resultado. WOW!!!<\/p>\n<p>Segue o novo plano da query:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8537\" src=\"https:\/\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2.png\" alt=\"\" width=\"845\" height=\"349\" srcset=\"https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2.png 1249w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-300x124.png 300w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-1024x423.png 1024w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-768x317.png 768w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-700x289.png 700w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-410x169.png 410w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-100x41.png 100w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-275x114.png 275w, https:\/\/fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte6_2-20x8.png 20w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/p>\n<p>Com os dois \u00edndices que criei, eu induzi o SQL Server a rodar a query da forma que achei que seria mais r\u00e1pida.<\/p>\n<p>Ele j\u00e1 estava doido para rodar essa query dessa forma, s\u00f3 estava esperando um <strong>DBA\/DEV<\/strong> criar esses \u00edndices para ele evitar de fazer<strong> 3 milh\u00f5es<\/strong> de leituras e descansar um pouco.<\/p>\n<p>\u00c9 isso ai pessoal, melhoramos mais uma query no Protheus.<\/p>\n<p>At\u00e9 a pr\u00f3xima an\u00e1lise de query.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Atualizado no dia 07\/10\/2020:<\/strong><\/span><\/p>\n<p>Publiquei um curso com 11 horas de dura\u00e7\u00e3o com toda minha experi\u00eancia de anos no assunto e de dezenas de clientes Protheus atendidos:<\/p>\n<p>Curso:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/cursos.powertuning.com.br\/course?courseid=melhorando-a-performance-de-consultas-no-totvs-protheus\" target=\"_blank\" rel=\"nofollow external noopener noreferrer\" data-wpel-link=\"external\">Melhorando a Performance de Consultas no Totvs Protheus<\/a><\/p>\n<p>Gravei uma aula gr\u00e1tis com 60 minutos de dura\u00e7\u00e3o sobre o que voc\u00ea deve aprender para melhorar a performance no Protheus:<\/p>\n<div class=\"fluid-width-video-wrapper\"><a href=\"https:\/\/www.youtube.com\/watch?v=BKmUa3aZn6s\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.youtube.com\/watch?v=BKmUa3aZn6s<\/a><\/div>\n<div><\/div>\n<p><b>Gostou desse Post?<\/b><\/p>\n<p>Curta, comente, compartilhe com os coleguinhas\u2026<\/p>\n<p>Assine meu canal no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.youtube.com\/channel\/UCeBRAO_LLrUdSrOXIywjzRA\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Youtube<\/a>\u00a0e curta minha\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/FabricioLimaSolucoesemBancodeDados\/\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">P\u00e1gina no Facebook<\/a>\u00a0para receber Dicas de Leituras e Eventos sobre SQL Server.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala pessoal, Antes de lerem esse post, caso ainda n\u00e3o tenham lido os anteriores, sugiro que fa\u00e7am para seguirem a linha de racioc\u00ednio: https:\/\/www.fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/ https:\/\/www.fabriciolima.net\/blog\/2017\/12\/18\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-2\/ https:\/\/www.fabriciolima.net\/blog\/2018\/01\/08\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-3\/ https:\/\/www.fabriciolima.net\/blog\/2018\/01\/16\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-4\/ https:\/\/www.fabriciolima.net\/blog\/2018\/01\/23\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-5\/ Hoje vamos analisar a query abaixo que est\u00e1 fazendo um n\u00famero muito alto de leituras no banco: SELECT RA_XREGIO XREGIO , RA_FILIAL FILIAL , RA_NOME NOME , [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[3,942,991,1248,33,280],"tags":[15,1031,1032,1101,1099,1100,1097,1098,1096,1048,1044,1103,942,1102,1595,1054,23,1029,1030,1088,1089,1025,1026,1049,1045,110,1034,1033,1597,1016,1040,1019,1598,1035,1042,1023,1024,1596,1046,1021,1020,1039,1053,1022,1018,1059,1047,1041,1036,1052,1060,1038,1051,33,1057,1017,1015,1055,1050,1043],"class_list":["post-8532","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-consultoria-sql-server","category-dba-remoto","category-queries-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-banco-de-dados","tag-banco-protheus","tag-banco-totvs","tag-consultor-crm","tag-consultor-datasul","tag-consultor-microsiga","tag-consultor-protheus","tag-consultor-rm","tag-consultor-totvs","tag-consultoria-microsiga","tag-consultoria-protheus","tag-consultoria-rm","tag-consultoria-sql-server","tag-consultoria-totvs","tag-crm-datasul-datasul-erp","tag-datasul-totvs","tag-dba","tag-dba-protheus","tag-dba-totvs","tag-dica-banco-de-dados-protheus","tag-dicas-banco-de-dados-protheus","tag-erp","tag-erp-com-sql-server","tag-erp-microsiga","tag-erp-protheus","tag-indice","tag-lentidao-banco-de-dados","tag-lentidao-protheus","tag-lentidao-protheus-12","tag-microsiga","tag-microsiga-protheus","tag-microsiga-sql-server","tag-migracao-protheus-12","tag-performance-protheus","tag-protheus","tag-protheus-10","tag-protheus-11","tag-protheus-12","tag-protheus-microsiga","tag-protheus-microsoft-sql-server","tag-protheus-sql-server","tag-protheus-totvs","tag-rm-sistemas","tag-rm-sql-server","tag-siga","tag-sistema-crm","tag-sistema-microsiga","tag-sistema-protheus","tag-sistema-rm","tag-sistema-rm-totvs","tag-sistema-wms","tag-sistemas-de-gestao","tag-sistemas-erp","tag-sql-server","tag-suporte-totvs","tag-top-connect","tag-totvs","tag-totvs-datasul","tag-totvs-microsiga","tag-totvs-protheus"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/8532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=8532"}],"version-history":[{"count":8,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/8532\/revisions"}],"predecessor-version":[{"id":13840,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/8532\/revisions\/13840"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=8532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=8532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=8532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}