MySQL 8.4.0
Source Code Documentation
trx0purge.h File Reference

Purge old versions. More...

#include "fil0fil.h"
#include "mtr0mtr.h"
#include "page0page.h"
#include "que0types.h"
#include "read0types.h"
#include "trx0sys.h"
#include "trx0types.h"
#include "univ.i"
#include "usr0sess.h"
#include "trx0purge.ic"

Go to the source code of this file.

Classes

struct  purge_iter_t
 This is the purge pointer/iterator. More...
 
struct  undo::space_id_account
 The currently used undo space IDs for an undo space number along with a boolean showing whether the undo space number is in use. More...
 
struct  undo::Tablespace
 An undo::Tablespace object is used to easily convert between undo_space_id and undo_space_num and to create the automatic file_name and space name. More...
 
class  undo::Tablespaces
 List of undo tablespaces, each containing a list of rollback segments. More...
 
class  undo::Inject_failure_once
 Inject a failure in the undo truncation debug compiled code at various places so that it fails the first time it hits and succeeds after that. More...
 
class  undo::Truncate
 Track an UNDO tablespace marked for truncate. More...
 
struct  trx_purge_t
 The control structure used in the purge operation. More...
 
struct  TrxUndoRsegsIterator
 Choose the rollback segment with the smallest trx_no. More...
 

Namespaces

namespace  undo
 

Enumerations

enum  purge_state_t {
  PURGE_STATE_INIT , PURGE_STATE_RUN , PURGE_STATE_STOP , PURGE_STATE_EXIT ,
  PURGE_STATE_DISABLED
}
 Purge states. More...
 

Functions

static fil_addr_t trx_purge_get_log_from_hist (fil_addr_t node_addr)
 Calculates the file address of an undo log header when we have the file address of its history list node. More...
 
void trx_purge_sys_mem_create ()
 Initialize in-memory purge structures. More...
 
void trx_purge_sys_initialize (uint32_t n_purge_threads, purge_pq_t *purge_queue)
 Creates the global purge system control structure and inits the history mutex. More...
 
void trx_purge_sys_close (void)
 Frees the global purge system control structure. More...
 
void trx_purge_add_update_undo_to_history (trx_t *trx, trx_undo_ptr_t *undo_ptr, page_t *undo_page, bool update_rseg_history_len, ulint n_added_logs, mtr_t *mtr)
 in: mtr More...
 
ulint trx_purge (ulint n_purge_threads, ulint limit, bool truncate)
 This function runs a purge batch. More...
 
void trx_purge_stop (void)
 Stop purge and wait for it to stop, move to PURGE_STATE_STOP. More...
 
void trx_purge_run (void)
 Resume purge, move to PURGE_STATE_RUN. More...
 
purge_state_t trx_purge_state (void)
 Get the purge state. More...
 
bool undo::is_reserved (space_id_t space_id)
 Check if the space_id is an undo space ID in the reserved range. More...
 
space_id_t undo::num2id (space_id_t space_num, size_t ndx)
 Convert an undo space number (from 1 to 127) into the undo space_id, given an index indicating which space_id from the pool assigned to that undo number. More...
 
space_id_t undo::num2id (space_id_t space_num)
 Convert an undo space number (from 1 to 127) into an undo space_id. More...
 
space_id_t undo::id2num (space_id_t space_id)
 Convert an undo space ID into an undo space number. More...
 
space_id_t undo::id2next_id (space_id_t space_id)
 
void undo::init_space_id_bank ()
 Initialize the undo tablespace space_id bank which is a lock free repository for information about the space IDs used for undo tablespaces. More...
 
void undo::use_space_id (space_id_t space_id)
 Note that the undo space number for a space ID is being used. More...
 
space_id_t undo::use_next_space_id (space_id_t space_num)
 Mark that the given undo space number is being used and return the next available space_id for that space number. More...
 
void undo::unuse_space_id (space_id_t space_id)
 Mark an undo number associated with a given space_id as unused and available to be reused. More...
 
space_id_t undo::next_space_id (space_id_t space_id, space_id_t space_num)
 Given a valid undo space_id or SPACE_UNKNOWN, return the next space_id for the given space number. More...
 
space_id_t undo::next_space_id (space_id_t space_id)
 Given a valid undo space_id, return the next space_id for that space number. More...
 
space_id_t undo::get_next_available_space_num ()
 Return the next available undo space ID to be used for a new explicit undo tablespaces. More...
 
char * undo::make_space_name (space_id_t space_id)
 Build a standard undo tablespace name from a space_id. More...
 
char * undo::make_file_name (space_id_t space_id)
 Build a standard undo tablespace file name from a space_id. More...
 
void undo::inject_crash (const char *injection_point_name)
 Inject a crash if a certain SET GLOBAL DEBUG has been set. More...
 
dberr_t undo::start_logging (Tablespace *undo_space)
 Create the truncate log file. More...
 
void undo::done_logging (space_id_t space_num)
 Mark completion of undo truncate action by writing magic number to the log file and then removing it from the disk. More...
 
bool undo::is_active_truncate_log_present (space_id_t space_num)
 Check if TRUNCATE_DDL_LOG file exist. More...
 
void undo::add_space_to_construction_list (space_id_t space_id)
 Add undo tablespace to s_under_construction vector. More...
 
void undo::clear_construction_list ()
 Clear the s_under_construction vector. More...
 
bool undo::is_under_construction (space_id_t space_id)
 Is an undo tablespace under construction at the moment. More...
 
void undo::set_active (space_id_t space_id)
 Set an undo tablespace active. More...
 
bool undo::is_active (space_id_t space_id, bool get_latch=true)
 

Variables

trx_purge_tpurge_sys
 The global data structure coordinating a purge. More...
 
const uint32_t undo::s_magic = 76845412
 Magic Number to indicate truncate action is complete. More...
 
const char *const undo::s_log_prefix = "undo_"
 Truncate Log file Prefix. More...
 
const char *const undo::s_log_ext = "trunc.log"
 Truncate Log file Extension. More...
 
struct space_id_account * undo::space_id_bank
 List of currently used undo space IDs for each undo space number along with a boolean showing whether the undo space number is in use. More...
 
ib_mutex_t undo::ddl_mutex
 Mutex for serializing undo tablespace related DDL. More...
 
Tablespaces * undo::spaces
 A global object that contains a vector of undo::Tablespace structs. More...
 
Space_Ids undo::s_under_construction
 list of undo tablespaces that need header pages and rollback segments written to them at startup. More...
 
constexpr ulint undo::TRUNCATE_FREQUENCY = 128
 

Detailed Description

Purge old versions.

Created 3/26/1996 Heikki Tuuri

Enumeration Type Documentation

◆ purge_state_t

Purge states.

Enumerator
PURGE_STATE_INIT 

Purge instance created.

PURGE_STATE_RUN 

Purge should be running.

PURGE_STATE_STOP 

Purge should be stopped.

PURGE_STATE_EXIT 

Purge has been shutdown.

PURGE_STATE_DISABLED 

Purge was never started.

Function Documentation

◆ trx_purge()

ulint trx_purge ( ulint  n_purge_threads,
ulint  batch_size,
bool  truncate 
)

This function runs a purge batch.

Returns
number of undo log pages handled in the batch in: truncate history if true
number of undo log pages handled in the batch
Parameters
n_purge_threadsin: number of purge tasks to submit to the work queue
batch_sizein: the maximum number of records to purge in one batch
truncatein: truncate history if true

◆ trx_purge_add_update_undo_to_history()

void trx_purge_add_update_undo_to_history ( trx_t trx,
trx_undo_ptr_t undo_ptr,
page_t undo_page,
bool  update_rseg_history_len,
ulint  n_added_logs,
mtr_t mtr 
)

in: mtr

in: mtr

Removes the update undo log segment from the rseg slot if it is too big for reuse.

Parameters
trxin: transaction
undo_ptrin/out: update undo log.
undo_pagein: update undo log header page, x-latched
update_rseg_history_lenin: if true: update rseg history len else skip updating it.
n_added_logsin: number of logs added
mtrin: mtr

◆ trx_purge_get_log_from_hist()

static fil_addr_t trx_purge_get_log_from_hist ( fil_addr_t  node_addr)
inlinestatic

Calculates the file address of an undo log header when we have the file address of its history list node.

Returns
file address of the log in: file address of the history list node of the log

◆ trx_purge_run()

void trx_purge_run ( void  )

Resume purge, move to PURGE_STATE_RUN.

◆ trx_purge_state()

purge_state_t trx_purge_state ( void  )

Get the purge state.

Returns
purge state.

◆ trx_purge_stop()

void trx_purge_stop ( void  )

Stop purge and wait for it to stop, move to PURGE_STATE_STOP.

◆ trx_purge_sys_close()

void trx_purge_sys_close ( void  )

Frees the global purge system control structure.

◆ trx_purge_sys_initialize()

void trx_purge_sys_initialize ( uint32_t  n_purge_threads,
purge_pq_t purge_queue 
)

Creates the global purge system control structure and inits the history mutex.

Parameters
[in]n_purge_threadsnumber of purge threads
[in,out]purge_queueUNDO log min binary heap

◆ trx_purge_sys_mem_create()

void trx_purge_sys_mem_create ( )

Initialize in-memory purge structures.

Variable Documentation

◆ purge_sys

trx_purge_t* purge_sys
extern

The global data structure coordinating a purge.