Verschieben einiger Kommentare aus der Diskussion in eine Antwort mit Neuformulierung und Neuformatierung.
Grundsätzlich kommt es darauf an, dass sie nicht wirklich "Müll gesammelt" werden müssen, es sei denn, Sie haben einen Super-Extremfall. Wenn Sie sie nie abholen, spielt es keine Rolle, ob sie dort sind oder nicht.
Siehe, Transienten werden standardmäßig in der Optionstabelle gespeichert. In einer Basisinstallation enthält die Optionstabelle möglicherweise 100 Einträge. Jeder Übergang fügt zwei weitere Einträge hinzu. Auch wenn Sie Tausende Einträge haben, wirken sich diese nicht auf die Site-Geschwindigkeit aus, da sie nicht automatisch geladen werden.
Beim Start lädt WordPress die Optionen in den Speicher, lädt jedoch nur Optionen, deren Autoload-Flag aktiviert ist. Transienten erhalten dies nicht und werden daher nicht in den Speicher geladen. Nur Transienten, die später tatsächlich verwendet werden, verursachen Kosten.
Aus Sicht der Datenbank enthält die Optionstabelle Indizes sowohl für die Options-ID als auch für den Optionsnamen. Transienten werden immer auf der Grundlage des Namens (Schlüssels) geladen, und die Suche nach ihnen ist immer eine einfache Auswahl für einen einzelnen eindeutigen Schlüsselwert. Die Suche lautet also O (log (n)) und ist superschnell. Mit einem Big-O von log (n) müssten Sie in die Millionen und Abermillionen von Zeilen vordringen, bevor es auffällt. Ehrlich gesagt ist der Aufwand für das Einrichten und Herunterfahren der Abfrage sowie für die eigentliche Datenübertragung viel länger. Die Abfrage selbst wird im Vergleich im Wesentlichen null-mal ausgeführt. Das bloße Vorhandensein zusätzlicher nicht verwendeter Zeilen wirkt sich also nur auf die Verwendung von zusätzlichem Speicherplatz aus.
Das Indizieren in Datenbanken ist eine dieser tief gelesenen Ideen, die für Leute, die nicht wirklich verstanden haben, was sich hinter den Kulissen abspielt, keinen Sinn ergibt. Datenbanken sind für den schnellen Abruf von Daten von Grund auf ausgelegt und können solche Aufgaben problemlos ausführen. Dies ist eine ziemlich gute Lektüre: http://en.wikipedia.org/wiki/Index_(database )
Jetzt werden sie bei einer Bereinigung auf offensichtlichste Weise (durch Aufrufen von SQL DELETE) nicht mehr aus der Datenbank gelöscht. Sie werden einfach aus dem Index entfernt und die Zeile als "gelöscht" markiert. Wiederum funktionieren Datenbanken genau so. Um den Speicherplatz tatsächlich freizugeben, müssen Sie fortfahren und anschließend eine OPTIMIZE TABLE ausführen. Dies ist keine schnelle Operation. Es braucht Zeit. Wahrscheinlich mehr Zeit als es wert ist. Es reicht wahrscheinlich nicht aus, um insgesamt CPU-Zeit einzusparen.
Wenn in einem bestimmten Fall ständig neue Transienten eingefügt werden, die nicht verwendet werden, müssen Sie stattdessen das zugrunde liegende Problem suchen. Was ist das Einfügen dieser Transienten? Verwenden sie einen sich ändernden oder mutierenden Schlüssel? Wenn ja, dann sollte das Plugin oder der Code, der dies verursacht, im Grunde genommen nicht so sein. Das ist hilfreicher, da der Code, der sie nicht richtig erstellt, sie wahrscheinlich auch nicht abruft und damit mehr Arbeit leistet, als er tun muss.
Andererseits kann es vorkommen, dass für so etwas wie jeden Post Transienten erstellt werden. Dies kann in der Tat durchaus akzeptabel sein. Ich mache das selbst in SFC, um eingehende Kommentare von Facebook zu speichern. Mit jedem Post ist ein potenzieller Transient verbunden, dh zwei zusätzliche Zeilen pro Post. Wenn Sie 10.000 Posts haben, haben Sie (eventuell) 20.000 Zeilen in der Optionstabelle. Dies ist weder schlecht noch langsam, da es, soweit es die Datenbanken wirklich betrifft, kaum Unterschiede zwischen 100 Zeilen und 20.000 Zeilen gibt. Es ist alles indiziert. Es ist verdammt schnell. Sub-Sub-Millisekunden.
Wenn Sie anfangen, in Millionen von Reihen zu geraten, wäre ich besorgt. Wenn die Größe der Optionstabelle über Hunderte von Megabyte steigt, würde ich mir genug Sorgen machen, um genauer hinzuschauen. Im Allgemeinen ist dies jedoch kein Problem, mit Ausnahme von Extremfällen. Es ist mit Sicherheit kein Problem für etwas Kleineres als eine große Nachrichtenseite mit Hunderttausenden von Posts. Und für jede Site, die groß genug ist, um ein Problem zu verursachen, sollten Sie einen externen Objektcache verwenden. In diesem Fall werden die Transienten dort automatisch gespeichert und nicht in der Datenbank.