Hi All,
Is there any data restriction in SP while retrieving a data from DB?
I am facing some sort of weird issue that When I executes SP from Appian end(Process modelling), it fails to execute intermittently . Out of 10 times, it executes at most once and remaining time it just skips the node and no data is getting saved(I am performing selection on single table and inserting onto another after manipulating few data). However When I executes from DB directly, it works fine as expected which shows that no logical issue.So How can I solve this issue?
Thanks in advance..!
Note:And also I would like to highlight that execution time of SP ranges from 40 min to 1 hour as I am dealing with huge amount of data.
Discussion posts and replies are publicly visible
Hi melwyna, You can optimize the stored proc for better performance. Also you can use cursors if you need for looping if necessary. There might be multiple reasons for slowness, 1. Indexes on target table - If there are indexes on target table, it might be the reason for slowness. So if you are updating other tables, you can think of dropping indexes before updation and recreate those after operation is done (This is useful if this is one time process OR weekly and happening outside of business hours) 2. Huge data: If data is huge, it takes time to execute the stored proc. I dealt with 100k database rows and it took around 10-15 mins for execution. If you are handling huge data, even simple operation can impact performance. So you need to carefully design and use it. Use cursors for better performance. If you can provide more details about how much data you dealing with and what kind of manipulations you are doing, that might help us suggest better approach for this. Regards, Ashish.
1)How long a SP works? Is there any restriction in time line like it works for some time(Say 20 min) and beyond the time it skips?
- Certainly if SP takes more time, Stored Procedure node breaks and generates alert that it is not able to pull required resources to perform this operation. But the stored process still runs in backend. You can see if that procedure is running in backend by running query to see process list i.e. show processlist. This will help you identify is procedure is still running. It will look like below. Info section of the result will show if your SP is still running.
2)Will there be any chances that SP can be asynchronous? I mean just triggering an SP and skipping the node.
- I dont think we can call SP asynchronously.
3)Will the SP skips the execution when sql server memory is full?
- This is a rare case but high sql memory usage certainly affects the execution of SP.
You can try below approach,
As you said, you are joining four tables and inserting onto a new table. Here, can you create new view which has the data combining 4 tables and use that view in your stored procedure. Also, if Stored procedure is taking a lot of time to execute, other option is to run stored procedure is batches e.g. run SP for 50k at a time into multiple batches. Batch size can vary dependent on the time taken for execution of SP.
Let me know if this helps.
~ Ashish