I observed that Hibernate layer is firing unnecessary queries to DB. This is
observed in getPortal(String name) method of ContextImpl class.
This method called from getDashboard(User user) method of
CustomizationManagerService.
I put following sop in getPortal(String name) method.
| public Portal getPortal(String name)
| {
| System.out.println("before getChild(name);===>");
| PortalObject child = getChild(name);
| System.out.println("After getChild(name);===>");
| if (child instanceof Portal)
| {
| return (Portal)child;
| }
| return null;
| }
|
and these are the logs from server
| before getChild(name);===>
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
children0_.PARENT_KEY as PARENT4_1_, children0_.PK as PK1_, children0_.NAME as
NAME1_, children0_.PK as PK9_0_, children0_."PATH" as PATH2_9_0_,
children0_.NAME as NAME9_0_, children0_.PARENT_KEY as PARENT4_9_0_ from
JBP_OBJECT_NODE children0_ where children0_.PARENT_KEY=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] Hibernate: select
portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_POR!
TAL_OBJECT_PROPS declaredpr1_ on portalobje0_.PK=declaredpr1_.OBJECT_KEY left
outer join JBP_PORTAL_MODE modes2_ on portalobje0_.PK=modes2_.PK left outer
join JBP_PORTAL_WINDOW_STATE windowstat3_ on portalobje0_.PK=windowstat3_.PK
where portalobje0_.PK=?
| [Location: 152 Method: write] INFO [STDOUT] After getChild(name);===>
|
So in this following query is being fired repeatedly.
| select portalobje0_.PK as PK10_0_, portalobje0_.LISTENER as LISTENER10_0_,
portalobje0_4_.INSTANCE_REF as INSTANCE2_18_0_, case when portalobje0_1_.PK is
not null then 1 when portalobje0_2_.PK is not null then 2 when
portalobje0_3_.PK is not null then 3 when portalobje0_4_.PK is not null then 4
when portalobje0_.PK is not null then 0 end as clazz_0_,
declaredpr1_.OBJECT_KEY as OBJECT1_2_, declaredpr1_.jbp_VALUE as jbp2_2_,
declaredpr1_.NAME as NAME2_, modes2_.PK as PK3_, modes2_.name as name3_,
windowstat3_.PK as PK4_, windowstat3_.name as name4_ from JBP_PORTAL_OBJECT
portalobje0_ left outer join JBP_CONTEXT portalobje0_1_ on
portalobje0_.PK=portalobje0_1_.PK left outer join JBP_PORTAL portalobje0_2_ on
portalobje0_.PK=portalobje0_2_.PK left outer join JBP_PAGE portalobje0_3_ on
portalobje0_.PK=portalobje0_3_.PK left outer join JBP_WINDOW portalobje0_4_ on
portalobje0_.PK=portalobje0_4_.PK left outer join JBP_PORTAL_OBJECT_PROPS
declaredpr1_ on portalobje0_.PK=declaredp!
r1_.OBJECT_KEY left outer join JBP_PORTAL_MODE modes2_ on
portalobje0_.PK=modes2_.PK left outer join JBP_PORTAL_WINDOW_STATE windowstat3_
on portalobje0_.PK=windowstat3_.PK where portalobje0_.PK=?
The no. of times this query gets fired is equal to no. of children of
dashboardContext in Database.
I used following query to know the no. of children of dashboardContext in
Database.
| select count(*) from JBP_OBJECT_NODE where PARENT_KEY=8
|
It's true that these query gets fired only first time of method call. All
subsequent data comes from cache.
But It is a performance issue since suppose there are thousands user dashboard,
then this query will be fired thousands time before end user see his Dashboard
first time.
Is there any workaround??
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4228994#4228994
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4228994
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user