Déplacement de certains commentaires de la discussion dans une réponse, avec reformulation et reformatage.
En gros, si on a un cas extrême, ils n'ont pas vraiment besoin d'être "ramassés". Si vous ne les récupérez jamais, peu importe qu'ils soient là ou non.
Voir, les transitoires sont stockés dans la table d'options par défaut. Dans une installation de base, la table d'options contiendra peut-être 100 entrées. Chaque transitoire ajoute deux entrées supplémentaires, mais même si vous en avez des milliers, elles n’affectent pas la vitesse du site, car elles ne sont pas chargées automatiquement.
Au démarrage, WordPress charge les options en mémoire, mais il ne charge que les options dont l'indicateur de chargement automatique est activé. Les passagers ne comprennent pas cela et ne sont donc pas chargés en mémoire. Seuls les transitoires qui seront effectivement utilisés plus tard entraîneront des coûts.
Du point de vue de la base de données, la table des options contient des index sur l’option Id et sur le nom de l’option. Les transitoires sont toujours chargés en fonction du nom (clé). Par conséquent, leurs recherches sont toujours simples et se font sur une seule valeur de clé. Ainsi, la recherche est O (log (n)) et est super rapide. Avec un Big-O de log (n), il faudrait entrer dans les millions et les millions de lignes avant que cela devienne perceptible. Franchement, le temps système nécessaire à la configuration et à la suppression de la requête, ainsi que le transfert des données, est beaucoup plus long. La requête elle-même s'exécute pratiquement à zéro heure par comparaison. Donc, le simple fait d’ avoir des rangées inutilisées en plus n’affecte que l’utilisation d’espace disque supplémentaire.
L'indexation dans les bases de données est l'une de ces idées profondes qui n'a pas de sens pour ceux qui n'ont pas encore compris ce qui se passe dans les coulisses. Les bases de données sont conçues pour une récupération rapide des données, à partir de la base, et peuvent gérer ce genre de choses sans problèmes. C'est une très bonne lecture: http://en.wikipedia.org/wiki/Index_(database )
Désormais, le nettoyage de la manière la plus évidente (appeler SQL DELETE sur eux) ne les supprime pas réellement de la base de données. Il les supprime simplement de l'index et marque la ligne comme "supprimée". Encore une fois, c’est ainsi que fonctionnent les bases de données. Pour réellement libérer de l’espace disque, vous devez continuer et exécuter ensuite une table OPTIMIZE TABLE. Il ne s’agit pas d’une opération rapide. Ça prend du temps. Probablement plus de temps que ça en vaut la peine. Ce n'est probablement pas suffisant pour vous permettre d'économiser du temps processeur au total.
Si certains cas entraînent une insertion continue de nouveaux transitoires qui ne sont pas utilisés, vous devez alors rechercher le problème sous-jacent. Qu'est-ce que l'insertion de ces transitoires? Utilisent-ils une clé changeante ou en mutation? Si tel est le cas, le plug-in ou le code à l'origine de ce problème doit être corrigé pour ne pas le faire. Ce sera plus utile, car il est probable que le code qui ne les crée pas correctement ne les récupère pas non plus, ce qui représente plus de travail que nécessaire.
D'autre part, il peut arriver que des transitoires soient créés pour quelque chose comme toutes les publications. Cela peut en effet être parfaitement acceptable. Je le fais moi-même dans SFC, pour stocker les commentaires entrants de Facebook. Chaque publication est associée à un transitoire potentiel, ce qui signifie deux lignes supplémentaires par publication. Si vous avez 10k postes, vous aurez 20k lignes dans la table d'options (éventuellement). Ce n'est ni mauvais ni lent, car encore une fois, il y a très peu de différence entre 100 et 20 000 lignes pour ce qui est des bases de données. Tout est indexé. C'est rapide comme bonjour. Sous-sous-millisecondes.
Quand tu commences à entrer dans des millions de rangs, je m'inquiète. Lorsque la taille de la table d'options dépasse plusieurs centaines de mégaoctets, je serais suffisamment préoccupée pour examiner de plus près. Mais d’une manière générale, ce n’est pas un problème, sauf dans les cas extrêmes. Ce n’est certainement pas un problème pour des projets plus petits qu’un site comme un grand site d’informations, avec des centaines de milliers de messages. Et pour tout site suffisamment grand pour poser problème, vous devez utiliser un type de cache d’objets externe. Dans ce cas, les éléments transitoires sont automatiquement stockés dans cette base plutôt que dans la base de données.