Subject | Handling deadlocks with classic mode |
---|---|
Author | vincent999x |
Post date | 2011-10-19T01:44:35Z |
hello,
We recently switched from superserver mode to classic mode (still stuck on Firebird 1.5 unfortunately) to take advantage of the 2nd CPU on the server and to prevent intensive queries from slowing down the whole system. It has worked out well except that we seem to see more deadlocks now.
Currently, we have one user who has been unable to update a record for 3 days now (keeps getting a deadlock condition), so it seems that as a last resort I might have to restart Firebird to break this deadlock.
Here's my question -- how do I do that? Do I have to kill all of the fb_inet_server processes? The easiest way for me is to reboot the server, but is there a better way? We have a GUI tool (Easy-IP DB manager), but it only kills the Firebird listener process.
Two other things I've noticed with classic vs. superserver:
1) I'm having more trouble altering stored procedures. It seems classic mode won't let you update a stored procedure if it's currently being run. I don't recall this problem with superserver mode.
2) In superserver mode, when I abnormally terminated from IBExpert (our SQL query tool) due to the query taking too long -- the system response time improved immediately. However, in classic mode, the fb_inet_server process continues to run even though I abnormally terminated from IBExpert.
Thanks in advance for any assistance. I know the long-term solution is to write better code, but for the short-term I need a way to break deadlocks without rebooting the database server constantly.
vince
We recently switched from superserver mode to classic mode (still stuck on Firebird 1.5 unfortunately) to take advantage of the 2nd CPU on the server and to prevent intensive queries from slowing down the whole system. It has worked out well except that we seem to see more deadlocks now.
Currently, we have one user who has been unable to update a record for 3 days now (keeps getting a deadlock condition), so it seems that as a last resort I might have to restart Firebird to break this deadlock.
Here's my question -- how do I do that? Do I have to kill all of the fb_inet_server processes? The easiest way for me is to reboot the server, but is there a better way? We have a GUI tool (Easy-IP DB manager), but it only kills the Firebird listener process.
Two other things I've noticed with classic vs. superserver:
1) I'm having more trouble altering stored procedures. It seems classic mode won't let you update a stored procedure if it's currently being run. I don't recall this problem with superserver mode.
2) In superserver mode, when I abnormally terminated from IBExpert (our SQL query tool) due to the query taking too long -- the system response time improved immediately. However, in classic mode, the fb_inet_server process continues to run even though I abnormally terminated from IBExpert.
Thanks in advance for any assistance. I know the long-term solution is to write better code, but for the short-term I need a way to break deadlocks without rebooting the database server constantly.
vince