Measuring query execution speed

Is there a way to measure how long it takes to execute a query? I have tried recording the time just before and after a call to execute() but this is not giving usable results as it depends on so many other things. What I am after is some sort of database independent query timing ability. Is it possible in JDBC?
Thanks,
-JT

Using JAMon I time all my jdbc and also how long each individual query takes. Got to http://www.fdsapi.com and go to the live demo. This allows you to enter queries adn then go to the JAMonAdmin page and you will see a sortable html report that allows you to view the statistics.
JAMon is flexible due to the fact it just takes a String. That string can represent anything such as a specific query (in sybase for example a stored proc), a page hit, a method call or anything else that makes sense to you. It is a simple stopwatch based API that couldn't be easier to use. Simply import the jar and call start() and stop(). What's nice about this it is flexible enough to monitor more in your app than queries, such as jsp pages, and it is fast enough to run in production.
There is a servlet filter at the site that keeps stats for any pages within your web site and you don't have to do any code to get this capability. JAMon keeps track of hits, avg time, max time, min time, concurrency and scalability.
// Note it is a simple 2 method api.  Every time this metho is called new aggregate stats will be gathered, and displayed via JAMonAdmin.jsp
public List getEmployee(String empID) {
  Monitor mon=MonitorFactory.start("com.mypackage.Employee.getEmployee");
   try {
       ....my code...
    } finally {
      mon.stop();
}steve - http://www.jamonapi.com - a performance tuning API
http://www.fdsapi.com - a simple api for generating xml and html

Similar Messages

  • How to measure mapping execution speed

    Hi,
    currently i'm trying to measure performance differences between Interface Mappings which contain one single Message Mapping and Interface Mappings which contain 2 or 3 Message Mappings.
    I already tried to do this with RWB and Performance-Monitoring. But Performance Monitoring shows the processing time through the whole XI, and not only Mapping execution time. So it is difficult to get a clean measuring there, without influences from queueing and so on.
    Test Tab on Integration Builder has a too big step (one second). Mapping execution time is slower.
    Do you have any ideas to measure this?
    Or do you have experience with performance differences between those two kinds of Interface Mappings?
    regards,
    ms
    P.S. i'm using XI 3.0

    Hi, Manuel:
    For the two scenarios you want to compare performance, trigger them separately.
    You take following steps to take measurement for those two scenarios:
    Go to SXMB_MONI, find the message, go to pipeline step after your "Request Message Mapping"
    e.g. you can select "Technical Routing" step, expand it, -> SOAP Header -> Performance Header:
    You will see the start time stamp for each steps executed up to current step.
    Locate your mapping programs, get the begin time stamp and end time stamp, then you will know the how long the mapping program take.
    For the scenario that you have several mapping programs, make sure you get begin timestamp for the first mapping program and end timestamp for last mapping program, the difference is the time for you few mapping program take.
    Hope this helps.
    Liang
    Edited by: Liang Ji on Mar 29, 2008 5:42 AM

  • Another question about query execution speed.

    I know I should normally start with posting the query but my question will take a little different direction, so here is the deal:
    We have an Apex application, there is a query on one of the pages that for certain users takes quite long, lets say 1min to 2 min, depending on how many records the query returns. The actual query varies depedning on some security settings and other parameters on the page - it's constructed by pl/sql function returning sql.
    By querying v$sql I get the exact sql run by the user for who the query takes long time to execute.
    Then I run that same sql statemt in Toad and it always takes 2 seconds to execute. For the user executing the same sql from Apex takes consistently 50-100 sec. My Toad is set to return up to 10,000 records and the query returns less than 500.
    Can somebody help me make some sense of this?
    George

    Hi there
    geo2 wrote:
    We have an Apex application, there is a query on one of the pages that for certain users takes quite long, lets say 1min to 2 min, depending on how many records the query returns. The actual query varies depedning on some security settings and other parameters on the page - it's constructed by pl/sql function returning sql.To render a page, Apex does much some more stuff than just run the query. For instance, depending on the type of pagination you have enabled it needs to get the total number of rows to display "x to y of z" (or to display the message "more than nnn rows found"). Have you enabled debugging in Apex to be sure that most of the waiting time is spent on that query?
    By querying v$sql I get the exact sql run by the user for who the query takes long time to execute.
    Then I run that same sql statemt in Toad and it always takes 2 seconds to execute. For the user executing the same sql from Apex takes consistently 50-100 sec. My Toad is set to return up to 10,000 records and the query returns less than 500.Does Toad takes only 2 seconds to retrieve all rows or just to get the first top rows?
    Luis

  • Slow query execution time

    Hi,
    I have a query which fetches around 100 records from a table which has approximately 30 million records. Unfortunately, I have to use the same table and can't go ahead with a new table.
    The query executes within a second from RapidSQL. The problem I'm facing is it takes more than 10 minutes when I run it through the Java application. It doesn't throw any exceptions, it executes properly.
    The query:
    SELECT aaa, bbb, SUM(ccc), SUM(ddd), etc
    FROM MyTable
    WHERE SomeDate= date_entered_by_user  AND SomeString IN ("aaa","bbb")
    GROUP BY aaa,bbbI have an existing clustered index on SomeDate and SomeString fields.
    To check I replaced the where clause with
    WHERE SomeDate= date_entered_by_user  AND SomeString = "aaa"No improvements.
    What could be the problem?
    Thank you,
    Lobo

    It's hard for me to see how a stored proc will address this problem. I don't think it changes anything. Can you explain? The problem is slow query execution time. One way to speed up the execution time inside the RDBMS is to streamline the internal operations inside the interpreter.
    When the engine receives a command to execute a SQL statement, it does a few things before actually executing the statement. These things take time. First, it checks to make sure there are no syntax errors in the SQL statement. Second, it checks to make sure all of the tables, columns and relationships "are in order." Third, it formulates an execution plan. This last step takes the most time out of the three. But, they all take time. The speed of these processes may vary from product to product.
    When you create a stored procedure in a RDBMS, the processes above occur when you create the procedure. Most importantly, once an execution plan is created it is stored and reused whenever the stored procedure is ran. So, whenever an application calls the stored procedure, the execution plan has already been created. The engine does not have to anaylze the SELECT|INSERT|UPDATE|DELETE statements and create the plan (over and over again).
    The stored execution plan will enable the engine to execute the query faster.
    />

  • Query Execution is very slow through Froms

    Hello Friends
    I am facing a problem with D2k Forms. when a run a Query through SQL its execution speed is very fast. the same Query when i run through Forms, like create basetable block and
    set_block_property and execute it is very slow. How do i overcome this problem.
    what are the various steps to keep in mind when writing code in forms.
    thanks in Advance

    Hi,
    In order to gather schema statistics in EBS, you will have to login as Sysadmin and submit a request named as "Gather Schema Statistics"
    Refer below link:
    http://appsdba.info/docs/oracle_apps/R12/GatherSchemaStatistics.pdf
    Also ensure to schedule the respective request so as to have your statistics up to date, either weekly or monthly as per your system environment.
    Please refer note:
    How Often Should Gather Schema Statistics Program be Run? [ID 168136.1]
    How to Gather Statistics on Custom Schemas for Ebusiness Suite 11i and R12? [ID 1065813.1]
    Hope this helps!
    Best Regards

  • BI SDK/XMLA (MDX) - Does the query execution go through SAP BI Accelerator?

    Environment : Portal - EP7.0 SPS 14, BI 7.0 SPS17
    I have written customer report views which uses the BI SDK to execute BI querries through the portal.
    Following link provides the detail about configuring the portal to access the BI system and execute queries through XMLA which used MDX statements on the BI system...
    http://help.sap.com/saphelp_nw04s/helpdata/en/ba/e380e03c3a4dbf8cf082f0c910f9cf/frameset.htm
    Does the the BI XMLA interface go though the SAP BI Accelerator to speed up query execution? I have provided the link below about SAP BI Accelerator...
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3604c604-0901-0010-f0aa-b37378495537
    If the answer is yes, how do I prove it?
    Any help is really appreciated.
    Thanks
    Bhabesh Patel

    You prove it because SAP said so:
    /docs/DOC-7992#section7
    just kidding
    You can also run an ST05 trace (with RFC on) and look for the RFC call TREX_RFC_AGGREGATE_SP5

  • Why is the difference in execution speed of the function "SetCtrlVa​l" between constant and changing values so small ?

    In my large application (1 MB exe-file) I am continuously updating a lot of numeric controls with new values. Most of them do not really change their value. Within my search of improving the performance of my application I noticed, that there is only a small difference of the execution speed between a call of "SetCtrlValue" with constant values and calls with changing values. It runs much faster (25 times on my PC), if I get the actual control value with "GetCtrlVal", compare it with my new value an do a call to "SetCtrlVal" only if the current value and the new value are different.
    My questions to CVI-developers is:
    Isn't it possib
    le to do this compare within the function "SetCtrlVal"
    My question to all CVI-users is:
    Does anyone have similar tips to improve the performance of CVI applications ?
    I developed a small test application for this problem, which I can mail to interested users.

    What takes the extra time is the redraw of the control. When you call SetCtrlVal we ALWAYS redraw the control. We wouldn't want to build in functionality to check if the value was the same because that would add additional time to the SetCtrlVal in every case. If you want to do it outside of the loop you can as you have done above. You have a few options. First, keep a previous value variable for the controls that you can use to determine whether to set the control value. I.E.
    int oldVal = 0;
    int newVal = 0;
    if(newVal!=oldVal) {
    SetCtrlVal(..., newVal);
    oldVal = newVal;
    Also, if you set the value of a control through SetCtrlAttribute instead, there is no built in redraw of the control (which is what takes all the time). Using SetCtrlAttribute
    to set the value is very fast, but remember there isn't a built in redraw on the screen to display the new number.
    Best Regards,
    Chris Matthews
    Measurement Studio Support Manager

  • Query execution not traced in ST03N

    Dear performance gurus,
    we want to perform some query performance checks in our BW 3.5 system. To measure the impact of aggregates and eliminate the OLAP cache effect on runtime we execute the queries from the query monitor (rsrt). With "execute and debug" we can decide for each execution if we want to use agrregates or not and we can switch of OLAP cache usage.
    For what ever reason these executions are not shown in ST03N (Expert mode). If we run the same queries from BEx Analyzer, runtime can be analyzed. But in BEx we don't have the necessary options regarding aggregates and OLAP cache.
    Are you aware of any settings in RSRT or ST03N to get the executions out of the query monitor also displayed in ST03N??
    Thanks in advance
    Thomas

    while running the report user is facing the below error.
    "query execution was not successful"This is a generic error which is reported in few docs.
    Discoverer Viewer fails Moving Pivot Table Columns: Query Execution was not Successful [ID 948027.1]
    Query Execution Not Successful Error In Viewer, Runs In Desktop And Plus [ID 404974.1]
    Discoverer 10g (10.1.2.3) Plus/Viewer Cumulative Patch 7 (9112482) Readme For Linux/Unix [ID 821844.1]
    Launching A Worksheet In Discoverer 10g / 11g Plus/Viewer On Linux Fails With 'Contact with backend server lost' [ID 871012.1]
    Discoverer 10g (10.1.2.3) Plus/Viewer Cumulative Patch 4 (7595032) Readme For Windows [ID 822183.1]
    Discoverer 10g (10.1.2.3) Plus/Viewer Cumulative Patch 3 (7319096) Readme For Linux/Unix [ID 761997.1]
    Running Some Reports In Discoverer Plus/Viewer 10.1.2.2 Are Failing With "An error occurred while attempting to perform the operation. The operation did not complete successfully." [ID 733603.1]
    Discoverer Viewer 10g (10.1.2.3) Passes A Blank Parameter As 'NULL' When Using A 'Drill to Link' [ID 820003.1]
    Query Execution was not Successful Error When Running a Workbook [ID 550684.1]
    -ORA-01722 Invalid number.Please check the data type of the column or the data type of the records in the table/view and make sure it match the data type of the column.
    Thanks,
    Hussein

  • Execution speed onboard programs

    Hi all
    I am tying store the value of analog input channels of PCI-7352 on buffer, from onboard program.
    The program run fine, but I don´t know how measure the total acquisition time in the program.
    In an example in LabView ( adc-gpbuffer.vi ), use 'flex_load_delay' function to establish an interval in
    the acquisition. But the real interval between readings not is calculated.
    Another question, How I can know the execution speed of onboard program ?.  The documentation does not
    show information.
             Thank´s
             Javier
    Attachments:
    adc-gpbuffer.vi ‏165 KB

    Javier,
    there is no easy way to measure the execution timing of onboard programs. One thing that you could do is to toggle a digital line in your onboard program and measure the timing with an oscilloscope.
    Please be aware that the timing of onboard programs doesn't work deterministicallly as onboard programs don't run with time critical priority on the board's CPU so you will probably see a fair amount of jitter.
    The main purpose of the analog inputs on the 7352 is analog feedback. You can use them for single point measurements, too but if you need to acquire data with an accurate timing you better should use an additional M-Series board like the PCI-6220 which provide a much better measurement and timing accuracy and as true measurement devices they provide a whole set of additional useful features.
    Best regards,
    Jochen Klier
    National Instruments Germany

  • Execution Speed of my page

    Hi everybody,
    I converted an existing report into an FM and used that FM in my BSP page to display the output in browser.
    But the execution speed of BSP page is almost half as compared to the execution of report. I am not sure why this has happened.
    Is the layout reponssible for this low speed?
    But its excatly the same layout that report displayed.
    Please tell me where should i do the changes to increase execution speed .
    Thanks

    I suggest you to execute SE30 transaction (performance measurements) and including your BSP. You can do this also from SICF, I think that in the menu you hace a Runtime Analysis option or similar (sorry I by now I cannot acces to my SAP BW). Then, check the report, and discover where the most of the time is spent.
    I had a similar problem. I had a BSP which execute many times a FM for generate a data table. I put AJAX to my BSP to improve performance and concurrency.

  • VI execution speed in subpanel is slow

    Hello,
    I have the following problem with subpanels. I have a VI that should run inside of a subpanel. This VI contains an Image Display component (Vision). This Image Display is updated with a new image inside a while loop every 40 milliseconds. This is the one and only action inside of this loop. When I run this VI in a subpanel, the execution slows down to 200 ms for the Image Display update action (for the while loop). I measured the this with a Timervalue (ms) component. If my application runs the VI outside of the subpanel in an own window then the timig of 40 milliseconds works perfect. The only difference between the two situation is that the VI runs in or outside of a subpanel.
    This is a great problem for me because my camera captures images with a framerate of 7,5 fps. So an Image Display update time of 200 ms is not acceptable for my application. Is this a known issue. Is there a workaround or some settings that I should tweak to improve execution speed of VIs in a subpanel. Or should i simply not use subpanels if execution speed matters - then it would be good to write this into the subpanel documentation. I carefully read the documentation an searched the dicussion forum but I could not find an answer.
    Thank you very much for any help.

    Hey Incredible,
    could you tell me your labview version and please post your labview code.
    Kind regards,
    Elmar

  • Issue while query execution on web analyser.

    Hi,
    I am getting an error message while query execution on web ie Record set too large , data retrieval restricted by configuration .I am able to run the same query in bex analyser without any issue .Any idea what could be the reason and solution for this issue .
    Regards,
    Neetika.

    Hi Neetika,
    The Query is exceeding the set limits,i suggest you to Reduce the time LIne for the Query, as it may be having more number of Cells in terms of Rows and Columns.
    Execute the Query for Less number of Days,if u r executing it for 1 Month then execute it for 10 Days.
    Rgds
    SVU123

  • How to measure the rotational speed by using rotary encoder and 1 counter?

    I want to measure the rotational speed of a shaft, and I have below hardware:
    1, a rotary encoder, with A,B,Z signals output;
    2, PCI-E6363 card.
    I do konw how to use such a  encoder to measure the rotational angle by using the function "DAQmxCreateCIAngEncoderChan", but this time I need to measure the speed(rpm), as well as the dirction of the speed, which means a negative speed represent a CCW rotate direction.
    More detail informations:
    for the encoder, the A,B signal is 600ppr, and Z signal is 1ppr
    the rotatinal speed is in range: -300 ~ 5000 rpm.
    some one suggested me that I can use the "DAQmxCreateCIAngEncoderChan" task to measure the angle firstly and then do the differential analysis with the angle. but I have to enable the Z index function, and it's hard to calculate when the shaft speed is fast then 2500rpm.
    Anyone can help me on this issue?
    Thanks in advance!

    RobertoBozzolo:
    Thansk for your reply. You are right that measure frequency to get the speed is the best way, but it's hard to get the dirction at the same time. You suggest me that "perform two angle measurements to get the sense of rotation", but I'm not sure I catched what you mean about this. I try to understand your opinion like this: distribute the signals to 2 counters, and start 2 tasks, one for frequency, the other for angle which used for deciding the dirction?
    And by the way, in my application, the counter is limited:
    I'm using PCI-E6363, which have 4 counters totally, and I have to measure 4 different speed sensors at the same time, so that means only 1 counter for me to measure the speed and the dirction.
    RobertoBozzolo 已写:
    To measure the speed from the encoder you can simply follow some of the frequency measurement examples that ship with DAQmx, considering that speed (rpm) is given by frequency (Hz) on one encoder output / 600 (ppr) * 60 (s->min)  = frequency / 10.
    Difficult is to add a sign to this measurement: frequency measurement gives you no information about sense of rotation, so I suppose you could perform two angle measurements to get the sense of rotation and then get the speed as above.

  • How do I associate timing with multiple AI loops that is independan​t of loop execution speed

    I am using Labview 7.1 and I am performing AI of
    voltage on different channels of the same multifunction DAQ.  I am
    using while loops to aquire the data.  I am writing the data to
    spreadsheet file with an associated time as a 2D array.  Currently I am
    using the 'elapsed time' interactive subVI to get the time in seconds
    (attempting to use the 'Get Date/Time in seconds' and converting it to
    DBL results in time values that do not change. My thoughts are that
    maybe the number of seconds is too large to display single second
    precision with a DBL floating point number). When I run AI on two
    multiple loops they execute at different rates and thus the time values
    from "elapsed time" are accumulated at different rates. I have tried
    using timed loops to control timing, but if one loop executes at a rate
    slower than the timing of the loop the 'elapsed time' still accumulates
    at different rates.  I need to be able to associate both analog inputs
    to the same time
    value in the spreadsheet value and I would like to find a way to
    associate a time with each data point that is independant of loop
    execution speed (although I would still like to control execution speed
    of the loops. I am pretty new to Labview and programming in general,
    any help would be greatly appreciated.

    If you want to read more than one AI at the same time, you should use a trigger.  You would need to set up the AI Trigger to an external source.  Then you would have to use a function generator or digital out to create a clock.  The clock would be wired to the AI external trigger.  When the clock goes high (or low depending on configuration), both AIs would read.  That is the method I use when needing to sync multiple AI inputs.
    - tbob
    Inventor of the WORM Global

  • SSRS Error : Query execution failed for dataset 'dataSet'. (rsErrorExecutingCommand) Semantic query execution failed. Invalid object name 'RPT.*********'. (rsSemanticQueryEngineError)

    I am new to SSRS and I am trying to migrate reports from 2008 to 2012. As I have so many reports to migrate, I simply got the back up of ReportServer,
    ReportServerTempDB, and Encryption Key and restored them to test environment. I made necessary configuration from RS configuration tool. I am able to see the reports now when I browse //hostname/reports. But when I open any particular report I am getting some
    error.
    · An error has occurred during report processing.
    (rsProcessingAborted)
    Query execution       failed for dataset 'dataSet'.
          (rsErrorExecutingCommand
    Semantic query        execution failed. Invalid object name
           'RPT. ******'. (rsSemanticQueryEngineError)
    ****** - I am assuming this is a custom data class.
    Does anyone have insight on this? or any better way that I can migrate the reports to new server with less efforts.
    I don’t have the reports solution file to deploy the reports, so I have followed backup and restore process.

    Hi Kishore237,
    According to your description, you migrated some reports from Reporting Services (SSRS) 2008 to 2012. Now you get error when accessing the reports on SSRS 2012. Right?
    In this scenario, did you modify the report data source in database after migration? You can try to open the report in Report Builder or Report designer and check the report dataset. If you can preview the report in Report builder or Report designer,
    please try to redeploy the report to Report Server. If it is still not working, please try to restore the database from backup. And for migrating reports, please follow the "Content-Only Migration" in the link below:
    http://msdn.microsoft.com/en-us/library/ms143724(v=sql.110).aspx
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

Maybe you are looking for

  • User Tip: BootCamp - Install Windows XP & then Windows 7

    Here is my tip for installing Windows XP in Mountain Lion/BootCamp, and in subsequently upgrading to Windows 7... I've tried all the Virtualisation programs: CrossOver, VirtualBox, Fusion, and Parallels - and none can be called 'brisk' in their opera

  • My cd and dvd will not play

    my cd and dvd will not play

  • Converting .doc or .rtf to xsl-fo

    Hello everyone, Can anyone please help me to convert a .doc or .rtf file to xsl-fo using Java API? Thank you, Rajan S

  • Do you use Java Faces with Flex?

    I'm having problem getting the FacesContext because the faces serlvet does not process the mesages passed from Flex component.

  • Troubles Exporting Song List

    Here's my situation, I want to export my song list and I have songs with Chinese words in them. I could do it before, it appeared as if iTunes saved the .txt files in Unicode, but now I can't get it to work. All that shows up are question marks where