MySQL 8.0.39
Source Code Documentation
|
Go to the source code of this file.
Functions | |
Log - waiting for redo written to disk. | |
Wait_stats | log_write_up_to (log_t &log, lsn_t lsn, bool flush_to_disk) |
Waits until the redo log is written up to a provided lsn. More... | |
uint64_t | log_total_flushes () |
Total number of redo log flushes (fsyncs) that have been started since the redo log system (log_sys) became initialized (. More... | |
uint64_t | log_pending_flushes () |
Number of currently pending redo log flushes (fsyncs in-progress). More... | |
void | log_writer_check_if_exited_extra_margin (log_t &log) |
Checks if the redo log writer exited extra margin. More... | |
Log - the log write threads. | |
#define | log_flusher_mutex_enter(log) mutex_enter(&((log).flusher_mutex)) |
#define | log_flusher_mutex_enter_nowait(log) mutex_enter_nowait(&((log).flusher_mutex)) |
#define | log_flusher_mutex_exit(log) mutex_exit(&((log).flusher_mutex)) |
#define | log_flusher_mutex_own(log) (mutex_own(&((log).flusher_mutex)) || !log_flusher_is_active()) |
#define | log_flush_notifier_mutex_enter(log) mutex_enter(&((log).flush_notifier_mutex)) |
#define | log_flush_notifier_mutex_exit(log) mutex_exit(&((log).flush_notifier_mutex)) |
#define | log_flush_notifier_mutex_own(log) (mutex_own(&((log).flush_notifier_mutex)) || !log_flush_notifier_is_active()) |
#define | log_writer_mutex_enter(log) mutex_enter(&((log).writer_mutex)) |
#define | log_writer_mutex_enter_nowait(log) mutex_enter_nowait(&((log).writer_mutex)) |
#define | log_writer_mutex_exit(log) mutex_exit(&((log).writer_mutex)) |
#define | log_writer_mutex_own(log) (mutex_own(&((log).writer_mutex)) || !log_writer_is_active()) |
#define | log_write_notifier_mutex_enter(log) mutex_enter(&((log).write_notifier_mutex)) |
#define | log_write_notifier_mutex_exit(log) mutex_exit(&((log).write_notifier_mutex)) |
#define | log_write_notifier_mutex_own(log) (mutex_own(&((log).write_notifier_mutex)) || !log_write_notifier_is_active()) |
void | log_control_writer_threads (log_t &log) |
Pause / resume the log writer, the log flusher, the log write notifier and the log flush notifier threads based on innodb_log_writer_threads value. More... | |
void | log_writer (log_t *log_ptr) |
The log writer thread routine. More... | |
void | log_flusher (log_t *log_ptr) |
The log flusher thread routine. More... | |
void | log_flush_notifier (log_t *log_ptr) |
The log flush notifier thread routine. More... | |
void | log_write_notifier (log_t *log_ptr) |
The log write notifier thread routine. More... | |
void | log_writer_thread_active_validate () |
Validates that the log writer thread is active. More... | |
void | log_background_write_threads_active_validate (const log_t &log) |
Validates that the log writer, flusher threads are active. More... | |
bool | log_writer_is_active () |
Checks if log writer thread is active. More... | |
bool | log_write_notifier_is_active () |
Checks if log write notifier thread is active. More... | |
bool | log_flusher_is_active () |
Checks if log flusher thread is active. More... | |
bool | log_flush_notifier_is_active () |
Checks if log flush notifier thread is active. More... | |
bool | log_write_to_file_requests_are_frequent (std::chrono::microseconds interval) |
Checks if requests to write redo log buffer to disk are frequent (which means that there is at least one request per 1ms in average). More... | |
bool | log_write_to_file_requests_are_frequent (const log_t &log) |
Checks if requests to write redo log buffer to disk are frequent (which means that there is at least one request per 1ms in average). More... | |
#define log_flush_notifier_mutex_enter | ( | log | ) | mutex_enter(&((log).flush_notifier_mutex)) |
#define log_flush_notifier_mutex_exit | ( | log | ) | mutex_exit(&((log).flush_notifier_mutex)) |
#define log_flush_notifier_mutex_own | ( | log | ) | (mutex_own(&((log).flush_notifier_mutex)) || !log_flush_notifier_is_active()) |
#define log_flusher_mutex_enter | ( | log | ) | mutex_enter(&((log).flusher_mutex)) |
#define log_flusher_mutex_enter_nowait | ( | log | ) | mutex_enter_nowait(&((log).flusher_mutex)) |
#define log_flusher_mutex_exit | ( | log | ) | mutex_exit(&((log).flusher_mutex)) |
#define log_flusher_mutex_own | ( | log | ) | (mutex_own(&((log).flusher_mutex)) || !log_flusher_is_active()) |
#define log_write_notifier_mutex_enter | ( | log | ) | mutex_enter(&((log).write_notifier_mutex)) |
#define log_write_notifier_mutex_exit | ( | log | ) | mutex_exit(&((log).write_notifier_mutex)) |
#define log_write_notifier_mutex_own | ( | log | ) | (mutex_own(&((log).write_notifier_mutex)) || !log_write_notifier_is_active()) |
#define log_writer_mutex_enter | ( | log | ) | mutex_enter(&((log).writer_mutex)) |
#define log_writer_mutex_enter_nowait | ( | log | ) | mutex_enter_nowait(&((log).writer_mutex)) |
#define log_writer_mutex_exit | ( | log | ) | mutex_exit(&((log).writer_mutex)) |
#define log_writer_mutex_own | ( | log | ) | (mutex_own(&((log).writer_mutex)) || !log_writer_is_active()) |
void log_background_write_threads_active_validate | ( | const log_t & | log | ) |
Validates that the log writer, flusher threads are active.
Used only to assert, that the state is correct.
[in] | log | redo log |
void log_control_writer_threads | ( | log_t & | log | ) |
Pause / resume the log writer, the log flusher, the log write notifier and the log flush notifier threads based on innodb_log_writer_threads value.
void log_flush_notifier | ( | log_t * | log_ptr | ) |
The log flush notifier thread routine.
[in,out] | log_ptr | pointer to redo log |
|
inline |
Checks if log flush notifier thread is active.
void log_flusher | ( | log_t * | log_ptr | ) |
The log flusher thread routine.
[in,out] | log_ptr | pointer to redo log |
|
inline |
Checks if log flusher thread is active.
uint64_t log_pending_flushes | ( | ) |
Number of currently pending redo log flushes (fsyncs in-progress).
uint64_t log_total_flushes | ( | ) |
Total number of redo log flushes (fsyncs) that have been started since the redo log system (log_sys) became initialized (.
void log_write_notifier | ( | log_t * | log_ptr | ) |
The log write notifier thread routine.
[in,out] | log_ptr | pointer to redo log |
|
inline |
Checks if log write notifier thread is active.
|
inline |
Checks if requests to write redo log buffer to disk are frequent (which means that there is at least one request per 1ms in average).
[in] | log | redo log |
|
inline |
Checks if requests to write redo log buffer to disk are frequent (which means that there is at least one request per 1ms in average).
[in] | interval | how often in average requests happen |
Wait_stats log_write_up_to | ( | log_t & | log, |
lsn_t | lsn, | ||
bool | flush_to_disk | ||
) |
Waits until the redo log is written up to a provided lsn.
[in] | log | redo log |
[in] | lsn | lsn to wait for |
[in] | flush_to_disk | true: wait until it is flushed |
void log_writer | ( | log_t * | log_ptr | ) |
The log writer thread routine.
[in,out] | log_ptr | pointer to redo log |
void log_writer_check_if_exited_extra_margin | ( | log_t & | log | ) |
Checks if the redo log writer exited extra margin.
To minimize flipping of log.m_writer_inside_extra_margin, the check assumes the very pessimistic scenario in which a next write of the log_writer thread, would be executed up to the current lsn.
Requirement: log.writer_mutex acquired and log.m_writer_inside_extra_margin is true, before calling this function.
[in,out] | log | redo log |
|
inline |
Checks if log writer thread is active.
void log_writer_thread_active_validate | ( | ) |
Validates that the log writer thread is active.
Used only to assert, that the state is correct.