[Building Sakai] Site Stats 2 Performance

Earle Nietzel Earle.Nietzel at marist.edu
Tue Dec 29 10:32:11 PST 2009


Thanks for the links, very helpful.

Earle



From:
Nuno Fernandes <nuno at ufp.edu.pt>
To:
Earle Nietzel <Earle.Nietzel at marist.edu>
Cc:
sakai-dev at collab.sakaiproject.org
Date:
12/29/2009 11:55 AM
Subject:
Re: [Building Sakai] Site Stats 2 Performance
Sent by:
sakai-dev-bounces at collab.sakaiproject.org



Hi Earle!!

Thank you very much for sharing your results!

Unfortunately, some bug with MySQL + Hibernate combination prevents that 
hibernate creates the proper table indexes when using auto.ddl (I believe 
this bug stills occurring). 

You may also check other useful SiteStats indexes that will speed up other 
queries:

MySQL:
https://source.sakaiproject.org/contrib/ufp/sitestats/trunk/schema/mysql_schema-export.sql

Oracle:
https://source.sakaiproject.org/contrib/ufp/sitestats/trunk/schema/oracle_schema-export.sql

Thank you,
Nuno


On Tue, Dec 29, 2009 at 4:05 PM, Earle Nietzel <Earle.Nietzel at marist.edu> 
wrote:
Site Statistics 2 was showing some long queries against table 
SST_RESOURCES. 

select SITE_ID, 
      USER_ID, 
      sum(resourcest0_.RESOURCE_COUNT) as col3 
from SST_RESOURCES 
where SITE_ID='33964def-1fd2-4384-97ae-5194b7ed4f02' 
      and RESOURCE_ACTION='read' 
      and (RESOURCE_REF like 
'/content/group/33964def-1fd2-4384-97ae-5194b7ed4f02/%') 
      and RESOURCE_DATE>='2009-10-21' 
      and RESOURCE_DATE<'2009-12-29' 
group by SITE_ID, 
      USER_ID 
order by col3 DESC; 

After profiling this query: 

+------+----------------------+----------+---------+---------+---------+---------+ 

| seq  | state                | numb_ops | sum_dur | avg_dur | sum_cpu | 
avg_cpu | 
+------+----------------------+----------+---------+---------+---------+---------+ 

|    1 | starting             |        1 | 0.00006 | 0.00006 | 0.00000 | 
0.00000 | 
|    2 | Opening tables       |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|    3 | System lock          |        1 | 0.00000 | 0.00000 | 0.00000 | 
0.00000 | 
|    4 | Table lock           |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|    5 | init                 |        1 | 0.00003 | 0.00003 | 0.00000 | 
0.00000 | 
|    6 | optimizing           |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|    7 | statistics           |        1 | 0.00002 | 0.00002 | 0.00000 | 
0.00000 | 
|    8 | preparing            |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|    9 | Creating tmp table   |        1 | 0.00004 | 0.00004 | 0.00000 | 
0.00000 | 
|   10 | Sorting for group    |        1 | 0.00000 | 0.00000 | 0.00000 | 
0.00000 | 
|   11 | executing            |        1 | 0.00000 | 0.00000 | 0.00000 | 
0.00000 | 
|   12 | Copying to tmp table |        1 | 5.50261 | 5.50261 | 5.50816 | 
5.50816 | 
|   13 | Sorting result       |        1 | 0.00003 | 0.00003 | 0.00000 | 
0.00000 | 
|   14 | Sending data         |        1 | 0.00004 | 0.00004 | 0.00000 | 
0.00000 | 
|   15 | end                  |        3 | 0.00001 | 0.00000 | 0.00000 | 
0.00000 | 
|   16 | removing tmp table   |        1 | 0.00002 | 0.00002 | 0.00000 | 
0.00000 | 
|   19 | query end            |        1 | 0.00000 | 0.00000 | 0.00000 | 
0.00000 | 
|   20 | freeing items        |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|   21 | closing tables       |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
|   22 | logging slow query   |        1 | 0.00000 | 0.00000 | 0.00000 | 
0.00000 | 
|   23 | cleaning up          |        1 | 0.00001 | 0.00001 | 0.00000 | 
0.00000 | 
+------+----------------------+----------+---------+---------+---------+---------+ 


Step 12 is the culprit which leads to believe that there is possibly no 
index on field used in GROUP BY. 

CREATE TABLE `SST_RESOURCES` ( 
  `ID` bigint(20) NOT NULL auto_increment, 
  `USER_ID` varchar(99) NOT NULL, 
  `SITE_ID` varchar(99) NOT NULL, 
  `RESOURCE_REF` varchar(255) NOT NULL, 
  `RESOURCE_ACTION` varchar(12) NOT NULL, 
  `RESOURCE_DATE` date NOT NULL, 
  `RESOURCE_COUNT` bigint(20) NOT NULL, 
  PRIMARY KEY  (`ID`), 
  KEY `SST_RESOURCES_USER_ID_I` (`USER_ID`) 
) 

hmmm no index on SITE_ID. 

Adding the following index: 

CREATE INDEX SST_RESOURCES_SITE_ID_I ON SST_RESOURCES (SITE_ID); 

Reduced the query from 5.5 seconds to .07 seconds. 

Nice speed up, 
Earle
_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to 
sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of 
"unsubscribe"



-- 
Nuno Fernandes

Profile    | http://facebook.com/nfgrilo | http://linkedin.com/in/nfgrilo
Web      | http://codingwithcoffee.com | http://twitter.com/nfgrilo
Work     | Analyst/Programmer @ UFP-UV [http://elearning.ufp.pt]
             | Analyst/Programmer @ Sakai Foundation [
http://sakaiproject.org]
             | Sakai Fellow 2008 @ Sakai Foundation [
http://confluence.sakaiproject.org//x/6oCTAQ]
Address | Universidade Fernando Pessoa  [http://www.ufp.pt]
             | Praça 9 de Abril, 349    | 4249-004 Porto
             | tel: + 351 22 507 13 00 | fax: + 351 22 550 82 69
_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to 
sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of 
"unsubscribe"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20091229/6d046afa/attachment.html 


More information about the sakai-dev mailing list