web-dev-qa-db-ger.com

Kann ich Transienten in der wp_options-Tabelle meiner WordPress install entfernen?

Ich habe kürzlich bemerkt, dass meine wp_options - Tabelle ein bisschen groß zu sein scheint. Es enthält 1161 Zeilen und ist ca. 2,1 MB groß.

Ich habe Clean Options installiert. Es sieht so aus, als ob die Entwicklung des Plugins im Jahr 2010 gestoppt wurde, aber es hat immer noch funktioniert.

Ich habe jetzt eine lange Liste potenziell verwaister Einträge. Gibt es eine einfache Möglichkeit, diese zu sortieren und herauszufinden, welche zu entfernen und welche zu behalten sind? Könnte dies auch für Leistungsprobleme bei der Website verantwortlich sein?

Vielen Dank für das Lesen, alle Ideen sind willkommen!

Update : Das Plugin Clean Options hat einige Transienten in der Liste zurückgegeben, was mich dazu veranlasste, festzustellen, dass der wp_options Tabelle. Es gibt eine ganze Reihe, die so aussehen:

  • _site_transient_browser_5728a0f1503de54634b3716638...
  • _site_transient_timeout_browser_03df11ec4fda7630a5...
  • _transient_feed_83dcaee0f69f63186d51bf9a4...
  • _transient_plugin_slugs
  • _transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...

und so weiter. Wie gesagt, es gibt mehrere hundert Zeilen, die so aussehen. Ist es sicher, sie einfach wegzuwerfen?

Vielen Dank

55
Ryan

Sie können sie sicher entsorgen. Wordpress und einige Plugins erstellen Transienten nach Bedarf neu. Ein Transient ist mehr oder weniger der gespeicherte Wert einer komplexen Abfrage. Die Ergebnisse werden als Transient gespeichert, so dass das System keine hat Wenn Sie eine häufige Abfrage immer wieder durchführen möchten, wird stattdessen nur nach dem Transienten gesucht, der vorhanden und noch nicht abgelaufen ist. Erstellen Sie natürlich eine Sicherungskopie Ihrer Datenbank, bevor Sie Änderungen vornehmen, damit nichts schief geht!

Nachdem Sie alles gesichert haben, können Sie eine mysql-Anweisung wie folgt ausführen:

DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

[EDIT: Anweisung mit Escape-Zeichen nach Kommentarvorschlag behoben]

132
Lane

Sie können Transienten löschen, da sie neu erstellt werden. Aufgrund von Ausfallsituationen oder Entwurfsproblemen bei einigen Plug-ins können abgelaufene Transienten auftreten. Eine Möglichkeit, damit umzugehen, besteht darin, abgelaufene Transienten zu entfernen, während die aktuellen ihre Funktion ausführen können. Wenn Sie nur Transienten löschen, die für einige Tage abgelaufen sind, können Sie überwachen, welche Plugins zu veralteten Transienten führen, und Maßnahmen ergreifen, um Probleme zu beheben oder Probleme zu melden.

Im Folgenden werden alle wp * -Optionstabellen in der Datenbank gefunden und die fünf größten vorübergehenden Optionen gelöscht, die mehr als eine Woche alt sind. Dies gibt genug Zeit, damit jedes Plugin Optionen löscht, die es selbst löschen wird.

#!/bin/bash

DBNAME="mydatabase"
DBUSER="${USER}"
DBPASSWD="secret"
MYSQLBIN=/usr/bin/mysql # OR MYSQLBIN=/usr/local/mysql/bin/mysql
MYSQL="${MYSQLBIN} -s -D ${DBNAME} -u ${DBUSER} -p${DBPASSWD}"
TMP=/var/tmp/
ENTRIES_FILE="${TMP}entries.$$"

# Find option tables
for OPTION_TABLE in $( echo 'show tables like "%wp%options";' | ${MYSQL} )
do
    # Find up to five large long expired transients
    ${MYSQL} > ${ENTRIES_FILE} <<EOF
    select option_name from ${OPTION_TABLE} where option_name in
        (select concat("_transient",substr(option_name,19))
            FROM ${OPTION_TABLE} WHERE option_name LIKE '_transient_timeout%' AND
            option_value < UTC_TIMESTAMP() - INTERVAL 1 WEEK order by option_value)
    order by length(option_value) desc limit 5;
EOF
    for OPTION in $( < ${ENTRIES_FILE} )
    do
        echo Deleting ${OPTION} from ${OPTION_TABLE}
        echo delete from ${OPTION_TABLE} where option_name = \"${OPTION}\"\; | ${MYSQL}
        if [[ $? -eq 0 ]]; then
            echo delete from ${OPTION_TABLE} where option_name = \"_transient_timeout${OPTION:10}\"\; | ${MYSQL}
        fi
    done
done
rm -f ${ENTRIES_FILE}
2
ClearCrescendo

Installieren Sie das Plugin Delete Expired Transients , um die Datenbank täglich automatisch zu bereinigen.

0
Jonas Berlin