Details
-
New Feature
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
Description
MyISAM has a segmented key cache to improve performance when multiple users are running queries concurrently.
We should do the same for Aria. This is important, because it affects internal aria temp tables.
We could do this in two phases:
- First do a version when one cannot change the number of segments or change the size of the key caches. This makes the initial version much easier to implement. Then later, if needed, add the functionality to change the above things.
Some implementation details:
- Add a new option, aria-pagecache-segments, default 1.
- Create the number of requested key caches at aria startup, each of the size of aria.pagecache-buffer-size/aria-pagecache-segment
- Use the file number info->dfile, and info->s->kfile to decide which pagecache to use. The pagecache used could potentially be stored in PAGECACHE_FILE for fast usage. This will require some changes in storage/maria/ma_pagecaches.c (this file is not yet used).
- This greatly simplifies flushing of a file as we have only to loop over one pagecache.
- Change code that calls pagecache_end, pagecache_init etc to loop over all pagecaches.
- Change code in ma_checkpoint.c to loop over all pagecaches.
Attachments
Issue Links
- causes
-
MDEV-36872 UBSAN errors in ma_checkpoint.c
-
- Closed
-
-
MDEV-36874 Behavior upon too small aria_pagecache_buffer_size in case of multiple segments is not very user-friendly
-
- Closed
-
-
MDEV-36912 sys_vars.sysvars_server_embedded and sys_vars.sysvars_server_notembedded fail on x86
-
- Closed
-
-
MDEV-36914 ma_checkpoint.c(285,9): conversion from '__int64' to 'uint' treated as an error
-
- Closed
-
-
MDEV-36916 The number of pagecache segments affects counting of used/unused blocks
-
- Open
-
- relates to
-
MDEV-36880 Server gets stuck with extremely small aria_pagecache_buffer_size
-
- Closed
-