Issue Details (XML | Word | Printable)

Key: CORE-1819
Type: Sub-task Sub-task
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Vlad Khorsun
Reporter: Vlad Khorsun
Votes: 0
Watchers: 0

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

More efficient solution for CORE-1300 (Lower level index pages is missed from parent page)

Created: 02/Apr/08 07:29 PM   Updated: 18/Nov/08 12:26 PM
Component/s: Engine
Affects Version/s: 2.1 Beta 1, 2.1 Beta 2, 2.1 RC1, 2.5 Initial, 2.1 RC2, 2.0.4
Fix Version/s: 2.5 Alpha 1, 2.1.1, 2.0.5

Issue Links:

 Description  « Hide
There was 3 possible solutions offered for CORE-1300 and first of them was committed into codebase :

> mark parent page with btr_dont_gc flag before CCH_HANDOFF and clear this mark after return from add_node
> Easy to implement but make additional page fetches with LCK_write lock which is not necessary in most cases.

There was (private) reports about performance loss in some specific scenarios so new solution was implemented :
Replace btr_dont_gc flag by special kind of lock and restore original page locking scheme.
Instead of set btr_dont_gc flag acquire shared lock with page number as a key.
Instead of clear btr_dont_gc flag release already acquired lock.
Instead of test for btr_dont_gc flag acquire exclusive lock with page number as a key in no-wait mode and release it immediately.

Acquiring of this new locks must be done only after page fetch, i.e. after obtaining page lock .

 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Sean Leyne added a comment - 02/Apr/08 07:40 PM

Please provide a better description/subject for this case.

Vlad Khorsun added a comment - 02/Apr/08 07:50 PM
i have no idea how to improve subject more ;)

Vlad Khorsun added a comment - 02/May/08 09:43 AM
Added backport for 2.1.1
Backport for 2.0.5 will follow soon

Vlad Khorsun added a comment - 07/May/08 08:26 AM
Backported into 2.0.5