![]()  | 
  
    MySQL 8.0.44
    
   Source Code Documentation 
   | 
 
Classes | |
| struct | Allocation_scheme | 
| class | Allocator | 
| Custom memory allocator.  More... | |
| class | AllocatorState | 
| Shared state between all instances of a given allocator.  More... | |
| class | Block | 
| Memory-block abstraction whose purpose is to serve as a building block for custom memory-allocator implementations.  More... | |
| class | Cell | 
| A cell is the intersection of a row and a column.  More... | |
| class | Cell_calculator | 
| Utility to perform calculations for a cell.  More... | |
| class | Chunk | 
| Chunk is an abstraction with the purpose of representing a smallest logical memory-unit within the Block.  More... | |
| class | Column | 
| A column class that describes the metadata of a column.  More... | |
| class | Cursor | 
A cursor for iterating over an Index.  More... | |
| struct | Exponential_policy | 
| class | Handler | 
| Temptable engine handler.  More... | |
| class | Hash_duplicates | 
| class | Hash_unique | 
| class | Header | 
| Header is an abstraction with the purpose of holding and maintaining the Block metadata.  More... | |
| class | Index | 
| Index interface.  More... | |
| class | Indexed_cells | 
| Indexed cells represent one or more cells that are covered by an index.  More... | |
| class | Indexed_cells_equal_to | 
| Indexed cells comparator (a == b).  More... | |
| class | Indexed_cells_hash | 
| Indexed cells hasher.  More... | |
| class | Indexed_cells_less | 
| Indexed cells comparator (a < b).  More... | |
| class | Indexed_column | 
| class | Key_value_store | 
| Key-value store, a convenience wrapper class which models a thread-safe dictionary type.  More... | |
| class | Key_value_store_logger | 
| Default Key_value_store logging facility which turns to no-op in non-debug builds.  More... | |
| class | Key_value_store_logger< T, true > | 
| Key_value_store logging facility debug builds only.  More... | |
| struct | Key_value_store_stats | 
| This is a small convenience POD-like type which describes what kind of details we are interested in when monitoring the behavior of Key_value_store.  More... | |
| struct | Largest_lock_free_type_selector | 
| Largest lock-free type selector, a helper utility very much similar to Lock_free_type_selector with the difference being that it tries hard not to fail.  More... | |
| struct | Largest_lock_free_type_selector< T, typename std::enable_if< std::is_integral< T >::value >::type > | 
| Template-specialization for integral types.  More... | |
| struct | Largest_lock_free_type_selector< T, typename std::enable_if< std::is_pointer< T >::value >::type > | 
| Template-specialization for pointer types.  More... | |
| class | Lock_free_pool | 
| Lock-free pool which consists of POOL_SIZE Lock_free_type elements.  More... | |
| class | Lock_free_shared_block_pool | 
| Lock-free pool of POOL_SIZE Block elements.  More... | |
| struct | Lock_free_type | 
| Representation of an atomic type which is guaranteed to be always-lock-free.  More... | |
| struct | Lock_free_type< T, Alignment::L1_DCACHE_SIZE, TypeSelector > | 
| struct | Lock_free_type_selector | 
| Lock-free type selector, a helper utility which evaluates during the compile-time whether the given type T has a property of being always-lock-free for given platform.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_class< T >::value and std::is_trivially_copyable< T >::value >::type > | 
| Template-specialization for trivially-copyable classes/structs.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_pointer< T >::value >::type > | 
| Template-specialization for pointer types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, bool >::value >::type > | 
| Template-specialization for boolean types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, char >::value or std::is_same< T, unsigned char >::value >::type > | 
| Template-specialization for char types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, int >::value or std::is_same< T, unsigned int >::value >::type > | 
| Template-specialization for int types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, long >::value or std::is_same< T, unsigned long >::value >::type > | 
| Template-specialization for long types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, long long >::value or std::is_same< T, unsigned long long >::value >::type > | 
| Template-specialization for long long types.  More... | |
| struct | Lock_free_type_selector< T, typename std::enable_if< std::is_same< T, short >::value or std::is_same< T, unsigned short >::value >::type > | 
| Template-specialization for short types.  More... | |
| struct | Memory | 
| Primary-template (functor) class for memory-utils.  More... | |
| struct | Memory< Source::MMAP_FILE > | 
| Template specialization for MMAP-based allocation/deallocation.  More... | |
| struct | Memory< Source::RAM > | 
| Template specialization for RAM-based allocation/deallocation.  More... | |
| struct | MemoryMonitor | 
| struct | Prefer_RAM_over_MMAP_policy | 
| struct | Prefer_RAM_over_MMAP_policy_obeying_per_table_limit | 
| class | Row | 
| A row representation.  More... | |
| class | Sharded_key_value_store | 
| Sharded key-value store, a convenience wrapper class around Key_value_store that creates N_SHARDS instances of Key_value_store and exposes a simple interface to further manipulate with them.  More... | |
| struct | Sharded_key_value_store_logger | 
| Default Sharded_key_value_store logging facility which turns to no-op in non-debug builds.  More... | |
| struct | Sharded_key_value_store_logger< T, true > | 
| Sharded_key_value_store logging facility debug builds only.  More... | |
| class | Storage | 
| Storage container.  More... | |
| class | Table | 
| class | TableResourceMonitor | 
| class | Tree | 
Typedefs | |
| using | Exponential_growth_preferring_RAM_over_MMAP = Allocation_scheme< Exponential_policy, Prefer_RAM_over_MMAP_policy_obeying_per_table_limit > | 
| typedef std::vector< Column, Allocator< Column > > | Columns | 
| A type that designates all the columns of a table.  More... | |
| typedef std::multiset< Indexed_cells, Indexed_cells_less, Allocator< Indexed_cells > > | Tree_container | 
| The container used by tree unique and non-unique indexes.  More... | |
| typedef std::unordered_multiset< Indexed_cells, Indexed_cells_hash, Indexed_cells_equal_to, Allocator< Indexed_cells > > | Hash_duplicates_container | 
| The container used by hash non-unique indexes.  More... | |
| typedef std::unordered_set< Indexed_cells, Indexed_cells_hash, Indexed_cells_equal_to, Allocator< Indexed_cells > > | Hash_unique_container | 
| The container used by hash unique indexes.  More... | |
Enumerations | |
| enum class | Alignment { NATURAL , L1_DCACHE_SIZE } | 
| Enum class describing alignment-requirements.  More... | |
| enum class | Source { MMAP_FILE , RAM } | 
| Type of memory allocated.  More... | |
| enum class | Result {  END_OF_FILE = HA_ERR_END_OF_FILE , FOUND_DUPP_KEY = HA_ERR_FOUND_DUPP_KEY , KEY_NOT_FOUND = HA_ERR_KEY_NOT_FOUND , NO_SUCH_TABLE = HA_ERR_NO_SUCH_TABLE , OK = 0 , OUT_OF_MEM = HA_ERR_OUT_OF_MEM , RECORD_FILE_FULL = HA_ERR_RECORD_FILE_FULL , TABLE_CORRUPT = HA_ERR_TABLE_CORRUPT , TABLE_EXIST = HA_ERR_TABLE_EXIST , TOO_BIG_ROW = HA_ERR_TOO_BIG_ROW , UNSUPPORTED = HA_ERR_UNSUPPORTED , WRONG_COMMAND = HA_ERR_WRONG_COMMAND , WRONG_INDEX = HA_ERR_WRONG_INDEX }  | 
Functions | |
| void | Block_PSI_init () | 
| Initialize the PSI memory engine.  More... | |
| void | Block_PSI_track_logical_allocation (size_t size) | 
| Log logical (Chunk) memory allocation.  More... | |
| void | Block_PSI_track_logical_deallocation (size_t size) | 
| Log logical (Chunk) memory deallocation.  More... | |
| void | Block_PSI_track_physical_ram_allocation (void *ptr, size_t size) | 
| Log physical memory allocation of a Block located in RAM.  More... | |
| void | Block_PSI_track_physical_ram_deallocation (uint8_t *ptr) | 
| Log physical memory deallocation of a Block located in RAM.  More... | |
| void | Block_PSI_track_physical_disk_allocation (void *ptr, size_t size) | 
| Log physical memory allocation of a Block located in MMAP-ed file.  More... | |
| void | Block_PSI_track_physical_disk_deallocation (uint8_t *ptr) | 
| Log physical memory deallocation of a Block located in MMAP-ed file.  More... | |
| static uint8_t * | allocate_from (Source src, size_t size) | 
| static void | deallocate_from (Source src, size_t size, uint8_t *block_address) | 
| constexpr unsigned long long | operator""_KiB (unsigned long long n) | 
| Multiply a number by 1024.  More... | |
| constexpr unsigned long long | operator""_MiB (unsigned long long n) | 
| Multiply a number by 1024 * 1024.  More... | |
| constexpr unsigned long long | operator""_GiB (unsigned long long n) | 
| Multiply a number by 1024 * 1024 * 1024.  More... | |
| void | kv_store_shards_debug_dump () | 
| Small helper function which debug-prints the miscellaneous statistics which key-value store has collected.  More... | |
| void | shared_block_pool_release (THD *thd) | 
| Small helper function which releases the slot (and memory occupied by the Block) in shared-block pool.  More... | |
| bool | buf_is_inside_another (const unsigned char *small, size_t small_length, const unsigned char *big, size_t big_length) | 
| Check if a given buffer is inside another buffer.  More... | |
| const char * | result_to_string (Result r) | 
Variables | |
| constexpr size_t | ALLOCATOR_MAX_BLOCK_MB_EXP = 9 | 
| log2(allocator max block size in MiB).  More... | |
| constexpr size_t | ALLOCATOR_MAX_BLOCK_BYTES | 
Limit on the size of a block created by Allocator (in bytes).  More... | |
| constexpr size_t | STORAGE_PAGE_SIZE = 64_KiB | 
Storage page size.  More... | |
| constexpr size_t | INDEX_DEFAULT_HASH_TABLE_BUCKETS = 1024 | 
| Number of buckets to have by default in a hash index.  More... | |
| constexpr bool | DEBUG_BUILD = true | 
| Store build-type information into the constexpr expression.  More... | |
| constexpr size_t | L1_DCACHE_SIZE = CPU_LEVEL1_DCACHE_LINESIZE | 
| Store L1-dcache size information into the constexpr expression.  More... | |
| constexpr size_t | KV_STORE_SHARDS_COUNT = 16 * 1024 | 
| Number of shards in key-value store.  More... | |
| constexpr size_t | SHARED_BLOCK_POOL_SIZE = 16 * 1024 | 
| Size of a pool containing shared-blocks.  More... | |
| PSI_memory_key | mem_key_physical_disk | 
| PFS key to account physical allocations and deallocations from disk.  More... | |
| PSI_memory_key | mem_key_physical_ram | 
| PFS key to account physical allocations and deallocations from RAM.  More... | |
| PSI_memory_info | pfs_info [] | 
| Array of PFS keys.  More... | |
| const size_t | pfs_info_num_elements = sizeof(pfs_info) / sizeof(pfs_info[0]) | 
Number of elements inside pfs_info[].  More... | |
| static Sharded_key_value_store< KV_STORE_SHARDS_COUNT > | kv_store_shard | 
| Key-value store containing all tables for all existing connections.  More... | |
| static Lock_free_shared_block_pool< SHARED_BLOCK_POOL_SIZE > | shared_block_pool | 
| typedef std::vector<Column, Allocator<Column> > temptable::Columns | 
A type that designates all the columns of a table.
| using temptable::Exponential_growth_preferring_RAM_over_MMAP = typedef Allocation_scheme<Exponential_policy, Prefer_RAM_over_MMAP_policy_obeying_per_table_limit> | 
| typedef std::unordered_multiset<Indexed_cells, Indexed_cells_hash, Indexed_cells_equal_to, Allocator<Indexed_cells> > temptable::Hash_duplicates_container | 
The container used by hash non-unique indexes.
| typedef std::unordered_set<Indexed_cells, Indexed_cells_hash, Indexed_cells_equal_to, Allocator<Indexed_cells> > temptable::Hash_unique_container | 
The container used by hash unique indexes.
| typedef std::multiset<Indexed_cells, Indexed_cells_less, Allocator<Indexed_cells> > temptable::Tree_container | 
The container used by tree unique and non-unique indexes.
      
  | 
  strong | 
      
  | 
  strong | 
      
  | 
  strong | 
      
  | 
  inlinestatic | 
| void temptable::Block_PSI_init | ( | ) | 
Initialize the PSI memory engine.
| void temptable::Block_PSI_track_logical_allocation | ( | size_t | size | ) | 
Log logical (Chunk) memory allocation.
[in] Number of bytes allocated
| void temptable::Block_PSI_track_logical_deallocation | ( | size_t | size | ) | 
Log logical (Chunk) memory deallocation.
[in] Number of bytes deallocated
| void temptable::Block_PSI_track_physical_disk_allocation | ( | void * | ptr, | 
| size_t | size | ||
| ) | 
Log physical memory allocation of a Block located in MMAP-ed file.
[in] Pointer to user memory block [in] Number of bytes allocated
| void temptable::Block_PSI_track_physical_disk_deallocation | ( | uint8_t * | ptr | ) | 
Log physical memory deallocation of a Block located in MMAP-ed file.
[in] Pointer to PSI header
| void temptable::Block_PSI_track_physical_ram_allocation | ( | void * | ptr, | 
| size_t | size | ||
| ) | 
Log physical memory allocation of a Block located in RAM.
[in] Pointer to user memory block [in] Number of bytes allocated
| void temptable::Block_PSI_track_physical_ram_deallocation | ( | uint8_t * | ptr | ) | 
Log physical memory deallocation of a Block located in RAM.
[in] Pointer to PSI header
      
  | 
  inline | 
Check if a given buffer is inside another buffer.
| [in] | small | First buffer, that should be inside the other. | 
| [in] | small_length | First buffer length in bytes. | 
| [in] | big | Second buffer, that should contain the other. | 
| [in] | big_length | Second buffer length in bytes. | 
      
  | 
  inlinestatic | 
| void temptable::kv_store_shards_debug_dump | ( | ) | 
Small helper function which debug-prints the miscellaneous statistics which key-value store has collected.
      
  | 
  constexpr | 
Multiply a number by 1024 * 1024 * 1024.
| [in] | n | Number to multiply. | 
      
  | 
  constexpr | 
Multiply a number by 1024.
| [in] | n | Number to multiply. | 
      
  | 
  constexpr | 
Multiply a number by 1024 * 1024.
| [in] | n | Number to multiply. | 
| const char * temptable::result_to_string | ( | Result | r | ) | 
| void temptable::shared_block_pool_release | ( | THD * | thd | ) | 
Small helper function which releases the slot (and memory occupied by the Block) in shared-block pool.
      
  | 
  constexpr | 
Limit on the size of a block created by Allocator (in bytes). 
A larger block could still be created if a single allocation request with bigger size is received.
      
  | 
  constexpr | 
log2(allocator max block size in MiB).
Ie. 2 ^ ALLOCATOR_MAX_BLOCK_MB_EXP * 1024^2 = ALLOCATOR_MAX_BLOCK_BYTES.
      
  | 
  constexpr | 
Store build-type information into the constexpr expression.
      
  | 
  constexpr | 
Number of buckets to have by default in a hash index.
      
  | 
  static | 
Key-value store containing all tables for all existing connections.
See Sharded_key_value_store documentation for more details. 
      
  | 
  constexpr | 
Number of shards in key-value store.
      
  | 
  constexpr | 
Store L1-dcache size information into the constexpr expression.
| PSI_memory_key temptable::mem_key_physical_disk | 
PFS key to account physical allocations and deallocations from disk.
After we have allocated more than temptable_max_ram we start taking memory from the OS disk, using mmap()'ed files. 
| PSI_memory_key temptable::mem_key_physical_ram | 
PFS key to account physical allocations and deallocations from RAM.
Before we have allocated more than temptable_max_ram we take memory from the OS RAM, using e.g. malloc(). 
| PSI_memory_info temptable::pfs_info[] | 
Array of PFS keys.
Number of elements inside pfs_info[]. 
      
  | 
  static | 
      
  | 
  constexpr | 
Size of a pool containing shared-blocks.
      
  | 
  constexpr | 
Storage page size.