Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce contention for allocation table lock while database is in stalled physical backup state [CORE4431] #4751

Closed
firebird-automations opened this issue May 16, 2014 · 4 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @hvlad

In Classic modes (CS\SC) every attachment have its own private cache of allocation table contents.
Access to allocation table is protected by common allocation table lock (alloc lock).
Currently, when attachment needs to look for a page number at allocation table, it acquires alloc lock in SH mode.
But it is not necessary if corresponding part of allocation table is already cached by attachement as allocation
table entries is never changed, it is only appended.
More, a lot of unnecessary requests for a SH lock not allows writers to proceed as quick as it can.

The improvement is to introduce additional local (per-attachment) read-write lock to protect access to the
attachment's private cache of the allocation table. It allows to significantly lower contention on global lock.

Commits: 6a80667 87ee6b8 FirebirdSQL/fbt-repository@cff9a16 FirebirdSQL/fbt-repository@eefc95a

@firebird-automations
Copy link
Collaborator Author

Modified by: @hvlad

Component: Engine [ 10000 ]

assignee: Vlad Khorsun [ hvlad ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @hvlad

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

Fix Version: 2.5.3 [ 10461 ]

Fix Version: 3.0 Beta 1 [ 10332 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

status: Resolved [ 5 ] => Resolved [ 5 ]

QA Status: Cannot be tested

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment