{"id":2932,"date":"2020-07-06T10:30:05","date_gmt":"2020-07-06T08:30:05","guid":{"rendered":"https:\/\/www.eugigufo.net\/it\/?page_id=2932"},"modified":"2024-10-01T13:58:27","modified_gmt":"2024-10-01T11:58:27","slug":"paragrafo22","status":"publish","type":"page","link":"https:\/\/eugigufo.net\/it\/inerario\/paragrafo22\/","title":{"rendered":"\u00a7 22. Come pulire e ottimizzare il database del WordPress"},"content":{"rendered":"<p>Probabilmente non tutti se&nbsp;ne&nbsp;rendono conto, ma&nbsp;col tempo il&nbsp;database di&nbsp;un&nbsp;sito costruito con il&nbsp;WordPress si&nbsp;riempie di&nbsp;tantissimi dati inutili. Se&nbsp;il&nbsp;problema viene trascurato per troppo tempo, la&nbsp;quantit&agrave; e&nbsp;il&nbsp;peso complessivo di&nbsp;quei dati possono arrivare a&nbsp;rallentare o&nbsp;addirittura far &laquo;crollare&raquo; il&nbsp;sito. Non &egrave;&nbsp;un&nbsp;difetto del CMS utilizzato, ma&nbsp;un&nbsp;normale segno di&nbsp;vita di&nbsp;ogni progetto costantemente aggiornato. Ogni database ha&nbsp;bisogno della manutenzione periodica, quindi oggi vi&nbsp;racconto come pulirlo dai dati inutili e&nbsp;ottimizzarlo.<br \/>\nIl&nbsp;database di&nbsp;ogni sito su&nbsp;WordPress sicuramente conserva almeno i&nbsp;seguenti materiali: i&nbsp;testi degli articoli e&nbsp;delle pagine, le&nbsp;revisioni di&nbsp;quei testi, i&nbsp;commenti (compresi quelli contrassegnati come spam) e&nbsp;tutte le&nbsp;impostazioni dei temi e&nbsp;dei plugin (anche di&nbsp;quelli che non si&nbsp;utilizzano pi&ugrave;). Come potete facilmente immaginare, una parte di&nbsp;quei dati &egrave;&nbsp;inutile, quindi la&nbsp;sua eliminazione liberer&agrave; lo&nbsp;spazio prezioso (in&nbsp;tutti i&nbsp;sensi) sul database e&nbsp;render&agrave; il&nbsp;sito pi&ugrave; veloce.<br \/>\nLa&nbsp;pulizia e&nbsp;l&rsquo;ottimizzazione del database del WordPress possono essere eseguite in&nbsp;due modi diversi: attraverso una serie di&nbsp;query nella admin MySQL oppure con l&rsquo;aiuto di&nbsp;uno dei plugin specializzati. Io&nbsp;ho&nbsp;sempre preferito il&nbsp;primo modo perch&eacute; &egrave;&nbsp;pi&ugrave; semplice (non richiede la&nbsp;ricerca e&nbsp;l&rsquo;installazione del plugin), pi&ugrave; veloce (ci&nbsp;vogliono pochi secondi a&nbsp;inserire ed&nbsp;eseguire le&nbsp;query necessarie) e&nbsp;pi&ugrave; ottimale (non rende necessaria l&rsquo;occupazione dello spazio con uno strumento che non serve tutti i&nbsp;giorni).<br \/>\nDi&nbsp;conseguenza, procedo subito a&nbsp;elencare e&nbsp;commentare tutte le&nbsp;query che vi&nbsp;serviranno.<br \/>\nPrima di&nbsp;tutto bisogna accedere al&nbsp;proprio MySQL. Il&nbsp;link si&nbsp;trova nella sezione &laquo;Database&raquo; del pannello di&nbsp;controllo del vostro hosting.<br \/>\nAll&rsquo;interno del MySQL, una volta che abbiamo fatto il&nbsp;login:<br \/>\n1)&nbsp;scegliamo il&nbsp;database sul quale vogliamo operare (dico scegliamo perch&eacute; potrete averne pi&ugrave; di&nbsp;uno);<br \/>\n2)&nbsp;clicchiamo sulla voce &laquo;SQL&raquo; nel menu orizzontale:<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art22cleardb1.jpg\" title=\"dove inserire le query\" border=\"0\"><br \/>\n3)&nbsp;per sicurezza facciamo il&nbsp;backup del database sul quale vogliamo operare (per non perdere i&nbsp;dati utili nel caso di&nbsp;un&nbsp;errore). Clicchiamo dunque sulla voce &laquo;Esporta&raquo;, selezioniamo il&nbsp;metodo di&nbsp;esportazione rapido e&nbsp;il&nbsp;formato SQL, poi clicchiamo su&nbsp;&laquo;Esegui&raquo;. Aspettiamo la&nbsp;fine del download.<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art22cleardb2.jpg\" title=\"il backup del database\" border=\"0\"><br \/>\nE&nbsp;ora torniamo alla voce &laquo;SQL&raquo; nel menu orizzontale (come nel punto&nbsp;2) e&nbsp;vediamo di&nbsp;orientarci sulla pagina che abbiamo di&nbsp;fronte. Nella casella di&nbsp;testo verranno digitate\/inserite le&nbsp;query. Per dare l&rsquo;esecuzione alla query inserita cliccare sul buttone giallo &laquo;Esegui&raquo; (lo&nbsp;potete trovare facilmente a&nbsp;destra).<br \/>\nMa&nbsp;la&nbsp;cosa ancora pi&ugrave; importante da&nbsp;ricordare &egrave;&nbsp;il&nbsp;prefisso delle tabelle utilizzato. Per default il&nbsp;prefisso delle tabelle di&nbsp;WordPress &egrave;&nbsp;&laquo;wp_&raquo;, ma&nbsp;voi o&nbsp;il&nbsp;vostro web developer potevate averlo cambiato (si&nbsp;tratta di&nbsp;una cosa molto frequente). Quindi state attenti alla corrispondenza tra i&nbsp;prefissi reali e&nbsp;quelli indicati nelle query utilizzate. Nel caso di&nbsp;non-corrispondenza, ovviamente, i&nbsp;prefissi vanno cambiati nelle query!<br \/>\nE&nbsp;ora, finalmente, passiamo ai&nbsp;fatti, utilizziamo queste benedette query.<br \/>\n<b>1.&nbsp;Cancellare i&nbsp;vecchi plugin e&nbsp;i&nbsp;loro dati<\/b><br \/>\nOvviamente si&nbsp;tratta dei plugin che non vi&nbsp;servono pi&ugrave;. Nella tabella wp_postmeta &egrave;&nbsp;possibile trovare molti altri dati cancellabili con la&nbsp;stessa query.<br \/>\nEcco il&nbsp;codice:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 1; notranslate\" title=\"listing 1\">\nDELETE FROM wp_postmeta WHERE meta_key = 'META-KEY-NAME';\n<\/pre>\n<p>\nAl&nbsp;posto di&nbsp;META-KEY-NAME bisogna indicare le&nbsp;chiavi dei plugin in&nbsp;eliminazione (si&nbsp;trovano nelle tabelle del database).<br \/>\n<b>2.&nbsp;Cancellare tutte le&nbsp;revisioni<\/b><br \/>\nLe&nbsp;revisioni dei testi (articoli e&nbsp;pagine) pubblicati su&nbsp;WordPress sono utilissimi durante la&nbsp;preparazione di&nbsp;un&nbsp;nuovo contenuto, ma&nbsp;dopo la&nbsp;pubblicazione della versione definitiva di&nbsp;un&nbsp;testo si&nbsp;trasformano nella spazzatura inutile.<br \/>\n&Egrave;&nbsp;possibile cancellare tutte le&nbsp;revisioni accumulate nel database eseguendo una volta sola la&nbsp;seguente query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 2; notranslate\" title=\"listing 2\">\nDELETE FROM wp_posts WHERE post_type = 'revision';\n<\/pre>\n<p>\n<b>3.&nbsp;Cancellare tutti i&nbsp;commenti con lo&nbsp;spam<\/b><br \/>\nSelezionare e&nbsp;cancellare lo&nbsp;spam manualmente potrebbe diventare una procedura lunga e&nbsp;noiosa. Ma&nbsp;lo&nbsp;possiamo fare velocemente eseguendo una sola volta la&nbsp;seguente query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 3; notranslate\" title=\"listing 3\">\nDELETE FROM wp_comments WHERE comment_approved = 'spam';\n<\/pre>\n<p>\n<b>4.&nbsp;Cancellare tutti i&nbsp;commenti non confermati<\/b><br \/>\nI&nbsp;commenti non confermati si&nbsp;cancellano con la&nbsp;stessa facilit&agrave;:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 4; notranslate\" title=\"listing 4\">\nDELETE from wp_comments WHERE comment_approved = '0';\n<\/pre>\n<p>\n<b>5.&nbsp;Cancellare tutti i&nbsp;tag non utilizzati<\/b><br \/>\nPotrebbero essere stati creati dei tag che poi non sono stati utilizzati in&nbsp;alcun articolo (oppure i&nbsp;relativi articoli sono stati cancellati). Quei tag si&nbsp;cancellano con la&nbsp;seguente query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 5; notranslate\" title=\"listing 5\">\nDELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );\nDELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);\nDELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);\n<\/pre>\n<p>\n<b>6.&nbsp;Cancellare i&nbsp;vecchi shortcode<\/b><br \/>\nA&nbsp;volte dopo l&rsquo;eliminazione dei plugin nel database rimangono i&nbsp;relativi shortcode ormai inutili. Per eliminarli tutti va&nbsp;utilizzata la&nbsp;seguente query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 6; notranslate\" title=\"listing 6\">\nUPDATE wp_post SET post_content = replace(post_content, '&#x5B;YOUR-SHORTCODE]', '' );\n<\/pre>\n<p>\n<b>7.&nbsp;Cancellare i&nbsp;pingback e&nbsp;i&nbsp;trackback<\/b><br \/>\nPrima accertatevi di&nbsp;averli disabilitati nella vostra admin di&nbsp;WordPress, poi utilizzate questa query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 7; notranslate\" title=\"listing 7\">\nDELETE FROM wp_comments WHERE comment_type = 'pingback';\nDELETE FROM wp_comments WHERE comment_type = 'trackback';\n<\/pre>\n<p>\n<b>8.&nbsp;Cancellare le&nbsp;opzioni temporanee<\/b><br \/>\nLe&nbsp;opzioni temporanee permettono di&nbsp;creare il&nbsp;cache di&nbsp;una parte dei dati nel database. E&nbsp;il&nbsp;cache pu&ograve; assumere delle dimensioni notevoli. Possiamo pulirlo con questa query:<\/p>\n<pre class=\"brush: xml; collapse: false; title: listing 8; notranslate\" title=\"listing 8\">\nDELETE FROM wp_options WHERE option_name LIKE ('%\\_transient\\_%')\n<\/pre>\n<p>\n<b>9.&nbsp;Ottimizzare le&nbsp;tabelle<\/b><br \/>\nDopo avere eseguito tutte le&nbsp;query che ci&nbsp;interessano, possiamo anche ottimizzare le&nbsp;tabelle del database. Si&nbsp;tratta di&nbsp;una operazione utilissima e&nbsp;semplice.<br \/>\nSelezioniamo tutte le&nbsp;tabelle e&nbsp;scegliamo la&nbsp;voce &laquo;Ottimizza tabella&raquo; nel menu a&nbsp;tendina (some nella immagine).<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugigufo.net\/images\/inerario\/art22cleardb3.jpg\" title=\"come ottimizzare il database\" border=\"0\"><br \/>\nBene, abbiamo gi&agrave; fatto tutto. Ora il&nbsp;database &egrave;&nbsp;pulito e&nbsp;ben organizzato, quindi il&nbsp;nostro sito &egrave;&nbsp;pi&ugrave; veloce.<br \/>\nVisto che ci&nbsp;&egrave;&nbsp;andato tutto bene, possiamo anche cancellare definitivamente dal nostro computer il&nbsp;file di&nbsp;backup creato all&rsquo;inizio. Infatti, non ci&nbsp;serve pi&ugrave; perch&eacute; contiene un&nbsp;database contaminato da&nbsp;tutta l&rsquo;immondizia digitale che abbiamo eliminato con le&nbsp;query. Ora, invece, possiamo fare il&nbsp;backup del database pulito: potrebbe tornarci molto utile nel caso di&nbsp;un&nbsp;eventuale guasto al&nbsp;server.<br \/>\n&Egrave;&nbsp;tutto facile, vero?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il paragrafo dell\u2019\u201cInerario\u201d dedicato alla pulizia e ottimizzazione dei database dei siti basati su WordPress.<br \/>\nQuesto paragrafo \u00e8 destinato prevalentemente agli sviluppatori backend e agli amministratori dei siti (anche di quelli personali\/privati).<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":452,"menu_order":22,"comment_status":"open","ping_status":"closed","template":"inerarioart.php","meta":{"footnotes":""},"class_list":["post-2932","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/2932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/comments?post=2932"}],"version-history":[{"count":0,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/2932\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/pages\/452"}],"wp:attachment":[{"href":"https:\/\/eugigufo.net\/it\/wp-json\/wp\/v2\/media?parent=2932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}