Il faut savoir que le nombre d'utilisateurs dans la table mdl_user n'est pas la plus grande source de charge dans la base de données.
L'une des sources les plus importantes est la croissance des tables message, message_read, forum_posts, forum_discussions, et éventuellement chat_message si les discussions en ligne sont très utilisées.
Mais surtout ce sont les tables mdl_log et mdl_mnet_log (dans le cas de l'utilisation du réseau MNET) qui croissent énormément.
Une bonne stratégie est de récupérer ces logs (dumper la table par exemple) si vous voulez les conserver, et nettoyer cette table en ne gardant que un à deux mois de traces.
Il est aussi possible après avoir supprimé des utilisateurs, d'exécuter la requete de nettoyage suivante :
Table mdl_log :
DELETE mdl_log WHERE userid IN (SELECT id FROM mdl_user WHERE deleted = 1)
Table des messages (message et message_read) :
DELETE mdl_message WHERE useridfrom IN (SELECT id FROM mdl_user WHERE deleted = 1) OR useridto IN (SELECT id FROM mdl_user WHERE deleted = 1)
Ces deux commandes SQL nettoyent correctement les messages et les traces de ces utilisateurs mais vous perdez évidemment ces traces.
Ces commandes de nettoyage peuvent être généralement construites pour d'autres tables, dès qu'un champ (souvent, "userid", ou "studentid" ou "teacherid" apparaît).
Il faut être bien sûr de ne pas voir réapparaître cette personne dans le futur...
Ces commandes peuvent être exécutées copiées telles que sur une installation standard via la console SQL de PhpMyAdmin.
Cheers.