An administrator can limit the size of certain tables in the database by setting appropriate options in Settings > Site administration > Server > Cleanup.
Delete unconfirmed users after
If you're using Email-based self-registration users must confirm their account within a certain time-frame. Once the time set here has passed, any account that hasn't been confirmed will be deleted. 7 days is a good setting.
Delete incomplete users after
The period after which old not-fully-set-up accounts are deleted may be set (from 1 day to never).
(What is the definition of a "not-fully-set-up account"? What criteria needs to be met for an account to be fully-set-up?)
Keep logs for
Moodle keeps extensive logs of user activity. Eventually, however, the logs will become so large that they begin to clog your server. Limiting the length of time logs are kept for will reduce database table size. Generally, a year is enough time to keep logs for.
Disable grade history
History tracking of changes in grades-related tables may be disabled by checking the disablegradehistory box.
Grade history lifetime
The length of time that the history of changes in grade-related tables is kept may be set (from 30 days to never).
Note: For users who have upgraded to Moodle 2 from 1.9, the setting 'Unsubscribe users from courses after' in Cleanup has been replaced by 'Unenrol inactive after' in Self enrolment. i.e. the setting now applies ONLY to users who self-enrolled.
- Using Moodle How do I prune mdl_log table? forum discussion