Problema de performance no Moodle sobre ordenamento de cursos

Problema de performance no Moodle sobre ordenamento de cursos

por Lino Vaz Moniz -
Número de respostas: 0

Se você tiver uma carga muito grande de cursos cadastrados no Moodle, em torno de dezena de milhares, vai deparar com a lentidão quando for criar um novo curso ou então ao mudar um curso de categoria.


Essa lentidão se deve ao fato do Moodle reordenar cada um dos cursos, ao criar um novo curso. Para cada curso, será enviada ao banco o query abaixo:

UPDATE mdl_course SET sortorder = ? WHERE id=?


Cada query roda em tempo aceitável. Devido a carga, acaba demorando. Imagine 20 mil queries desse numa só tacada.

Isso é uma falha do Moodle que reprocessa ordenamento de todos os cursos quando um curso for criado.  Essa falha torna visível apenas quando houver dezena de milhares de cursos, o que é um caso pouco comum.

Essa falha já foi registrada no tracker do Moodle: https://tracker.moodle.org/browse/MDL-25669 em  2010.

Para efeito de teste, foi desativado  a função fix_course_sortorder() que fica no arquivo MOODLE_DIR/lib/datalib.php responsável para o reordenamento do curso. Após isso, o tempo para criar um curso ficou em torno de 4 segundos. 

Para desativar essa função, siga os seguintes passos:


1)    Abra o arquivo MOODLE_DIR/libdata/lib.php
2)    Localize a função fix_course_sortorder() que fica aproximadamente na linha 861;
3)    No inicio dessa função, adicione a seguinte linha de comando:
return null;
Esse comando deve ficar antes do comando:
global $DB, $SITE;
4)    Salve a alteração