MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
buf_block_t Struct Reference

#include <buf0buf.h>

Collaboration diagram for buf_block_t:

Public Attributes

Optimistic search field
ib_uint64_t modify_clock
Hash search fields (unprotected)

NOTE that these fields are NOT protected by any semaphore!

ulint n_hash_helps
ulint n_fields
ulint n_bytes
ibool left_side
Hash search fields

These 5 fields may only be modified when we have an x-latch on btr_search_latch AND

  • we are holding an s-latch or x-latch on buf_block_t::lock or
  • we know that buf_block_t::buf_fix_count == 0.

An exception to this is when we init or create a page in the buffer pool in buf0buf.cc.

Another exception is that assigning block->index = NULL is allowed whenever holding an x-latch on btr_search_latch.

unsigned curr_n_fields:10
unsigned curr_n_bytes:15
unsigned curr_left_side:1
dict_index_tindex

General fields

buf_page_t page
byte * frame
ib_mutex_t mutex
rw_lock_t lock
unsigned lock_hash_val:32
ibool check_index_page_at_flush
 UT_LIST_NODE_T (buf_block_t) unzip_LRU

Detailed Description

The buffer control block structure

Definition at line 1587 of file buf0buf.h.

Member Function Documentation

buf_block_t::UT_LIST_NODE_T ( buf_block_t  )

node of the decompressed LRU list; a block is in the unzip_LRU list if page.state == BUF_BLOCK_FILE_PAGE and page.zip.data != NULL

Member Data Documentation

ibool buf_block_t::check_index_page_at_flush

TRUE if we know that this is an index page, and want the database to check its consistency before flush; note that there may be pages in the buffer pool which are index pages, but this flag is not set because we do not keep track of all pages; NOT protected by any mutex

Definition at line 1627 of file buf0buf.h.

unsigned buf_block_t::curr_left_side

TRUE or FALSE in hash indexing

Definition at line 1690 of file buf0buf.h.

unsigned buf_block_t::curr_n_bytes

number of bytes in hash indexing

Definition at line 1688 of file buf0buf.h.

unsigned buf_block_t::curr_n_fields

prefix length for hash indexing: number of full fields

Definition at line 1686 of file buf0buf.h.

byte* buf_block_t::frame

pointer to buffer frame which is of size UNIV_PAGE_SIZE, and aligned to an address divisible by UNIV_PAGE_SIZE

Definition at line 1596 of file buf0buf.h.

dict_index_t* buf_block_t::index

Index for which the adaptive hash index has been created, or NULL if the page does not exist in the index. Note that it does not guarantee that the index is complete, though: there may have been hash collisions, record deletions, etc.

Definition at line 1691 of file buf0buf.h.

ibool buf_block_t::left_side

TRUE or FALSE, depending on whether the leftmost record of several records with the same prefix should be indexed in the hash index

Definition at line 1661 of file buf0buf.h.

rw_lock_t buf_block_t::lock

read-write lock of the buffer frame

Definition at line 1617 of file buf0buf.h.

unsigned buf_block_t::lock_hash_val

hashed value of the page address in the record lock hash table; protected by buf_block_t::lock (or buf_block_t::mutex, buf_pool->mutex in buf_page_get_gen(), buf_page_init_for_read() and buf_page_create())

Definition at line 1619 of file buf0buf.h.

ib_uint64_t buf_block_t::modify_clock

this clock is incremented every time a pointer to a record on the page may become obsolete; this is used in the optimistic cursor positioning: if the modify clock has not changed, we know that the pointer is still valid; this field may be changed if the thread (1) owns the pool mutex and the page is not bufferfixed, or (2) the thread has an x-latch on the block

Definition at line 1639 of file buf0buf.h.

ib_mutex_t buf_block_t::mutex

mutex protecting this block: state (also protected by the buffer pool mutex), io_fix, buf_fix_count, and accessed; we introduce this new mutex in InnoDB-5.1 to relieve contention on the buffer pool mutex

Definition at line 1611 of file buf0buf.h.

ulint buf_block_t::n_bytes

recommended prefix: number of bytes in an incomplete field

Definition at line 1659 of file buf0buf.h.

ulint buf_block_t::n_fields

recommended prefix length for hash search: number of full fields

Definition at line 1657 of file buf0buf.h.

ulint buf_block_t::n_hash_helps

counter which controls building of a new hash index for the page

Definition at line 1655 of file buf0buf.h.

buf_page_t buf_block_t::page

page information; this must be the first field, so that buf_pool->page_hash can point to buf_page_t or buf_block_t

Definition at line 1592 of file buf0buf.h.


The documentation for this struct was generated from the following file: