hi, We see this issue on every Monday after the deployment and it resolves by itself by Wednesday after the deployment is done on Saturday . I am checking the other interfaces that might have an impact as well.
Thanks, Vikram Misi Mladoniczky wrote: > > Hi, > > No you don't have the "%zzz%". > > You have a "zzz%", which is an entirely different thing, and will allow > usage of indexes. > > It is the leading match in the LIKE "%zzz%" that prevents the index from > being used. > > Admin changes can take a lot of resources from the server in the period > right after the change, to allow for the server to recache all > definitions. Typically less than 10 minutes will be needed. > > Admin changes will require the clients to recache as well, which may slow > things down slightly, but should not prevent the database from using > indexes. > > Best Regards - Misi, RRR AB, http://www.rrr.se > > Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10): > * RRR|License - Not enough Remedy licenses? Save money by optimizing. > * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. > Find these products, and many free tools and utilities, at http://rrr.se. > >> hi Doug, >> >> Thanks for the reply as always lot of knowledge shared. You are right I >> picked this query from TOAD application and hence the SYS_B_XX variable >> comes into the picture. I was able to catch the query from SQL logs and >> its >> pasted below : >> >> <SQL > <TID: 000033> <RPC ID: 0001008137> <Queue: List > >> <Client-RPC: >> 390620 > <USER: vikram > /* Mon Feb 28 2011 >> 08:46:16.9857 */ SELECT >> T28.C1,C600011000,C536870984,C536870913,C900106001,C901050057,C536871019,C900200400,C536870958,C536870950,C900170325,C536870935,C900100003,C536870929,C536870931,C536870914,C536871018,C536870938,C650000000,C536870952,C536871025,C536871038,C536900000,C536870912,C7,C900040206,C901092014,C900110076,C536870987,C901170021,C536870957 >> FROM T28 WHERE (((T28.C112 LIKE '%;44451;%') OR ((T28.C112 LIKE >> '%;44450;%') OR ((T28.C112 LIKE '%;9999999;%') OR ((T28.C112 LIKE >> '%;500014;%') OR ((T28.C112 LIKE '%;500013;%') OR ((T28.C112 LIKE >> '%;500000;%') OR ((T28.C112 LIKE '%;50098;%') OR ((T28.C112 LIKE >> '%;99986;%') OR ((T28.C112 LIKE '%;99986;%') OR ((T28.C112 LIKE >> '%;99989;%') >> OR ((T28.C112 LIKE '%;99930;%') OR ((T28.C112 LIKE '%;99985;%') OR >> ((T28.C112 LIKE '%;99931;%') OR ((T28.C112 LIKE '%;99925;%') OR >> ((T28.C112 >> LIKE '%;99906;%') OR ((T28.C112 LIKE '%;99928;%') OR ((T28.C112 LIKE >> '%;99957;%') OR ((T28.C112 LIKE '%;99932;%') OR ((T28.C112 LIKE >> '%;99929;%') >> OR ((T28.C112 LIKE '%;99921;%') OR ((T28.C112 LIKE '%;99926;%') OR >> ((T28.C112 LIKE '%;99902;%') OR ((T28.C112 LIKE '%;99950;%') OR >> ((T28.C112 >> LIKE '%;99924;%') OR ((T28.C112 LIKE '%;44407;%') OR ((T28.C112 LIKE >> '%;99960;%') OR ((T28.C112 LIKE '%;99922;%') OR ((T28.C112 LIKE >> '%;99990;%') >> OR ((T28.C112 LIKE '%;44405;%') OR ((T28.C112 LIKE '%;44404;%') OR >> ((T28.C112 LIKE '%;44418;%') OR ((T28.C112 LIKE '%;44418;%') OR >> ((T28.C112 >> LIKE '%;99923;%') OR ((T28.C112 LIKE '%;99908;%') OR ((T28.C112 LIKE >> '%;99904;%') OR ((T28.C112 LIKE '%;99927;%') OR ((T28.C112 LIKE >> '%;99939;%') >> OR ((T28.C112 LIKE '%;99971;%') OR ((T28.C112 LIKE '%;99991;%') OR >> ((T28.C112 LIKE '%;99901;%') OR ((T28.C112 LIKE '%;99905;%') OR >> ((T28.C112 >> LIKE '%;99941;%') OR ((T28.C112 LIKE '%;99958;%') OR ((T28.C112 LIKE >> '%;99907;%') OR ((T28.C112 LIKE '%;99953;%') OR ((T28.C112 LIKE >> '%;44406;%') >> OR ((T28.C112 LIKE '%;99987;%') OR ((T28.C112 LIKE '%;99903;%') OR >> ((T28.C112 LIKE '%;99988;%') OR ((T28.C112 LIKE '%;99951;%') OR >> ((T28.C112 >> LIKE '%;99972;%') OR ((T28.C112 LIKE '%;500012;%') OR ((T28.C112 LIKE >> '%;50045;%') OR ((T28.C112 LIKE '%;50048;%') OR ((T28.C112 LIKE >> '%;500011;%') OR ((T28.C112 LIKE '%;500010;%') OR ((T28.C112 LIKE >> '%;666;%') >> OR ((T28.C112 LIKE '%;500009;%') OR ((T28.C112 LIKE '%;500008;%') OR >> ((T28.C112 LIKE '%;500007;%') OR ((T28.C112 LIKE '%;50046;%') OR >> ((T28.C112 >> LIKE '%;500006;%') OR ((T28.C112 LIKE '%;500005;%') OR ((T28.C112 LIKE >> '%;500004;%') OR ((T28.C112 LIKE '%;500003;%') OR ((T28.C112 LIKE >> '%;500002;%') OR ((T28.C112 LIKE '%;500001;%') OR ((T28.C112 LIKE >> '%;0;%') >> OR ((T28.C112 LIKE '%;2005000;%') OR ((T28.C112 LIKE '%;655;%') OR >> ((T28.C112 LIKE '%;20017;%') OR ((T28.C112 LIKE '%;652;%') OR ((T28.C112 >> LIKE '%;671;%') OR (T28.C112 LIKE >> '%;0;%')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) >> AND (T28.C536870913 LIKE '101200140%')) ORDER BY 1 ASC >> >> >> We have a lot of users in lot of groups and hence we have high number of >> LIKE clauses. >> As you can see we have "%zzz% as you mentioned in your post which will >> cause >> a complete table scan. Right now we are trying 2 things : >> >> a) Find the workflow that tends to fire this query and >> b) Try and find a way to minimize the groups every user belongs. Can >> computed groups be a good option for this and is it supported for ARS >> 5.0.1.? Sorry to ask you about this as I have limited understandning >> about >> computed groups. >> >> One interesting observation though, we see this issue only after the >> weekend >> we have some kind of code change on the production system and in a sense >> when we do some kind of admin operation on the application not >> necessarily >> the change is done on the schema on which these huge queries are fired >> but >> we still face this issue. Can there be any possible connection between >> this? >> >> Thanks, >> Vikram >> >> Mueller, Doug wrote: >>> >>> Vikram, >>> >>> Several observations about this command: >>> >>> First, this command seems to have been run through some kind of >>> translator >>> that >>> has taken every string between "" symbols and replaced it with an >>> incrementing >>> string of SYS_B_xx where xx is an incrementing number. >>> >>> Because of this, it is a bit hard to assist with the question you ask >>> because >>> there is critical information in the query that you have masked out and >>> that >>> information may be the key to the solution. The most critical missing >>> piece of >>> data is whatever SYS_B_67 was originally. As you will see from the >>> remaining >>> notes, the rest of the strings really aren't important. >>> >>> 1) You comment on disallowing unqualified queries and say that this >>> didn't >>> help >>> this query. Well, that option is not related as this is NOT an >>> unqualified >>> query. There is a qualification that is being specified by the >>> person >>> who >>> is issuing this query. >>> >>> '536870993' LIKE "SYS_B_67" >>> >>> Now, the issue here is what is SYS_B_67. If it is really a search >>> that >>> looks >>> something like the following >>> >>> %zzz% >>> >>> Then, you simply have a terribly inefficient query. You are >>> searching >>> in a >>> character field for where some set of characters (zzz in my example) >>> is >>> somewhere in the field. This requires a table scan to look at each >>> record >>> and the data in that field to see if the string matches. >>> >>> If it is really a search that looks more like >>> >>> zzz% >>> >>> Then, you can get an efficient search out of this. This is to find a >>> value >>> where the string STARTS with a set of characters (zzz in my example) >>> and has >>> other data after it. If like this, then indexes will be used in the >>> search >>> if there is an index on field 536870993. If there is no index on >>> that >>> field >>> one could be added and will make a difference. REMEMBER, the search >>> cannot >>> have a leading % for the index to be useful. If there is a leading % >>> like in >>> the first example, the index will not be used even if present. >>> >>> There is no other qualifier that the customer is supplying to further >>> limit >>> the search so the entire indexing scheme hinges on this one field. >>> >>> 2) All the comparisons of field 112 to a value are things the AR System >>> adds >>> onto the search because you have a row level security field (field >>> 112) >>> on >>> the form and you do not have global access to the entries, and the >>> system is >>> checking to see if you have access to rows it is retrieving. >>> >>> At first glance, the search is not efficient as it is a LIKE "%xxx%" >>> type >>> search. So, if that was the only search criteria, it is correct, >>> this >>> would >>> be an inefficient criteria. However, the design is for this to be an >>> ADDITIVE criteria, not the primary criteria. The primary criteria is >>> the >>> search the user provides, this is just an additional test. In the >>> role >>> of >>> additional test, efficiency is not significant as only one index can >>> be >>> used >>> for a search. The row would already have been retrieved to apply >>> this >>> criteria as additional qualification. >>> >>> So, the entire clause with Ored tests of field 112 can be discounted >>> from any >>> qualification you are trying to check performance of. >>> >>> Now, if that clause is the only clause in the WHERE, that means you >>> have >>> allowed unqualified queries and someone is issuing an unqualified >>> query >>> (which is a table scan). >>> >>> 3) Whoever the user is in this scenario is a member of 67 groups >>> (SYS_B_00 >>> through SYS_B_66). This is a lot of groups for a single user to be a >>> member >>> of. Not disallowed, and the system will work and it does support >>> that. >>> It >>> is just an observation that it is a large number. Typically, a user >>> is >>> a >>> member of a small number of groups and this clause is significantly >>> shorter. >>> >>> >>> >>> Hopefully, this gives you the information you need. What I really feel >>> is >>> the >>> challenge here is that the user is qualifying field 536870993 to look >>> for >>> a >>> string ANYWHERE in the field and that is causing the problem. >>> >>> Solutions: >>> >>> 1) If this really should be an = instead of a LIKE "%zzz%", you may >>> check >>> the >>> default QBE setting for the field and change it from Anywhere to >>> Leading or >>> Matching. The default QBE match criteria (a view property of the >>> field) is >>> Anywhere. So, a user may not be aware if they are using the query >>> screen and >>> putting in a value for that field what is happening. Changing the >>> definition will change the command issued. >>> >>> 2) If a user is doing this in a query bar, educate the user about the >>> cost >>> of >>> this type of operation. >>> >>> 3) If workflow is issuing this command, determine whether the workflow >>> could >>> use a leading or equal search. >>> >>> 4) Is there other criteria you can use on some other field(s) on the >>> form >>> to >>> help limit the scope of the rows that you need to search across? >>> >>> Of course, if what you need to do is a search for that string anywhere >>> in >>> the >>> field AND there are no other criteria you can use to search other fields >>> to >>> limit which rows are looked at, then you are stuck with the performance >>> of >>> the >>> operation you need to perform. >>> >>> >>> Good luck with your situation and with finding a solution for long >>> query. >>> >>> Doug Mueller >>> >>> -----Original Message----- >>> From: Action Request System discussion list(ARSList) >>> [mailto:[email protected]] On Behalf Of vikram_k >>> Sent: Monday, February 28, 2011 1:29 AM >>> To: [email protected] >>> Subject: Huge queries hogging up the database >>> >>> hi all, >>> >>> I had recently put some posts regarding AR Performance and I am thankful >>> that most of my problems are now resolved. But there is one issue which >>> is >>> a >>> bottle neck I am seeing a huge oracle query like >>> >>> SELECT >>> T28.C1,C600011000,C536870984,C536870913,C900106001,C901050057,C536871019,C900200400,C536870958,C536870950,C900170325,C536870935,C900100003,C536870929,C536870931,C536870914,C536871018,C536870938,C650000000,C536870952,C536871025,C536871038,C536900000,C536870912,C7,C900040206,C901092014,C900110076,C536870987,C901170021,C536870957 >>> FROM T28 >>> WHERE (((T28.C112 LIKE :"SYS_B_00") OR ((T28.C112 LIKE :"SYS_B_01") OR >>> ((T28.C112 LIKE :"SYS_B_02") OR ((T28.C112 LIKE :"SYS_B_03") OR >>> ((T28.C112 >>> LIKE :"SYS_B_04") OR ((T28.C112 LIKE :"SYS_B_05") OR ((T28.C112 LIKE >>> :"SYS_B_06") OR ((T28.C112 LIKE :"SYS_B_07") OR ((T28.C112 LIKE >>> :"SYS_B_08") >>> OR ((T28.C112 LIKE :"SYS_B_09") OR ((T28.C112 LIKE :"SYS_B_10") OR >>> ((T28.C112 LIKE :"SYS_B_11") OR ((T28.C112 LIKE :"SYS_B_12") OR >>> ((T28.C112 >>> LIKE :"SYS_B_13") OR ((T28.C112 LIKE :"SYS_B_14") OR ((T28.C112 LIKE >>> :"SYS_B_15") OR ((T28.C112 LIKE :"SYS_B_16") OR ((T28.C112 LIKE >>> :"SYS_B_17") >>> OR ((T28.C112 LIKE :"SYS_B_18") OR ((T28.C112 LIKE :"SYS_B_19") OR >>> ((T28.C112 LIKE :"SYS_B_20") OR ((T28.C112 LIKE :"SYS_B_21") OR >>> ((T28.C112 >>> LIKE :"SYS_B_22") OR ((T28.C112 LIKE :"SYS_B_23") OR ((T28.C112 LIKE >>> :"SYS_B_24") OR ((T28.C112 LIKE :"SYS_B_25") OR ((T28.C112 LIKE >>> :"SYS_B_26") >>> OR ((T28.C112 LIKE :"SYS_B_27") OR ((T28.C112 LIKE :"SYS_B_28") OR >>> ((T28.C112 LIKE :"SYS_B_29") OR ((T28.C112 LIKE :"SYS_B_30") OR >>> ((T28.C112 >>> LIKE :"SYS_B_31") OR ((T28.C112 LIKE :"SYS_B_32") OR ((T28.C112 LIKE >>> :"SYS_B_33") OR ((T28.C112 LIKE :"SYS_B_34") OR ((T28.C112 LIKE >>> :"SYS_B_35") >>> OR ((T28.C112 LIKE :"SYS_B_36") OR ((T28.C112 LIKE :"SYS_B_37") OR >>> ((T28.C112 LIKE :"SYS_B_38") OR ((T28.C112 LIKE :"SYS_B_39") OR >>> ((T28.C112 >>> LIKE :"SYS_B_40") OR ((T28.C112 LIKE :"SYS_B_41") OR ((T28.C112 LIKE >>> :"SYS_B_42") OR ((T28.C112 LIKE :"SYS_B_43") OR ((T28.C112 LIKE >>> :"SYS_B_44") >>> OR ((T28.C112 LIKE :"SYS_B_45") OR ((T28.C112 LIKE :"SYS_B_46") OR >>> ((T28.C112 LIKE :"SYS_B_47") OR ((T28.C112 LIKE :"SYS_B_48") OR >>> ((T28.C112 >>> LIKE :"SYS_B_49") OR ((T28.C112 LIKE :"SYS_B_50") OR ((T28.C112 LIKE >>> :"SYS_B_51") OR ((T28.C112 LIKE :"SYS_B_52") OR ((T28.C112 LIKE >>> :"SYS_B_53") >>> OR ((T28.C112 LIKE :"SYS_B_54") OR ((T28.C112 LIKE :"SYS_B_55") OR >>> ((T28.C112 LIKE :"SYS_B_56") OR ((T28.C112 LIKE :"SYS_B_57") OR >>> ((T28.C112 >>> LIKE :"SYS_B_58") OR ((T28.C112 LIKE :"SYS_B_59") OR ((T28.C112 LIKE >>> :"SYS_B_60") OR ((T28.C112 LIKE :"SYS_B_61") OR ((T28.C112 LIKE >>> :"SYS_B_62") >>> OR ((T28.C112 LIKE :"SYS_B_63") OR ((T28.C112 LIKE :"SYS_B_64") OR >>> ((T28.C112 LIKE :"SYS_B_65") OR (T28.C112 LIKE >>> :"SYS_B_66"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) >>> AND (T28.C536870993 LIKE :"SYS_B_67")) ORDER BY :"SYS_B_68" ASC >>> >>> I was told to disallow unqualified search which I did and yet I am >>> seeing >>> this kind of query. >>> >>> Can anyone help me understand what exactly is this query doing and what >>> can >>> be done to avoid it... >>> >>> Thanks, >>> Vikram >>> -- >>> View this message in context: >>> http://old.nabble.com/Huge-queries-hogging-up-the-database-tp31030153p31030153.html >>> Sent from the ARS (Action Request System) mailing list archive at >>> Nabble.com. >>> >>> _______________________________________________________________________________ >>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org >>> attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are" >>> >>> _______________________________________________________________________________ >>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org >>> attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are" >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/Huge-queries-hogging-up-the-database-tp31030153p31046950.html >> Sent from the ARS (Action Request System) mailing list archive at >> Nabble.com. >> >> _______________________________________________________________________________ >> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org >> attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are" >> > > _______________________________________________________________________________ > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org > attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are" > > -- View this message in context: http://old.nabble.com/Huge-queries-hogging-up-the-database-tp31030153p31047544.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are"

