MySQL 8.0.40
Source Code Documentation
|
Functions | |
bool | initialize (ulint n_pages_last) |
Initialize flush parameters for current iteration. More... | |
void | set_average () |
Set average LSN and page flush speed across multiple iterations. More... | |
ulint | get_pct_for_dirty () |
Calculates if flushing is required based on number of dirty pages in the buffer pool. More... | |
ulint | get_pct_for_lsn (lsn_t age) |
Calculates if flushing is required based on redo generation rate. More... | |
ulint | set_flush_target_by_lsn (bool sync_flush, lsn_t sync_flush_limit_lsn) |
Set page flush target based on LSN change and checkpoint age. More... | |
ulint | set_flush_target_by_page (ulint n_pages_lsn) |
Set page flush target based on dirty pages in buffer pool. More... | |
ulint | page_recommendation (ulint last_pages_in, bool is_sync_flush, lsn_t sync_flush_limit_lsn) |
This function is called approximately once every second by the page_cleaner thread, unless it is sync flushing mode, in which case it is called every small round. More... | |
Variables | |
std::chrono::steady_clock::time_point | cur_iter_time |
Time stamp of current iteration. More... | |
lsn_t | cur_iter_lsn = 0 |
LSN at current iteration. More... | |
ulint | cur_iter_pages_dirty = 0 |
Number of dirty pages in flush list in current iteration. More... | |
ulint | cur_iter_dirty_pct = 0 |
Dirty page percentage in buffer pool. More... | |
std::chrono::steady_clock::time_point | prev_iter_time |
Time stamp of previous iteration. More... | |
ulint | prev_iter_pages_dirty = 0 |
Number of dirty pages in flush list at previous iteration. More... | |
ulint | prev_iter_pages_flushed = 0 |
Actual number of pages flushed by last iteration. More... | |
lsn_t | lsn_avg_rate = 0 |
Average redo generation rate. More... | |
ulint | page_avg_rate = 0 |
Average page flush rate. More... | |
lsn_t | prev_lsn = 0 |
LSN when last average rates are computed. More... | |
std::chrono::steady_clock::time_point | prev_time |
Time stamp when last average rates are computed. More... | |
ulint | n_iterations = 0 |
Number of iteration till average rates are computed. More... | |
ulint | sum_pages = 0 |
Pages flushed till last average rates are computed. More... | |
ulint Adaptive_flush::get_pct_for_dirty | ( | ) |
Calculates if flushing is required based on number of dirty pages in the buffer pool.
Calculates if flushing is required based on redo generation rate.
age | in: current age of LSN. |
bool Adaptive_flush::initialize | ( | ulint | n_pages_last | ) |
Initialize flush parameters for current iteration.
[in] | n_pages_last | number of pages flushed in last iteration |
ulint Adaptive_flush::page_recommendation | ( | ulint | last_pages_in, |
bool | is_sync_flush, | ||
lsn_t | sync_flush_limit_lsn | ||
) |
This function is called approximately once every second by the page_cleaner thread, unless it is sync flushing mode, in which case it is called every small round.
Based on various factors it decides if there is a need to do flushing.
last_pages_in | the number of pages flushed by the last flush_list flushing |
is_sync_flush | true iff this is sync flush mode |
sync_flush_limit_lsn | low limit for oldest_modification if is_sync_flush is true |
void Adaptive_flush::set_average | ( | ) |
Set average LSN and page flush speed across multiple iterations.
Set page flush target based on LSN change and checkpoint age.
[in] | sync_flush | true iff this is sync flush mode |
[in] | sync_flush_limit_lsn | low limit for oldest_modification if sync_flush is true |
Set page flush target based on dirty pages in buffer pool.
Set only if the target are is found to be higher than the target evaluated based on LSN.
[in] | n_pages_lsn | number of pages estimated and set based on LSN |
ulint Adaptive_flush::cur_iter_dirty_pct = 0 |
Dirty page percentage in buffer pool.
lsn_t Adaptive_flush::cur_iter_lsn = 0 |
LSN at current iteration.
ulint Adaptive_flush::cur_iter_pages_dirty = 0 |
Number of dirty pages in flush list in current iteration.
std::chrono::steady_clock::time_point Adaptive_flush::cur_iter_time |
Time stamp of current iteration.
lsn_t Adaptive_flush::lsn_avg_rate = 0 |
Average redo generation rate.
ulint Adaptive_flush::n_iterations = 0 |
Number of iteration till average rates are computed.
ulint Adaptive_flush::page_avg_rate = 0 |
Average page flush rate.
ulint Adaptive_flush::prev_iter_pages_dirty = 0 |
Number of dirty pages in flush list at previous iteration.
ulint Adaptive_flush::prev_iter_pages_flushed = 0 |
Actual number of pages flushed by last iteration.
std::chrono::steady_clock::time_point Adaptive_flush::prev_iter_time |
Time stamp of previous iteration.
lsn_t Adaptive_flush::prev_lsn = 0 |
LSN when last average rates are computed.
std::chrono::steady_clock::time_point Adaptive_flush::prev_time |
Time stamp when last average rates are computed.
ulint Adaptive_flush::sum_pages = 0 |
Pages flushed till last average rates are computed.