94                                void *page_zip_, 
lsn_t newest_lsn,
 
   95                                bool skip_checksum, 
bool skip_lsn_check);
 
   98#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG 
  202#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG 
  274  std::ostream &
print(std::ostream &out) 
const;
 
  309  using Counters = std::vector<Counter, ut::allocator<Counter>>;
 
  312  [[nodiscard]] 
bool validate() const noexcept;
 
  373  void assume_added_up_to(
lsn_t start_lsn);
 
  390  void report_added(
lsn_t oldest_modification, 
lsn_t newest_modification);
 
  399  uint64_t order_lag();
 
  405  lsn_t smallest_not_added_lsn();
 
  414  void wait_to_add(
lsn_t oldest_modification);
 
  424  template <
typename T, 
typename... Args>
 
  426                                    std::size_t alignment, Args &&...args);
 
uint32_t space_id_t
Tablespace identifier.
Definition: api0api.h:48
 
Buf_flush_list_added_lsns_aligned_ptr buf_flush_list_added
Tracks adding dirty pages to the flush list.
Definition: buf0buf.cc:332
 
void buf_flush_fsync()
Executes fsync for all tablespaces, to fsync all pages written to disk.
Definition: buf0flu.cc:3321
 
std::unique_ptr< Buf_flush_list_added_lsns, ut::detail::Aligned_deleter< Buf_flush_list_added_lsns > > Buf_flush_list_added_lsns_aligned_ptr
Definition: buf0flu.h:349
 
ulint buf_pool_get_dirty_pages_count(buf_pool_t *buf_pool, space_id_t id, Flush_observer *observer)
Check if there are any dirty pages that belong to a space id in the flush list in a particular buffer...
Definition: buf0flu.cc:3430
 
void buf_flush_write_complete(buf_page_t *bpage)
Updates the flush system data structures when a write is completed.
Definition: buf0flu.cc:668
 
bool buf_flush_do_batch(buf_pool_t *buf_pool, buf_flush_t type, ulint min_n, lsn_t lsn_limit, ulint *n_processed)
Do flushing batch of a given type.
Definition: buf0flu.cc:1787
 
void buf_flush_sync_all_buf_pools()
Synchronously flush dirty blocks from the end of the flush list of all buffer pool instances.
Definition: buf0flu.cc:3349
 
bool buf_flush_single_page_from_LRU(buf_pool_t *buf_pool)
This function picks up a single page from the tail of the LRU list, flushes it (if it is dirty),...
Definition: buf0flu.cc:1872
 
bool buf_flush_validate(buf_pool_t *buf_pool)
Validates the flush list.
Definition: buf0flu.cc:3416
 
bool buf_flush_lists(ulint min_n, lsn_t lsn_limit, ulint *n_processed)
This utility flushes dirty blocks from the end of the flush list of all buffer pool instances.
Definition: buf0flu.cc:1810
 
void buf_flush_page_cleaner_disabled_debug_update(THD *thd, SYS_VAR *var, void *var_ptr, const void *save)
Disables page cleaner threads (coordinator and workers).
Definition: buf0flu.cc:2813
 
bool buf_flush_page(buf_pool_t *buf_pool, buf_page_t *bpage, buf_flush_t flush_type, bool sync)
Writes a flushable page asynchronously from the buffer pool to a file.
Definition: buf0flu.cc:1027
 
void buf_flush_remove(buf_page_t *bpage)
Remove a block from the flush list of modified blocks.
Definition: buf0flu.cc:556
 
os_event_t buf_flush_tick_event
Event to wait for one flushing step.
Definition: buf0flu.cc:103
 
bool buf_flush_page_try(buf_pool_t *buf_pool, buf_block_t *block)
Writes a flushable page asynchronously from the buffer pool to a file.
Definition: buf0flu.cc:1153
 
os_event_t buf_flush_event
Event to synchronise with the flushing.
Definition: buf0flu.cc:100
 
void buf_flush_await_no_flushing(buf_pool_t *buf_pool, buf_flush_t flush_type)
Waits until there's no flush of the given type from given BP instance.
Definition: buf0flu.cc:1775
 
static void buf_flush_note_modification(buf_block_t *block, lsn_t start_lsn, lsn_t end_lsn, Flush_observer *observer)
This function should be called at a mini-transaction commit, if a page was modified in it.
 
void buf_flush_relocate_on_flush_list(buf_page_t *bpage, buf_page_t *dpage)
Relocates a buffer control block on the flush_list.
Definition: buf0flu.cc:625
 
void buf_flush_page_cleaner_init()
Initialize page_cleaner.
Definition: buf0flu.cc:2523
 
lsn_t get_flush_sync_lsn() noexcept
Get the lsn up to which data pages are to be synchronously flushed.
Definition: buf0flu.cc:91
 
bool buf_are_flush_lists_empty_validate()
Checks if all flush lists are empty.
Definition: buf0flu.cc:277
 
bool buf_flush_ready_for_replace(const buf_page_t *bpage)
Returns true if the file page block is immediately suitable for replacement, i.e.,...
Definition: buf0flu.cc:457
 
bool innodb_page_cleaner_disabled_debug
Value of MySQL global variable used to disable page cleaner.
Definition: buf0flu.cc:201
 
bool buf_flush_ready_for_flush(buf_page_t *bpage, buf_flush_t flush_type)
Check if the block is modified and ready for flushing.
Definition: buf0flu.cc:550
 
void buf_flush_init_for_writing(const buf_block_t *block, byte *page, void *page_zip_, lsn_t newest_lsn, bool skip_checksum, bool skip_lsn_check)
Initialize a page for writing to the tablespace.
Definition: buf0flu.cc:739
 
bool buf_flush_page_cleaner_is_active()
Checks if the page_cleaner is in active state.
Definition: buf0flu.cc:2519
 
bool page_is_uncompressed_type(const byte *page)
Check if page type is uncompressed.
Definition: buf0flu.cc:715
 
The database buffer pool flush algorithm.
 
The database buffer pool global types for the directory.
 
buf_flush_t
Flags for flush types.
Definition: buf0types.h:68
 
Class used to report ALTER TABLE progress via performance_schema.
Definition: ut0stage.h:81
 
Tracks the concurrent executions of adding dirty pages to the flush lists.
Definition: buf0flu.h:355
 
We use Flush_observer to track flushing of non-redo logged pages in bulk create index(btr0load....
Definition: buf0flu.h:258
 
trx_t * m_trx
Trx instance.
Definition: buf0flu.h:319
 
Counters m_flushed
Flush request sent, per buffer pool.
Definition: buf0flu.h:329
 
space_id_t m_space_id
Tablespace ID.
Definition: buf0flu.h:316
 
Flush_observer(space_id_t space_id, trx_t *trx, Alter_stage *stage) noexcept
Constructor.
Definition: buf0flu.cc:3477
 
void flush()
Flush dirty pages.
Definition: buf0flu.cc:3533
 
Counters m_removed
Flush request finished, per buffer pool.
Definition: buf0flu.h:332
 
bool validate() const noexcept
Definition: buf0flu.cc:3569
 
void interrupted()
Interrupt observer not to wait.
Definition: buf0flu.h:288
 
std::ostream & print(std::ostream &out) const
Print information about the current object.
Definition: buf0flu.cc:3578
 
bool check_interrupted()
Check whether trx is interrupted.
Definition: buf0flu.cc:3507
 
~Flush_observer() noexcept
Destructor.
Definition: buf0flu.cc:3496
 
void notify_remove(buf_pool_t *buf_pool, buf_page_t *bpage)
Notify observer of removing a page from flush list.
Definition: buf0flu.cc:3527
 
bool m_interrupted
True if the operation was interrupted.
Definition: buf0flu.h:338
 
void notify_flush(buf_pool_t *buf_pool, buf_page_t *bpage)
Notify observer of flushing a page.
Definition: buf0flu.cc:3517
 
std::vector< Counter, ut::allocator< Counter > > Counters
Definition: buf0flu.h:309
 
Counter m_n_ref_count
Number of pages using this instance.
Definition: buf0flu.h:335
 
Alter_stage * m_stage
Performance schema accounting object, used by ALTER TABLE.
Definition: buf0flu.h:326
 
bool is_complete(size_t instance_no)
Check pages have been flushed and removed from the flush list in a buffer pool instance.
Definition: buf0flu.h:280
 
Concurrent data structure, which allows to track concurrently performed operations which locally migh...
Definition: ut0link_buf.h:78
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
 
Definition: buf0buf.h:1164
 
int page
Definition: ctype-mb.cc:1226
 
flush_type
Definition: my_sys.h:297
 
#define T
Definition: jit_executor_value.cc:373
 
uint64_t lsn_t
Type used for all log sequence number storage and arithmetic.
Definition: log0types.h:63
 
Sharded atomic counter.
Definition: ut0counter.h:221
 
bool load(THD *, const dd::String_type &fname, dd::String_type *buf)
Read an sdi file from disk and store in a buffer.
Definition: sdi_file.cc:308
 
Definition: fts0fts.cc:237
 
static mysql_service_status_t create(my_h_string *) noexcept
Definition: mysql_string_all_empty.cc:43
 
const char * begin(const char *const c)
Definition: base64.h:44
 
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
 
Definition: gcs_xcom_synode.h:64
 
This file contains a set of libraries providing overloads for regular dynamic allocation routines whi...
Definition: aligned_alloc.h:48
 
constexpr size_t INNODB_CACHE_LINE_SIZE
CPU cache line size.
Definition: ut0cpu_cache.h:41
 
T * aligned_new_withkey(PSI_memory_key_t key, std::size_t alignment, Args &&...args)
Dynamically allocates storage for an object of type T at address aligned to the requested alignment.
Definition: ut0new.h:1596
 
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr
The following is a common type that is returned by all the ut::make_unique (non-aligned) specializati...
Definition: ut0new.h:2444
 
required string key
Definition: replication_asynchronous_connection_failover.proto:60
 
required string type
Definition: replication_group_member_actions.proto:34
 
Definition: system_variables_bits.h:153
 
The buffer control block structure.
Definition: buf0buf.h:1764
 
The buffer pool structure.
Definition: buf0buf.h:2293
 
InnoDB condition variable.
Definition: os0event.cc:63
 
Definition: trx0trx.h:675
 
Light-weight and type-safe wrapper around the PSI_memory_key that eliminates the possibility of intro...
Definition: ut0new.h:178
 
Version control for database, common definitions, and include files.
 
unsigned long int ulint
Definition: univ.i:406
 
Utilities for byte operations.
 
Utilities related to CPU cache.
 
#define ut_ad(EXPR)
Debug assertion.
Definition: ut0dbg.h:105
 
Link buffer - concurrent data structure which allows: