CONTRIB_371: Efficient zeroing of UNDO, REDO and tablespace files #465
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When initialising REDO log files at startup we want to ensure that the entire file size is preallocated and that the file is properly initialised.
The same is true for UNDO log files in LGMAN and tablespace files.
To speed up this we use special XFS methods and POSIX methods that apply to the file systems we recommend users to use. This means that we can preallocate file space without actually writing it and we can even ensure that reads of this area returns pages filled with zeroes.
We can also use fallocate which works for XFS and ext4 at least in Linux.
We still need to write the initial parts of the file and for the REDO log we have to write each start page of each MByte.
Encrypted and compressed files have a file header that should not be zeroed. More debug info.