[gradebook2-dev] Gradebook2: Students' list takes a long time to load completly

RAUL SANCHEZ VEGAS raulsv at um.es
Mon Feb 4 06:08:03 PST 2013


Hi all

We are experimenting a problem with Gradebook2. When a site has too many 
sections (i.e. 10 sections), the list of students takes more than 3 or 4 
minutes to load completly. When the instructor changes to another page, 
it takes again more than 3 or 4 minutes until the students list is 
displayed.

The reason is that Gradebook2 tries to load all students' scores of all 
assignments using the following query.

*/Class: GradebookToolServiceImpl.java, /**/
/**/method: /**/List<AssignmentGradeRecord> 
getAllAssignmentGradeRecords(final Long gradebookId, final String[] 
realmIds, final String[] roleNames)/*

/SELECT   assignment0_.ID AS ID1032_, //
//        assignment0_.VERSION AS VERSION1032_, //
//        assignment0_.GRADABLE_OBJECT_ID AS GRADABLE4_1032_, //
//        assignment0_.STUDENT_ID AS STUDENT5_1032_, //
//        assignment0_.GRADER_ID AS GRADER6_1032_, //
//        assignment0_.DATE_RECORDED AS DATE7_1032_, //
//        assignment0_.POINTS_EARNED AS POINTS8_1032_, //
//        assignment0_.IS_EXCLUDED_FROM_GRADE AS IS9_1032_ //
// FROM   GB_GRADE_RECORD_T assignment0_, //
//        GB_GRADABLE_OBJECT_T gradableob1_, //
//        SAKAI_REALM realm2_, //
//        SAKAI_REALM_RL_GR realmgroup3_, //
//        SAKAI_REALM_ROLE realmrole4_ //
//WHERE       assignment0_.OBJECT_TYPE_ID = 1 //
//        AND assignment0_.GRADABLE_OBJECT_ID = gradableob1_.ID //
//        AND assignment0_.STUDENT_ID = realmgroup3_.USER_ID //
//        AND realmgroup3_.ROLE_KEY = realmrole4_.ROLE_KEY //
//        AND realm2_.REALM_KEY = realmgroup3_.REALM_KEY //
//        AND gradableob1_.GRADEBOOK_ID = :1 //
//        AND (realm2_.REALM_ID IN (:2, :3, :4, :5, :6, :7, :8, :9, :10, 
:11)) //
//        AND (gradableob1_.REMOVED = 0 OR gradableob1_.REMOVED IS NULL) //
//        AND (realmrole4_.ROLE_NAME IN (:12)) //
/
This query takes a long time if there are too many sections. We have 
investigated the way to reduce this time:

The query is searching for all users (in that particular site) matching 
in rol and sections, and that also have assignments with grades in 
gradebook2. We think that the query should be split into 2 queries:


First query

/SELECT REALMGROUP3_.USER_ID//
// FROM   SAKAI_REALM realm2_,//
//        SAKAI_REALM_RL_GR realmgroup3_,//
//        SAKAI_REALM_ROLE realmrole4_//
//WHERE   realmgroup3_.ROLE_KEY = realmrole4_.ROLE_KEY//
//        AND realm2_.REALM_KEY = realmgroup3_.REALM_KEY//
//        AND (realm2_.REALM_ID IN (//:2, :3, :4, :5, :6, :7, :8, :9, 
:10, :11)//) //
//        AND (realmrole4_.ROLE_NAME IN (//:12//))/

Second query

/SELECT   assignment0_.ID AS ID1032_,//
//        assignment0_.VERSION AS VERSION1032_,//
//        assignment0_.GRADABLE_OBJECT_ID AS GRADABLE4_1032_,//
//        assignment0_.STUDENT_ID AS STUDENT5_1032_,//
//        assignment0_.GRADER_ID AS GRADER6_1032_,//
//        assignment0_.DATE_RECORDED AS DATE7_1032_,//
//        assignment0_.POINTS_EARNED AS POINTS8_1032_,//
//        assignment0_.IS_EXCLUDED_FROM_GRADE AS IS9_1032_//
// FROM   GB_GRADE_RECORD_T assignment0_,//
//        GB_GRADABLE_OBJECT_T gradableob1_//
//WHERE       assignment0_.OBJECT_TYPE_ID = 1//
//        AND assignment0_.GRADABLE_OBJECT_ID = gradableob1_.ID//
//        AND (gradableob1_.REMOVED = 0 OR gradableob1_.REMOVED IS NULL)//
//        AND gradableob1_.GRADEBOOK_ID = //:1 //
//        AND assignment0_.STUDENT_ID IN//
//        (:2)/

The first query returns the list of the users (in that particular site) 
matching in rol and sections. The second query returns all scores of all 
assignments from the students obtained from the first query. These 2 
queries together take about 4 or 5 seconds. The original query takes 
about 3 or 4 minutes.

Has anyone faced the same problem? Does anyone have other solutions?

Thanks,
Raúl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/gradebook2-dev/attachments/20130204/b0cd8079/attachment.html 


More information about the gradebook2-dev mailing list