MySQL 5.6.14 Source Code Document
|
Public Attributes | |
page_zip_des_t | zip |
buf_page_t * | hash |
unsigned | access_time |
General fields | |
None of these bit-fields must be modified without holding buf_page_get_mutex() [buf_block_t::mutex or buf_pool->zip_mutex], since they can be stored in the same machine word. Some of these fields are additionally protected by buf_pool->mutex. | |
unsigned | space:32 |
unsigned | offset:32 |
unsigned | state:BUF_PAGE_STATE_BITS |
unsigned | flush_type:2 |
unsigned | io_fix:2 |
unsigned | buf_fix_count:19 |
unsigned | buf_pool_index:6 |
Page flushing fields | |
lsn_t | newest_modification |
lsn_t | oldest_modification |
UT_LIST_NODE_T (buf_page_t) list |
LRU replacement algorithm fields | |
These fields are protected by buf_pool->mutex only (not buf_pool->zip_mutex or buf_block_t::mutex). | |
unsigned | old:1 |
unsigned | freed_page_clock:31 |
UT_LIST_NODE_T (buf_page_t) LRU |
buf_page_t::UT_LIST_NODE_T | ( | buf_page_t | ) |
based on state, this is a list node, protected either by buf_pool->mutex or by buf_pool->flush_list_mutex, in one of the following lists in buf_pool:
If bpage is part of flush_list then the node pointers are covered by buf_pool->flush_list_mutex. Otherwise these pointers are protected by buf_pool->mutex.
The contents of the list node is undefined if !in_flush_list && state == BUF_BLOCK_FILE_PAGE, or if state is one of BUF_BLOCK_MEMORY, BUF_BLOCK_REMOVE_HASH or BUF_BLOCK_READY_IN_USE.
buf_page_t::UT_LIST_NODE_T | ( | buf_page_t | ) |
node of the LRU list
unsigned buf_page_t::access_time |
unsigned buf_page_t::buf_fix_count |
unsigned buf_page_t::buf_pool_index |
unsigned buf_page_t::flush_type |
if this block is currently being flushed to disk, this tells the flush_type.
unsigned buf_page_t::freed_page_clock |
buf_page_t* buf_page_t::hash |
unsigned buf_page_t::io_fix |
type of pending I/O operation; also protected by buf_pool->mutex
lsn_t buf_page_t::newest_modification |
unsigned buf_page_t::offset |
unsigned buf_page_t::old |
lsn_t buf_page_t::oldest_modification |
log sequence number of the START of the log entry written of the oldest modification to this block which has not yet been flushed on disk; zero if all modifications are on disk. Writes to this field must be covered by both block->mutex and buf_pool->flush_list_mutex. Hence reads can happen while holding any one of the two mutexes
unsigned buf_page_t::space |
unsigned buf_page_t::state |
state of the control block; also protected by buf_pool->mutex. State transitions from BUF_BLOCK_READY_FOR_USE to BUF_BLOCK_MEMORY need not be protected by buf_page_get_mutex().
page_zip_des_t buf_page_t::zip |