Issue Details (XML | Word | Printable)

Key: CORE-4215
Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Vlad Khorsun
Reporter: Vlad Khorsun
Votes: 2
Watchers: 5
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Execution of SET STATISTICS INDEX statement could block or slow execution of concurrent attachments

Created: 11/Sep/13 10:24 AM   Updated: 21/Aug/16 05:54 AM
Component/s: Engine
Affects Version/s: 2.1.0, 2.1.1, 2.0.5, 2.1.2, 2.1.3, 3.0 Initial, 2.0.6, 2.5.0, 2.1.4, 2.5.1, 2.0.7, 2.1.5, 2.5.2, 2.1.5 Update 1, 2.5.2 Update 1, 3.0 Alpha 1
Fix Version/s: 3.0 Alpha 2, 2.5.3

QA Status: Deferred
Test Details:
Creation of huge table on the fly is not allowed - we can not waste time for this while all tests running.
Database with huge table should be preliminary created (seperately for every ODS) and committed on test running host.
It seems to me that this is also undesirable.
Waiting for other suggestions how to implement such test.


 Description  « Hide
BTR_selectivity() walks the whole leaf level of given index b-tree to calculate index selectivity.
During whole process rescheduling points in the engine happens only at disk IO operations.
Therefore concurrent attachment's AST requests such as page lock requests, monitoring,
cancellation, etc could wait too long.

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Vlad Khorsun made changes - 11/Sep/13 10:24 AM
Field Original Value New Value
Assignee Vlad Khorsun [ hvlad ]
Vlad Khorsun made changes - 11/Sep/13 03:39 PM
Summary Execution of SET STATISTICS INDEX statement could block execution of concurrent attachments Execution of SET STATISTICS INDEX statement could block or slow execution of concurrent attachments
Description BTR_selectivity() walks the whole leaf level of given index b-tree to calculate index selectivity.
During whole process there is no resheduling points in the engine. It block's concurrent
attachment's AST requests such as page lock requests, monitoring, cancellation etc.
BTR_selectivity() walks the whole leaf level of given index b-tree to calculate index selectivity.
During whole process rescheduling points in the engine happens only at disk IO operations.
Therefore concurrent attachment's AST requests such as page lock requests, monitoring,
cancellation, etc could wait too long.
Siva Ramanathan added a comment - 11/Sep/13 06:13 PM
This is a serious issue for any 24x7 sites using Firebird.

Vlad Khorsun added a comment - 29/Sep/13 09:24 AM
Siva,
Could you confirm the issue is solved or not, please ?

Siva Ramanathan added a comment - 30/Sep/13 03:10 PM
Vlad,

IBPhoenix is preparing a build for us with the fix. We should be receiving the build any day now. Once we receive the build, we will test it out and give our feedback.

Regards,
Siva

Siva Ramanathan added a comment - 30/Sep/13 03:33 PM
Paul,

Thanks for the update.

Regards,
Siva

Vlad Khorsun added a comment - 10/Dec/13 08:48 AM
Any feedback ?

Siva Ramanathan added a comment - 10/Dec/13 05:10 PM
Vlad, your fix appears to be working correctly. We have not noticed this issue after applying the fix.

Regards,
Siva

Vlad Khorsun added a comment - 10/Dec/13 07:00 PM
Siva,

will close it as fixed, thanks

Vlad Khorsun made changes - 10/Dec/13 07:00 PM
Status Open [ 1 ] Resolved [ 5 ]
Fix Version/s 2.5.3 [ 10461 ]
Fix Version/s 3.0 Alpha 2 [ 10560 ]
Resolution Fixed [ 1 ]
Pavel Cisar made changes - 22/Sep/15 09:35 AM
Status Resolved [ 5 ] Closed [ 6 ]
Pavel Zotov made changes - 18/Jan/16 03:38 PM
Status Closed [ 6 ] Closed [ 6 ]
QA Status No test
Pavel Zotov made changes - 21/Aug/16 05:54 AM
Status Closed [ 6 ] Closed [ 6 ]
Test Details Creation of huge table on the fly is not allowed - we can not waste time for this while all tests running.
Database with huge table should be preliminary created (seperately for every ODS) and committed on test running host.
It seems to me that this is also undesirable.
Waiting for other suggestions how to implement such test.
QA Status No test Deferred