-
Improvement
-
Resolution: Duplicate
-
Minor
-
None
-
4.0.12, 4.1.9, 4.2.6, 4.3.3, 4.4
-
MOODLE_400_STABLE, MOODLE_401_STABLE, MOODLE_402_STABLE, MOODLE_403_STABLE, MOODLE_404_STABLE
I think I have successfully resolved a persistent slow query issue in the bump_submission_for_stale_conversions task within Moodle, significantly improving execution time from over a day to less than 20 seconds on our (huge) database.
Changes made :
... AND f3.contextid = f1.contextid AND ...
|
WHERE f1.component = 'assignsubmission_file' AND ...
|
These modifications were applied to the bump_submission_for_stale_conversions.php file, ensuring the optimal utilization of database indexes and resulting in a substantial reduction in query execution time.
My local commit :
commit b83ae7c074744a6f4bf802ff6fdb3bdb98403064 (HEAD -> core_modification_401, origin/core_modification_401)
|
Author: Piton Olivier <olivier@cblue.be> |
Date: Thu Dec 21 09:45:00 2023 +0100 CB-632377 - core modifications - improve bump_submission_for_stale_conversions ad hoc taskdiff --git a/mod/assign/feedback/editpdf/classes/task/bump_submission_for_stale_conversions.php b/mod/assign/feedback/editpdf/classes/task/bump_submission_for_stale_conversions.php |
index 05f4815f372..eda71522c51 100644 |
--- a/mod/assign/feedback/editpdf/classes/task/bump_submission_for_stale_conversions.php
|
+++ b/mod/assign/feedback/editpdf/classes/task/bump_submission_for_stale_conversions.php
|
@@ -39,6 +39,8 @@ class bump_submission_for_stale_conversions extends adhoc_task { |
|
/** |
* Run the task.
|
+ *
|
+ * @throws \dml_exception // CBLUE - #632377 -- Add to hide editor's warnings
|
*/
|
public function execute() { |
global $DB;
|
@@ -67,22 +69,23 @@ class bump_submission_for_stale_conversions extends adhoc_task { |
// Also check if the file has a greater modified time than the submission, if it does |
// that means it is both stale (as per the above) and will never be reconverted. |
$sql = "SELECT f3.id, f3.timemodified as fmodified, asu.id as submissionid
|
- FROM {files} f1
|
- LEFT JOIN {files} f2 ON f1.contenthash = f2.filename
|
- AND f2.component = 'core' AND f2.filearea = 'documentconversion' |
- JOIN {assign_submission} asu ON asu.id = f1.itemid
|
- JOIN {assign_grades} asg ON asg.userid = asu.userid AND asg.assignment = asu.assignment
|
- JOIN {files} f3 ON f3.itemid = asg.id
|
- WHERE f1.filearea = 'submission_files' |
- AND f3.timecreated >= :earliest
|
- AND ($extensionsql)
|
- AND f2.filename IS NULL
|
- AND f3.component = 'assignfeedback_editpdf' |
- AND f3.filearea = 'combined' |
- AND f3.filename = 'combined.pdf' |
- AND f3.timemodified >= asu.timemodified";
|
+ FROM {files} f1
|
+ JOIN {assign_submission} asu ON asu.id = f1.itemid
|
+ JOIN {assign_grades} asg ON asg.userid = asu.userid AND asg.assignment = asu.assignment
|
+ JOIN {files} f3 ON f3.component = 'assignfeedback_editpdf' |
+ AND f3.filearea = 'combined' |
+ AND f3.filename = 'combined.pdf' |
+ AND f3.contextid = f1.contextid -- CBLUE - #632377 -- add this condition to use index |
+ AND f3.itemid = asg.id
|
+ AND f3.timemodified >= asu.timemodified
|
+ LEFT JOIN {files} f2 ON f1.contenthash = f2.filename AND f2.component = 'core' AND f2.filearea = 'documentconversion' |
+ WHERE f1.component = 'assignsubmission_file' -- CBLUE - #632377 -- add this condition to use index |
+ AND f1.filearea = 'submission_files' |
+ AND f3.timecreated >= :earliest
|
+ AND ($extensionsql)
|
+ AND f2.filename IS NULL";
|
|
- $submissionstobump = $DB->get_records_sql($sql, ['earliest' => $earliestconversion->min] + $extensionparams); |
+ $submissionstobump = $DB->get_recordset_sql($sql, ['earliest' => $earliestconversion->min] + $extensionparams); // CBLUE - #632377 -- improve performance |
foreach ($submissionstobump as $submission) {
|
|
// Set the submission modified time to one second later than the |
@@ -98,6 +101,7 @@ class bump_submission_for_stale_conversions extends adhoc_task { |
mtrace('Set submission ' . $submission->submissionid . ' timemodified to ' . $newmodified); |
$DB->update_record('assign_submission', $record); |
}
|
+ $submissionstobump->close(); // CBLUE - #632377 -- improve performance |
}
|
}
|
}
|
Kind regards,
Olivier
- is duplicated by
-
MDL-77202 Query performance - bump_submission_for_stale_conversions
-
- Open
-