-
Improvement
-
Resolution: Won't Do
-
Minor
-
None
-
2.9.8, 3.0.6, 3.1.2
-
MOODLE_29_STABLE, MOODLE_30_STABLE, MOODLE_31_STABLE
LMS's with large tables (~200M rows) appear to be by default configurations; larger tables should have partitioning (https://dev.mysql.com/doc/refman/5.6/en/partitioning.html) features pre-enabled for tables >100M rows.
Tables such as (but not limited to):
log
message
message_read
question_attempts
question_attempt_steps
question_attempt_step_data
should all have partitioning code added by the Installer to handle at least large table partitions (including but not limited to partitioning the log table by type may be more beneficial for reports instead of by Index count).
Ideally partitions are created via the Install XML configuration file when the LMS is generated. In cases such as log (which should be partitioned by YEAR this may require additional code to inject a new partition frame for each year in use).
This may look like foreach($years_running as $year)
{ // add new partition code }