[Building Sakai] Site Stats 2 Performance

Noah Botimer botimer at umich.edu
Wed Dec 30 07:26:45 PST 2009


Another place where this came up recently is SAK-16557. It appeared to  
be specific to Oracle, but this may not be the case. We found 50+ OSP  
indexes that were not created by Hibernate. Most of them are on  
foreign key relationships where their absence came as a surprise.

Thanks,
-Noah

On Dec 29, 2009, at 11:55 AM, Nuno Fernandes <nuno at ufp.edu.pt> wrote:

> 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/20091230/9618ebdd/attachment.html 


More information about the sakai-dev mailing list