Hey guys/gals. I have a dliemna concerning Oracle, Hibernate and how AppDynamics (to my understanding) tracks these entity's. Currently AppD does a great job of finding SQL which it tags in long running business transactions. However i've come across an issue in my schema which seems to be alluding AppD.
To make a long story short by Using AWR reporting i've found that a nubmer of my queries are producint cartesian products thus causing huge latency in user transactions. The problem is that what AWR is reporting appears to not be reported or observed in AppD from the application perspective.
Has anyone else run across an exmaple where AppD doesn't provide this level of visiblity. Is it even possible to observe cartesian products with it?
My concern is that my applicatin which uses hibernate to generate the vast majoirty of our jdbc queries might be unaccounted for when looking for expensive sql.
No I can not instrument our DBs with AppD if you're wondering.
Thanks in advance for any clues to the question, "can AppD determine if a query is a cartesian product' or should I stick to AWR?
Curtis
Hi Curtis,
If i understood your query right, we are referring to same sql query feature as referred in below forum links:
http://www.dba-oracle.com/t_garmany_9_sql_cross_join.htm
https://community.oracle.com/thread/183056
If above said is the case, and as per my understanding cartesian product is like any SQL select query if this is the case and if the target BT (api class and method) is part of discovered BT we should be able to monitor
If above is not the case, can you send the agent logs and also list the DB JDBC api we are calling at code to call missing queries?
We understood we have checked in "sql calls" section of target BT but we do not see target sql queries, let us know if any disconnect
Hey Mr Kuma, the link does define the problem at it's core. My question might be too broad because I don't have any evidence that appD would or could not discover an object causing a cartesian product. The better question is not whether the offending object can be observed or is it being excluded by default. Also if I could include that object even if it is a caratesian product it might not be detected as a slow or very slow object based on the default standard deviation buckets. I might have to make the performance threshold really strict to force appD to instrument a BT it wouldn't otherwise pay attention too.
Hmm, what do you think? Is this kind of tweaking necessary or am I diggin in the wrong direction?
Thanks,
curtis
Hi Curtis,
We either need to make sure the BT(API class and method) is part of discovered BTs which is making miss JDBC calls and yes the snapshot may not be collected as part of BT snapshot if not violating thresholds of BT ART ms itself, but still you should see if any monitored BT making the missing exit calls at "slow response times" section in UI
OR the other option is to use DB agent DB Mon feature which collects SQL queries independent of BTs as the db agent server will monitor DB server schema itself , check if that information helps:
https://docs.appdynamics.com/display/PRO41/Monitor+Databases+and+Database+Servers
https://docs.appdynamics.com/display/PRO41/Install+the+Database+Agent