{"id":417,"date":"2026-05-20T17:06:41","date_gmt":"2026-05-20T20:06:41","guid":{"rendered":"https:\/\/www.portanova.com.br\/notebook\/?p=417"},"modified":"2026-05-21T20:47:19","modified_gmt":"2026-05-21T23:47:19","slug":"sql-limpeza","status":"publish","type":"post","link":"https:\/\/www.portanova.com.br\/notebook\/sql-limpeza\/","title":{"rendered":"[SQL] Limpeza Profunda do Banco de Dados WordPress"},"content":{"rendered":"<h2><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span>\ud83e\uddf9 Limpeza Profunda do Banco de Dados WordPress<\/h2>\n<p><strong>Objetivo:<\/strong> Remover &#8220;sujeira&#8221; (dados \u00f3rf\u00e3os, revis\u00f5es antigas, transients expirados, caches desnecess\u00e1rios) que podem deixar o site lento ou causar comportamentos estranhos, como a desformata\u00e7\u00e3o de shortcodes <code><\/code>.<\/p>\n<p><strong>Aten\u00e7\u00e3o:<\/strong> Sempre fa\u00e7a um <strong>backup completo<\/strong> (banco de dados + arquivos) antes de executar qualquer comando SQL. Esta aula \u00e9 para administradores experientes.<\/p>\n<hr>\n<h3>\ud83d\udccc Comandos SQL para limpeza em um <strong>site WordPress normal<\/strong><\/h3>\n<p>Conecte-se ao <strong>phpMyAdmin<\/strong> (ou outra ferramenta) e execute os comandos abaixo, um por um, na tabela correspondente ao seu banco de dados.<\/p>\n<table class=\"wp-list-table widefat fixed striped\" style=\"width:100%; border-collapse: collapse; margin: 1rem 0;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 8px;\">A\u00e7\u00e3o<\/th>\n<th style=\"text-align: left; padding: 8px;\">Comando SQL (executar no phpMyAdmin)<\/th>\n<th style=\"text-align: left; padding: 8px;\">O que faz<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px;\">Remover revis\u00f5es antigas de posts<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_posts WHERE post_type = 'revision';<\/code><\/td>\n<td style=\"padding: 8px;\">Apaga todas as revis\u00f5es de posts e p\u00e1ginas, liberando espa\u00e7o e eliminando metadados associados (reduz a tabela <code>wp_posts<\/code>).<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover posts na lixeira (trash)<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_posts WHERE post_status = 'trash';<\/code><\/td>\n<td style=\"padding: 8px;\">Elimina definitivamente os posts que estavam na lixeira.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover metadados \u00f3rf\u00e3os (postmeta)<\/td>\n<td style=\"padding: 8px;\"><code>DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts p ON p.ID = pm.post_id WHERE p.ID IS NULL;<\/code><\/td>\n<td style=\"padding: 8px;\">Apaga metadados que pertencem a posts que j\u00e1 foram exclu\u00eddos. Esses &#8220;\u00f3rf\u00e3os&#8221; acumulam lixo e lentid\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover coment\u00e1rios n\u00e3o aprovados e spam<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_comments WHERE comment_approved IN ('0', 'spam', 'trash');<\/code><\/td>\n<td style=\"padding: 8px;\">Limpa coment\u00e1rios pendentes, spam e lixeira de coment\u00e1rios.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover metadados de coment\u00e1rios \u00f3rf\u00e3os<\/td>\n<td style=\"padding: 8px;\"><code>DELETE cm FROM wp_commentmeta cm LEFT JOIN wp_comments c ON c.comment_ID = cm.comment_id WHERE c.comment_ID IS NULL;<\/code><\/td>\n<td style=\"padding: 8px;\">Elimina metadados de coment\u00e1rios que n\u00e3o existem mais.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Limpar transients expirados (op\u00e7\u00f5es tempor\u00e1rias)<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' OR option_name LIKE '_transient_%';<\/code><\/td>\n<td style=\"padding: 8px;\">Remove todas as op\u00e7\u00f5es de cache transit\u00f3rio (transients) \u2013 dados tempor\u00e1rios de plugins que n\u00e3o s\u00e3o mais necess\u00e1rios.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover cache oEmbed \u00f3rf\u00e3o<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_postmeta WHERE meta_key LIKE '_oembed_%';<\/code><\/td>\n<td style=\"padding: 8px;\">Limpa o cache de incorpora\u00e7\u00f5es (oEmbed) que pode estar corrompido ou desatualizado \u2013 \u00fatil para resolver problemas com <code><\/code>.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Otimizar todas as tabelas (reorganizar espa\u00e7o)<\/td>\n<td style=\"padding: 8px;\"><code>OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta, wp_terms, wp_termmeta;<\/code> (adicione outras tabelas se desejar)<\/td>\n<td style=\"padding: 8px;\">Reorganiza o armazenamento f\u00edsico das tabelas, recuperando espa\u00e7o e melhorando a performance (executar ap\u00f3s limpeza).<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<h3>\ud83c\udf10 Adapta\u00e7\u00e3o para <strong>Multisite<\/strong> (rede de blogs)<\/h3>\n<p>No Multisite, cada blog tem suas pr\u00f3prias tabelas com o prefixo <code>wp_<strong>ID_do_blog<\/strong>_<\/code> (ex: <code>wp_2_posts<\/code>, <code>wp_2_postmeta<\/code>). Al\u00e9m disso, existem tabelas globais (como <code>wp_sites<\/code>, <code>wp_blogs<\/code>, <code>wp_signups<\/code>).<\/p>\n<p><strong>Para limpar todos os blogs de uma vez, use um plugin como <a href=\"https:\/\/wordpress.org\/plugins\/wp-sweep\/\" target=\"_blank\">WP-Sweep<\/a> (ativado em rede).<\/strong> Ele varre todas as tabelas automaticamente.<\/p>\n<p>Se preferir executar comandos SQL manuais por blog, repita os comandos acima trocando o prefixo <code>wp_<\/code> pelo prefixo de cada blog. Exemplo para o blog com ID 2:<\/p>\n<pre><code>DELETE FROM wp_2_postmeta WHERE meta_key LIKE '_oembed_%';\r\nDELETE FROM wp_2_options WHERE option_name LIKE '_transient_%';\r\nDELETE FROM wp_2_posts WHERE post_type = 'revision';\r\n-- etc.\r\n<\/code><\/pre>\n<p>Al\u00e9m disso, voc\u00ea pode limpar as <strong>tabelas globais<\/strong> do Multisite:<\/p>\n<table class=\"wp-list-table widefat fixed striped\" style=\"width:100%; border-collapse: collapse; margin: 1rem 0;\">\n<thead>\n<tr>\n<th style=\"text-align: left; padding: 8px;\">A\u00e7\u00e3o<\/th>\n<th style=\"text-align: left; padding: 8px;\">Comando SQL (global)<\/th>\n<th style=\"text-align: left; padding: 8px;\">O que faz<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px;\">Remover blogs marcados como &#8220;exclu\u00eddos&#8221; (deleted = 1)<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_blogs WHERE deleted = 1;<\/code><\/td>\n<td style=\"padding: 8px;\">Elimina permanentemente blogs que foram exclu\u00eddos da rede.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover registros de signup \u00f3rf\u00e3os<\/td>\n<td style=\"padding: 8px;\"><code>DELETE FROM wp_signups WHERE active = 0 AND registered &lt; DATE_SUB(NOW(), INTERVAL 30 DAY);<\/code><\/td>\n<td style=\"padding: 8px;\">Limpa registros de inscri\u00e7\u00f5es pendentes com mais de 30 dias.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px;\">Remover metadados de sites \u00f3rf\u00e3os<\/td>\n<td style=\"padding: 8px;\"><code>DELETE sgm FROM wp_sitemeta sgm LEFT JOIN wp_blogs b ON b.blog_id = sgm.site_id WHERE b.blog_id IS NULL;<\/code><\/td>\n<td style=\"padding: 8px;\">Apaga metadados de sites que n\u00e3o existem mais na rede.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<h3>\ud83d\udd27 Comando PHP para limpeza profunda via WP-CLI (alternativa avan\u00e7ada)<\/h3>\n<p>Se voc\u00ea tem acesso <strong>SSH<\/strong> e o <strong>WP-CLI<\/strong> instalado, pode executar uma limpeza ainda mais completa com um \u00fanico comando (aplic\u00e1vel a todo o Multisite):<\/p>\n<pre><code># Limpar revis\u00f5es de posts de todos os blogs da rede\r\nwp post delete --force --revisions --network\r\n\r\n# Limpar transients expirados da rede\r\nwp transient delete --all --network\r\n\r\n# Limpar cache oEmbed de todos os blogs\r\nwp post meta delete --all --meta-key=_oembed_* --network\r\n\r\n# Otimizar todas as tabelas do banco de dados\r\nwp db optimize\r\n<\/code><\/pre>\n<p>Esses comandos s\u00e3o executados no terminal do servidor (ex: DreamHost SSH).<\/p>\n<hr>\n<h3>\ud83d\udcd6 Resumo do que cada a\u00e7\u00e3o elimina (para seu caderno)<\/h3>\n<ul>\n<li><strong>Revis\u00f5es e lixeira:<\/strong> Vers\u00f5es antigas de posts\/p\u00e1ginas que ocupam espa\u00e7o e podem conter metadados desnecess\u00e1rios.<\/li>\n<li><strong>Metadados \u00f3rf\u00e3os:<\/strong> Campos personalizados (postmeta, commentmeta, termmeta, usermeta) cujo objeto pai (post, coment\u00e1rio, termo, usu\u00e1rio) foi exclu\u00eddo. Esses s\u00e3o os principais vil\u00f5es da lentid\u00e3o e de comportamentos estranhos.<\/li>\n<li><strong>Transients expirados:<\/strong> Dados tempor\u00e1rios de plugins que o WordPress deveria limpar sozinho, mas muitas vezes acumulam.<\/li>\n<li><strong>Cache oEmbed:<\/strong> Respostas salvas de servi\u00e7os externos (YouTube, Twitter, etc.). Pode ficar corrompido e atrapalhar o shortcode <code><\/code>.<\/li>\n<li><strong>Otimiza\u00e7\u00e3o de tabelas:<\/strong> Libera espa\u00e7o f\u00edsico no disco e reorganiza os \u00edndices.<\/li>\n<\/ul>\n<hr>\n<h3>\u2705 Pr\u00f3ximos passos recomendados para o seu caso<\/h3>\n<ol>\n<li><strong>Fa\u00e7a um backup completo<\/strong> (banco + arquivos).<\/li>\n<li>Instale e ative o plugin <strong>WP-Sweep<\/strong> em rede.<\/li>\n<li>Execute a limpeza de <strong>Post Meta<\/strong>, <strong>oEmbed Cache<\/strong> e <strong>Transients<\/strong> pelo painel da rede (Ferramentas \u2192 Sweep).<\/li>\n<li>Ap\u00f3s a limpeza, recarregue os posts que usam <code><\/code> e verifique se o comportamento de desformata\u00e7\u00e3o persiste.<\/li>\n<li>Se o problema continuar, restaure o backup e execute comandos SQL manuais (um por um) para identificar a causa raiz.<\/li>\n<\/ol>\n<p><strong>Lembre-se:<\/strong> Manuten\u00e7\u00e3o preventiva a cada 3-6 meses evita ac\u00famulo de sujeira e mant\u00e9m o site leve e r\u00e1pido.<\/p>\n<hr>\n<p><em>Esta aula foi gerada com base nas experi\u00eancias e tentativas de resolver a desformata\u00e7\u00e3o do shortcode <code><\/code> no Multisite Portanova. A limpeza profunda do banco de dados \u00e9 uma das pr\u00e1ticas mais subestimadas e eficazes.<\/em><\/p>\n<p><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ufeff\ufeff\ufeff\ufeff\ud83e\uddf9 Limpeza Profunda do Banco de Dados WordPress Objetivo: Remover &#8220;sujeira&#8221; (dados \u00f3rf\u00e3os, revis\u00f5es antigas, transients expirados, caches desnecess\u00e1rios) que podem deixar o site lento ou causar comportamentos estranhos, como a desformata\u00e7\u00e3o de shortcodes . Aten\u00e7\u00e3o: Sempre fa\u00e7a um backup completo (banco de dados + arquivos) antes de executar qualquer comando SQL. Esta aula \u00e9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,2],"tags":[],"class_list":["post-417","post","type-post","status-publish","format-standard","hentry","category-extras","category-lessons"],"_links":{"self":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/comments?post=417"}],"version-history":[{"count":1,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":723,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/posts\/417\/revisions\/723"}],"wp:attachment":[{"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/media?parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/categories?post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.portanova.com.br\/notebook\/wp-json\/wp\/v2\/tags?post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}