  | 
 IDS Forum
 Re: Fw: Optimizer
 Posted By: Fernando Nunes Date: Thursday, 29 March 2012, at 1:49 p.m.
In Response To: Re: Fw: Optimizer (Peter_Logan@spartanstores.com)
  
Hmmmm... How do you have the EXT_DIRECTIVES parameter in onconfig?
 Regards.
 On Thu, Mar 29, 2012 at 3:06 PM, Peter_Logan@spartanstores.com <
 Peter_Logan@spartanstores.com> wrote:
 > Ok .. here is the really strange thing ...
 >
 > If I do away with the function ... and put in place the fiscal week id ...
 > then up until week 36 one query plan is used ... and then from week 37 on,
 > a different query plan is used ... The first plan runs in a minute...the
 > second several minutes ... when I put the directive on the query and
 > force it to use the order of the tables that was chosen by the optimizer
 > it always runs in a minute ...
 >
 > I'm trying to see if an external directive will work for this one .. just
 > to give them that as a choice .. but I can't seem to get that working ...
 > I can save the external directive, but when I execute the sql, the
 > explain doesn't show the directive being used ... and I'm using the exact
 > sql to create the directive as well as execute the sql ... wondering if
 > the function in the sql is messing that up ...
 >
 > Peter Logan
 > Senior Database Administrator
 > Phone: 616/878-8309
 >
 > From: "Fernando Nunes" <domusonline@gmail.com>
 > To: ids@iiug.org
 > Date: 03/29/2012 09:52 AM
 > Subject: Re: Fw: Optimizer [26597]
 > Sent by: ids-bounces@iiug.org
 >
 > Hmmm.... Yes, I think I can understand the point, although tables schema
 > would help.
 > I believe the problem is a well known issue (notice I use "issue" instead
 > of "bug"). And recent versions have been seeing changes in that area.
 >
 > Would I be correct to assume the bad query plan is using a date/datetime
 > index? This could be one source of the problem, but in your case it's
 > probably another issue.
 > You're asking the optimizer to calculate a query plan based on the unknown
 >
 > result of a user function. As such the optimizer must consider/estimate a
 > selectivity. Too low will make that index non attractive, and too high
 > makes it too attractive. And the dramatic issue is that it has no way to
 > make a good estimate.
 >
 > I believe that recent versions (11.50.FC9 and maybe 11.70.FC2/3) may have
 > change the way this selectivity is calculated. This solved many customer's
 >
 > problems and probably caused problems to many others...
 >
 > I'm not in developing but I believe 11.70.FC4 may have changed this. And
 > eventually some improvements may appear in the future. Would it be too
 > hard
 > for you to try that query on 11.70.FC4?
 >
 > Of course, if you had the chance to avoid the use of the function and give
 >
 > it the value the problem should not happen.
 > If you're sure that the query should NEVER use that index (on the column
 > you're comparing with the function result), you can use some sort of
 > operation on it. For example:
 >
 > my_column + 0 UNITS DAY = ( SELECT WEEKID(...) FROM systables WHERE tabid
 > =
 > 0)
 >
 > This will avoid the use of any index on that column and will not change
 > the
 > result set... hmmmm... But again, if that's a query generated from a tool
 > this may not be feasible.
 >
 > P.S.: Above I avoided using the term "bug" because this is a nasty
 > situation... We must consider some value for selectivity, but we have no
 > idea about the possible or probable result of the function. So basically
 > we're blind... I can't imagine a good solution (that will fit all the
 > scenarios) for this.
 >
 > Regards.
 >
 > On Thu, Mar 29, 2012 at 1:27 PM, Peter_Logan@spartanstores.com <
 > Peter_Logan@spartanstores.com> wrote:
 >
 > > Thanks for the reply ... Yes, the auto stats updating has been disabled
 > > ... and I am aware of the external optimizer directives ...
 > >
 > > Let me try to sum this up a little differently ... when the date was say
 >
 > > 9/15/2011 .... one query plan was followed ... the one that works ...
 > now
 > > that the date is 3/28/2012 ... the optimizer is choosing a different
 > path
 > > ... so, what it seems to me is that the optimizer must be evaluating
 > that
 > > part of the query .. and then figuring out the query plan from there ...
 > I
 > > could understand that if this was a constant, but this isn't ... the
 > > select weekid(today, -1) from systables where tabid = 1 is a procedure
 > > that brings back the fiscal week id .. ie 201252 ... does that make a
 > > little ore sense ... I'm trying to figure out if the optimizer is making
 >
 > > that evaluation .. then coming up with the plan.... and if so, how to
 > keep
 > > it from doing that ....
 > >
 > > Peter Logan
 > > Senior Database Administrator
 > > Phone: 616/878-8309
 > >
 > > From: "Fernando Nunes" <domusonline@gmail.com>
 > > To: ids@iiug.org
 > > Date: 03/28/2012 05:11 PM
 > > Subject: Re: Fw: Optimizer [26592]
 > > Sent by: ids-bounces@iiug.org
 > >
 > > I'm afraid I didn't understand your point correctly. You mention the
 > > select
 > > from systables but I didn't understand how it's relevant for the
 > problem.
 > > Are you saying that query presented works fine but if you use the select
 >
 > > from systables instead of:
 > >
 > > and a12.fiscal_week_id in (201253)
 > >
 > > It will break the query plan?
 > >
 > > In any case a few warnings and maybe some useful information:
 > >
 > > - 11.7 alreay includes the AUTO_STAT_MODE parameter. This activates or
 > > deactivates the optimization that says to the engine that "if the table
 > > doesn't change too much don't bother to update it's statistics". I had a
 >
 > > recent situation where the default threshold was causing some stalled
 > > statistics and it made a difference on the query plans. And the
 > > probability
 > > that this happens with queries involving time/dates is higher than with
 > > other types of filters (because these fields many times tend to be
 > > populated with constantly increasing values, so statistically something
 > > that makes the filter "column > today - some_time" look good will in
 > time
 > > lead to bad choices)
 > >
 > > - You can activate optimizer directives for any query outside the
 > > applications by using the External Directives feature. I will not go
 > into
 > > details, because it could take a while, but if you're not aware of this
 > > and
 > > need further information, please tell. In any case I'm against the
 > > principle of using directives to solve query plans problems... after all
 >
 > > we
 > > have an optimizer... we're not Oracle :)
 > >
 > > So, my advise:
 > > - Verify that the distributions are really up to date (disable
 > > AUTO_STAT_MODE) and run them (it's dynamic and I believe there's a way
 > to
 > > control it inside the session (either with SET ENVIRONMENT or with a
 > > environment variable)
 > > - If you never used the external optimizer directives, please
 > investigate
 > > them. Sometimes you can get away with them to quickly solve a
 > performance
 > > problem. But my advise is to always investigate this kind of problems
 > and
 > > find a definitive solution
 > > - You could of course re-post your problem in a manner I can understand,
 >
 > > or
 > > wait until someone smarter to answer you :)
 > >
 > > Regards.
 > >
 > > On Wed, Mar 28, 2012 at 9:00 PM, Peter_Logan@spartanstores.com <
 > > Peter_Logan@spartanstores.com> wrote:
 > >
 > > > Aix 6.1
 > > > IDS 11.70.fc3
 > > >
 > > > The below query was executing ok, and then recently it started taking
 > a
 > > > lot longer... In looking at the query plans, the order of the tables
 > > > changed a few weeks ago... Amount of data and stats in the tables
 > > haven't
 > > > changed dramatically ...
 > > >
 > > > The question I have, is ... Is the optimizer smart enough to execute
 > the
 > >
 > > > (select weekid(today, -1) from systables where tabid = 1 ... I can
 > > > duplicate if I take that select out and hard code the fiscal week id
 > ...
 > > > runs about a minute .. then runs about 4 minutes. The query plan
 > changes
 > >
 > > > ... If I do run the query with the directive ... then I can
 > consistently
 > >
 > > > get it to run around a minute .. The problem is that this is a Micro
 > > > Strategies report, so that optimizer directive can't be included ....
 > > > Any help would be appreciated ...
 > > >
 > > > Peter Logan
 > > > Senior Database Administrator
 > > > Phone: 616/878-8309
 > > > ----- Forwarded by Peter Logan/Corporate/Spartan on 03/28/2012 03:53
 > PM
 > > > -----
 > > >
 > > > From: plisad0 (spartan02) <plisad0@spartanstores.com>
 > > > To: Peter_Logan@spartanstores.com
 > > > Date: 03/28/2012 03:52 PM
 > > > Subject: Optimizer
 > > >
 > > > -- select --+ORDERED
 > > > select
 > > > a18.mdse_grp_key mdse_grp_key,
 > > >
 > > > a12.fiscal_week_id fiscal_week_id,
 > > >
 > > > a13.catgy_manager_key catgy_manager_key,
 > > >
 > > > (sum(a11.total_sales_amt) * 0.001) WJXBFS1,
 > > >
 > > > sum(a11.ext_profit_amt) WJXBFS2,
 > > >
 > > > sum(a11.total_sales_amt) WJXBFS3,
 > > >
 > > > sum(a11.ext_profit_amt) WJXBFS4
 > > > from
 > > >
 > > > week_to_year_lkp a12,
 > > >
 > > > channel a16,
 > > >
 > > > chain a15,
 > > >
 > > > line a14,
 > > > efin_wk_line_cls a11,
 > > >
 > > > mdse_class_manager a13,
 > > >
 > > > mdse_class a17,
 > > >
 > > > mdse_category a18,
 > > >
 > > > mdse_group a19,
 > > >
 > > > department a110,
 > > >
 > > > business_dept a111
 > > > where a11.fiscal_week_id = a12.fiscal_wty_id and
 > > >
 > > > a11.mdse_class_key = a13.mdse_class_key and
 > > >
 > > > a11.sales_line_id = a14.sales_line_id and
 > > >
 > > > a14.sales_chain_id = a15.sales_chain_id and
 > > >
 > > > a15.sales_channel_id = a16.sales_channel_id and
 > > >
 > > > a11.mdse_class_key = a17.mdse_class_key and
 > > >
 > > > a17.mdse_catgy_key = a18.mdse_catgy_key and
 > > >
 > > > a18.mdse_grp_key = a19.mdse_grp_key and
 > > >
 > > > a19.dept_key = a110.dept_key and
 > > >
 > > > a110.bus_dept_key = a111.bus_dept_key
 > > >
 > > > and (a16.enterprise_id in (18)
 > > >
 > > > and a13.catgy_manager_key in (70)
 > > >
 > > > and a110.dept_grp_key not in (525, 9)
 > > >
 > > > and a14.format_type_id in ('SUPERMKT ')
 > > >
 > > > and a12.fiscal_week_id in (201253)
 > > >
 > > > and a111.dept_grp_type_key in (1))
 > > > group by a18.mdse_grp_key,
 > > >
 > > > a12.fiscal_week_id,
 > > >
 > > > a13.catgy_manager_key
 > > > into temp ZZMD03 with no log
 > > >
 > > >
 > > >
 > > >
 > >
 > >
 > >
 >
 >
 > *******************************************************************************
 >
 > >
 > > > Forum Note: Use "Reply" to post a response in the discussion forum.
 > > >
 > > >
 > >
 > > --
 > > Fernando Nunes
 > > Portugal
 > >
 > > http://informix-technology.blogspot.com
 > > My email works... but I don't check it frequently...
 > >
 > > --0023544710d08e6fef04bc540bf4
 > >
 > >
 > >
 > >
 >
 >
 > *******************************************************************************
 >
 > >
 > > Forum Note: Use "Reply" to post a response in the discussion forum.
 > >
 > >
 > >
 > >
 >
 >
 > *******************************************************************************
 >
 > > Forum Note: Use "Reply" to post a response in the discussion forum.
 > >
 > >
 >
 > --
 > Fernando Nunes
 > Portugal
 >
 > http://informix-technology.blogspot.com
 > My email works... but I don't check it frequently...
 >
 > --20cf3074d934d0d33704bc6205a4
 >
 >
 >
 > *******************************************************************************
 >
 > Forum Note: Use "Reply" to post a response in the discussion forum.
 >
 >
 >
 > *******************************************************************************
 > Forum Note: Use "Reply" to post a response in the discussion forum.
 >
 >
 --
 Fernando Nunes
 Portugal
 http://informix-technology.blogspot.com
 My email works... but I don't check it frequently...
 --0023544710d051976304bc655976
 
  
Messages In This Thread
 - Fw: Optimizer
 Peter_Logan@spartanstores.com -- Wednesday, 28 March 2012, at 3:59 p.m.
- Re: Fw: Optimizer
 Fernando Nunes -- Wednesday, 28 March 2012, at 5:11 p.m.
- Re: Fw: Optimizer
 Peter_Logan@spartanstores.com -- Thursday, 29 March 2012, at 8:27 a.m.
- Re: Fw: Optimizer
 Fernando Nunes -- Thursday, 29 March 2012, at 9:51 a.m.
- Re: Fw: Optimizer
 Peter_Logan@spartanstores.com -- Thursday, 29 March 2012, at 10:06 a.m.
- Re: Fw: Optimizer
 Art Kagel -- Thursday, 29 March 2012, at 10:23 a.m.
- Re: Fw: Optimizer
 Peter_Logan@spartanstores.com -- Thursday, 29 March 2012, at 10:43 a.m.
  
 - Re: Fw: Optimizer
 Fernando Nunes -- Thursday, 29 March 2012, at 1:49 p.m.
- Re: Fw: Optimizer
 Peter_Logan@spartanstores.com -- Thursday, 29 March 2012, at 2:02 p.m.
  
  
  
  
  
  
  
IDS Forum is maintained by Administrator with WebBBS 5.12.
  | 
  |