![]() |
MySQL 26.7.0
Source Code Documentation
|
Public Member Functions | |
| Fil_shard (size_t shard_id) | |
| Constructor. More... | |
| ~Fil_shard () | |
| Destructor. More... | |
| size_t | id () const |
| void | acquire (int line) const |
| Acquire the mutex. More... | |
| void | mutex_release () const |
| Release the mutex. More... | |
| bool | mutex_owned () const |
| bool | space_acquire (fil_space_t *space) |
| Acquire a tablespace to prevent it from being dropped concurrently. More... | |
| void | space_release (fil_space_t *space) |
| Release a tablespace acquired with Fil_shard::space_acquire(). More... | |
| fil_space_t * | get_space_by_id_from_map (space_id_t space_id) const |
| Fetch the fil_space_t instance that maps to space_id. More... | |
| fil_space_t * | get_space_by_id (space_id_t space_id) const |
| Fetch the fil_space_t instance that maps to space_id. More... | |
| fil_space_t * | get_space_by_name (const char *name) const |
| Fetch the fil_space_t instance that maps to the name. More... | |
| bool | close_files_in_LRU () |
| Tries to close a file in the shard LRU list. More... | |
| void | remove_from_LRU (fil_node_t *file) |
| Remove the file node from the LRU list. More... | |
| void | add_to_lru_if_needed (fil_node_t *file) |
| Add the file node to the LRU list if required. More... | |
| void | close_file (fil_node_t *file) |
| Close a tablespace file. More... | |
| bool | close_file (space_id_t space_id) |
| Close a tablespace file based on tablespace ID. More... | |
| void | file_close_to_free (fil_node_t *file, fil_space_t *space) |
| Prepare to free a file object from a tablespace memory cache. More... | |
| void | close_all_files () |
| Close all open files. More... | |
| void | validate_space_reference_count (Space_References &buffer_pool_references) |
| Check that each fil_space_t::m_n_ref_count in this shard matches the number of pages counted in the buffer pool. More... | |
| bool | needs_encryption_rotate (fil_space_t *space) |
| Determine if the tablespace needs encryption rotation. More... | |
| size_t | encryption_rotate (size_t *rotate_count) |
| Rotate the tablespace keys by new master key. More... | |
| void | space_detach (fil_space_t *space) |
| Detach a space object from the tablespace memory cache and closes the tablespace files but does not delete them. More... | |
| void | space_remove_from_lookup_maps (space_id_t space_id) |
| Remove the fil_space_t instance from the maps used to search for it. More... | |
| void | space_prepare_for_delete (fil_space_t *space) noexcept |
| Move the space to the deleted list and remove from the default lookup set. More... | |
| void | purge () |
| Purge entries from m_deleted_spaces that are no longer referenced by a buffer pool page. More... | |
| size_t | count_undo_deleted (space_id_t undo_num) noexcept |
| Count how many truncated undo space IDs are still tracked in the buffer pool and the file_system cache. More... | |
| bool | is_deleted (space_id_t space_id) |
| Check if a particular space_id for a page in the buffer pool has been deleted recently. More... | |
| fil_space_t * | space_free (space_id_t space_id) |
| Frees a space object from the tablespace memory cache. More... | |
| fil_space_t * | space_add (ut::unique_ptr< fil_space_t > space) |
| Map the space ID and name to the tablespace instance. More... | |
| void | prepare_to_free_file (fil_node_t *file) |
| Prepare to free a file. More... | |
| void | remove_from_unflushed_list (fil_space_t *space) |
| If the tablespace is on the unflushed list and there are no pending flushes then remove from the unflushed list. More... | |
| void | complete_io (fil_node_t *file, bool is_write_io) |
| Updates the data structures when an I/O operation finishes. More... | |
| dberr_t | prepare_file_for_io (fil_node_t *file, bool validate_first_page) |
| Prepares a file for I/O. More... | |
| void | update_space_name_map (fil_space_t *space, const char *new_name) |
| Remap the tablespace to the new name. More... | |
| void | flush_file_spaces () |
| Flush to disk the writes in file spaces possibly cached by the OS (note: spaces of type FIL_TYPE_TEMPORARY are skipped) More... | |
| bool | space_extend (fil_space_t *space, page_no_t new_min_size_in_pages) |
| Try to extend a tablespace if it is smaller than the specified size. More... | |
| void | space_flush (space_id_t space_id) |
| Flushes to disk possible writes cached by the OS. More... | |
| dberr_t | open_file (fil_node_t *file) |
| Open a file of a tablespace. More... | |
| bool | space_is_flushed (const fil_space_t *space) |
| Checks if all the file nodes in a space are flushed. More... | |
| ut::Expected< fil_space_t * > | space_open (space_id_t space_id) |
| Looks up the tablespace, acquires the space, opens each node of a tablespace if not already open, validates the first page if it was not validated yet and fills the FSP-related cache if it was not filled yet. More... | |
| dberr_t | wait_for_pending_operations (space_id_t space_id, fil_space_t *&space, char **path) const |
| Wait for pending operations on a tablespace to stop. More... | |
| dberr_t | space_rename (space_id_t space_id, const char *old_path, const char *new_name, const char *new_path_in) |
| Rename a single-table tablespace. More... | |
| dberr_t | space_delete (space_id_t space_id) |
| Deletes an IBD or IBU tablespace. More... | |
| bool | space_truncate (space_id_t space_id, page_no_t size_in_pages) |
| Basically recreates the tablespace`s only node and set it to the needed size in place. More... | |
| bool | adjust_space_name (fil_space_t *space, const char *dd_space_name) |
| Adjust temporary auto-generated names created during file discovery with correct tablespace names from the DD. More... | |
| bool | space_check_exists (space_id_t space_id, const char *name, bool print_err, bool adjust_space) |
| Returns true if a matching tablespace exists in the InnoDB tablespace memory cache. More... | |
| dberr_t | do_io (const IORequest::Type type, bool sync, const page_id_t &page_id, const page_size_t &page_size, ulint len, byte *buf, buf_page_t *bpage, std::function< dberr_t(dberr_t)> postprocess_result) |
| Read or write data for a single page from a file. More... | |
| dberr_t | iterate (Fil_iterator::Function &f) |
| Iterate through all persistent tablespace files (FIL_TYPE_TABLESPACE) returning the nodes via callback function f. More... | |
| fil_load_status | ibd_open_for_recovery (space_id_t space_id, const std::string &path, fil_space_t *&space) |
| Open an ibd tablespace and add it to the InnoDB data structures. More... | |
| dberr_t | create_node (const char *name, fil_space_t *space, bool is_raw, page_no_t max_pages) |
| Attach a node to a tablespace. More... | |
| void | validate () const |
| Validate a shard. More... | |
Static Public Member Functions | |
| static ut::unique_ptr< fil_space_t > | space_create (const char *name, space_id_t space_id, uint32_t flags, fil_type_t purpose) |
| Create a space memory object. More... | |
Private Types | |
| using | File_list = UT_LIST_BASE_NODE_T(fil_node_t, LRU) |
| using | Space_list = UT_LIST_BASE_NODE_T(fil_space_t, unflushed_spaces) |
| using | Spaces = std::unordered_map< space_id_t, fil_space_t * > |
| using | Names = std::unordered_map< const char *, fil_space_t *, Char_Ptr_Hash, Char_Ptr_Compare > |
| using | Pair = std::pair< space_id_t, fil_space_t * > |
| using | Deleted_spaces = std::vector< Pair, ut::allocator< Pair > > |
Private Member Functions | |
| dberr_t | space_prepare_for_truncate (space_id_t space_id, fil_space_t *&space) |
| Prepare for truncating a single-table tablespace. More... | |
| void | write_completed (fil_node_t *file) |
| Note that a write IO has completed. More... | |
| void | add_to_unflushed_list (fil_space_t *space) |
| If the tablespace is not on the unflushed list, add it. More... | |
| ulint | space_check_pending_operations (fil_space_t *space, ulint count) const |
| Check for pending operations. More... | |
| ulint | check_pending_io (const fil_space_t *space, const fil_node_t &file, ulint count) const |
| Check for pending IO. More... | |
| Fil_shard (Fil_shard &&)=delete | |
| Fil_shard (const Fil_shard &)=delete | |
| Fil_shard & | operator= (Fil_shard &&)=delete |
| Fil_shard & | operator= (const Fil_shard &)=delete |
Private Attributes | |
| const size_t | m_id |
| Fil_shard ID. More... | |
| Spaces | m_spaces |
| Tablespace instances hashed on the space id. More... | |
| Names | m_names |
| Tablespace instances hashed on the space name. More... | |
| Deleted_spaces | m_deleted_spaces |
| Deleted tablespaces. More... | |
| File_list | m_LRU |
| Base node for the LRU list of the most recently used open files with no pending I/O's; if we start an I/O on the file, we first remove it from this list, and return it to the start of the list when the I/O ends; the system tablespace file is not put to this list: it is opened after the startup, and kept open until shutdown. More... | |
| Space_list | m_unflushed_spaces |
| Base node for the list of those tablespaces whose files contain unflushed writes; those spaces have at least one file where m_modification_counter > m_flush_counter. More... | |
| ib_mutex_t | m_mutex |
| Mutex protecting this shard. More... | |
Friends | |
| class | Fil_system |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
explicit |
Constructor.
| [in] | shard_id | Shard ID |
|
inline |
Destructor.
|
privatedelete |
|
privatedelete |
|
inline |
Acquire the mutex.
| [in] | line | Line number from where it was called |
| void Fil_shard::add_to_lru_if_needed | ( | fil_node_t * | file | ) |
Add the file node to the LRU list if required.
| [in,out] | file | File for the tablespace |
|
private |
If the tablespace is not on the unflushed list, add it.
| [in,out] | space | Tablespace to add |
| bool Fil_shard::adjust_space_name | ( | fil_space_t * | space, |
| const char * | dd_space_name | ||
| ) |
Adjust temporary auto-generated names created during file discovery with correct tablespace names from the DD.
| [in,out] | space | Tablespace |
| [in] | dd_space_name | Tablespace name from the DD |
|
private |
Check for pending IO.
| [in] | space | Tablespace to check |
| [in] | file | File in space list |
| [in] | count | number of attempts so far |
| void Fil_shard::close_all_files | ( | ) |
Close all open files.
| void Fil_shard::close_file | ( | fil_node_t * | file | ) |
Close a tablespace file.
| [in,out] | file | Tablespace file to close |
| bool Fil_shard::close_file | ( | space_id_t | space_id | ) |
Close a tablespace file based on tablespace ID.
| [in] | space_id | Tablespace ID |
| bool Fil_shard::close_files_in_LRU | ( | ) |
Tries to close a file in the shard LRU list.
The caller must hold the Fil_shard::m_mutex.
| void Fil_shard::complete_io | ( | fil_node_t * | file, |
| bool | is_write_io | ||
| ) |
Updates the data structures when an I/O operation finishes.
Updates the pending I/O's field in the file appropriately.
| [in] | file | Tablespace file |
| [in] | is_write_io | Marks the file as modified if it is write IO. |
|
inlinenoexcept |
Count how many truncated undo space IDs are still tracked in the buffer pool and the file_system cache.
| [in] | undo_num | undo tablespace number. |
| dberr_t Fil_shard::create_node | ( | const char * | name, |
| fil_space_t * | space, | ||
| bool | is_raw, | ||
| page_no_t | max_pages | ||
| ) |
Attach a node to a tablespace.
| [in] | name | File name of a file. The file can't be open. |
| [in,out] | space | Tablespace to attach to, must not be null. |
| [in] | is_raw | whether this is a raw device or partition |
| [in] | max_pages | maximum number of pages in file |
| dberr_t Fil_shard::do_io | ( | const IORequest::Type | type, |
| bool | sync, | ||
| const page_id_t & | page_id, | ||
| const page_size_t & | page_size, | ||
| ulint | len, | ||
| byte * | buf, | ||
| buf_page_t * | bpage, | ||
| std::function< dberr_t(dberr_t)> | postprocess_result | ||
| ) |
Read or write data for a single page from a file.
| [in] | type | IO type |
| [in] | sync | If true then do synchronous IO |
| [in] | page_id | Page id to read or write. |
| [in] | page_size | Structure with information on logical and physical page size in the affected tablespace. |
| [in] | len | Size of the buf supplied. It always has to be a multiply of OS block size (UNIV_SECTOR_SIZE). In case of write of an already compressed data, it is a length of the compressed data buffer. Otherwise it should be page_size.physical(). Actual number of bytes written can be smaller if the tablespace has compression enabled and data was not compressed already. |
| [in,out] | buf | A buffer where to store read data or from where to write. Data from this buffer might be copied and the copy transformed before writing it. It must be aligned in memory to OS block size (UNIV_SECTOR_SIZE). Additionally, for reads, it must be aligned to physical page size, too. The memory pointed is managed by the caller and must remain valid until the call returns if sync is true, or until the postprocess_result callback begins execution. |
| [in] | bpage | Pointer to the page descriptor in the buffer pool. This can be nullptr only if we assure the tablespace can't be deleted in meantime. If this is nullptr, the page with this page_id can't be in the buffer pool, as it risks race condition with a Buffer Pool-induced page flush. |
| [in] | postprocess_result | A callback to be called exactly once when the result of this IO operation is known. It may be a success if the read or write succeeded or a subset of dberr_t errors if the write or read could not be executed or if it failed. It can be called synchronously in this thread before returning from this method, or can be executed asynchronously from another thread, when sync is false, before or after this call returns. |
| DB_SUCCESS | on success |
| DB_TABLESPACE_DELETED | if the tablespace does not exist Note: this is not an exhaustive list of errors returned. |
| size_t Fil_shard::encryption_rotate | ( | size_t * | rotate_count | ) |
Rotate the tablespace keys by new master key.
| [in,out] | rotate_count | A cumulative count of all tablespaces rotated in the Fil_system. |
| void Fil_shard::file_close_to_free | ( | fil_node_t * | file, |
| fil_space_t * | space | ||
| ) |
Prepare to free a file object from a tablespace memory cache.
| [in,out] | file | Tablespace file |
| [in] | space | tablespace |
| void Fil_shard::flush_file_spaces | ( | ) |
Flush to disk the writes in file spaces possibly cached by the OS (note: spaces of type FIL_TYPE_TEMPORARY are skipped)
| fil_space_t * Fil_shard::get_space_by_id | ( | space_id_t | space_id | ) | const |
Fetch the fil_space_t instance that maps to space_id.
| [in] | space_id | Tablespace ID to lookup |
|
inline |
Fetch the fil_space_t instance that maps to space_id.
Does not look through system reserved spaces.
| [in] | space_id | Tablespace ID to lookup |
|
inline |
Fetch the fil_space_t instance that maps to the name.
| [in] | name | Tablespace name to lookup |
| fil_load_status Fil_shard::ibd_open_for_recovery | ( | space_id_t | space_id, |
| const std::string & | path, | ||
| fil_space_t *& | space | ||
| ) |
Open an ibd tablespace and add it to the InnoDB data structures.
This is similar to fil_ibd_open() except that it is used while processing the redo log, so the data dictionary is not available and very little validation is done. The tablespace name is extracted from the dbname/tablename.ibd portion of the filename, which assumes that the file is a file-per-table tablespace. Any name will do for now. General tablespace names will be read from the dictionary after it has been recovered. The tablespace flags are read at this time from the first page of the file in validate_for_recovery().
| [in] | space_id | tablespace ID |
| [in] | path | path/to/databasename/tablename.ibd |
| [out] | space | the tablespace, or nullptr on error |
The tablespace_scanning is not present in MEB, and for MEB it is enough to do the first read for the minimum possible page size, which will be repeated then in Datafile::validate_for_recovery() with a correct page size parsed from the flags.
|
inline |
|
inline |
Check if a particular space_id for a page in the buffer pool has been deleted recently.
Its space_id will be found in m_deleted_spaces until Fil:shard::checkpoint removes the fil_space_t from Fil_system.
| [in] | space_id | Tablespace ID to check. |
| dberr_t Fil_shard::iterate | ( | Fil_iterator::Function & | f | ) |
Iterate through all persistent tablespace files (FIL_TYPE_TABLESPACE) returning the nodes via callback function f.
Iterate through all persistent tablespace files (FIL_TYPE_TABLESPACE) returning the nodes via callback function cbk.
| [in] | f | Callback |
|
inline |
|
inline |
Release the mutex.
| bool Fil_shard::needs_encryption_rotate | ( | fil_space_t * | space | ) |
Determine if the tablespace needs encryption rotation.
| [in] | space | tablespace to rotate |
| dberr_t Fil_shard::open_file | ( | fil_node_t * | file | ) |
Open a file of a tablespace.
The caller must own the shard mutex.
| [in,out] | file | Tablespace file |
| DB_SUCCESS | if file is already opened or was opened. |
| DB_TABLESPACE_DELETED | if the tablespace is already deleted. |
| DB_CANNOT_OPEN_FILE | on file opening error. |
| dberr_t Fil_shard::prepare_file_for_io | ( | fil_node_t * | file, |
| bool | validate_first_page | ||
| ) |
Prepares a file for I/O.
Opens the file if it is closed. Updates the pending I/O's field in the file and the system appropriately. Takes the file off the LRU list if it is in the LRU list. Caller needs to call the complete_io() to pair with a successful prepare_file_for_io() call. In case of error, the complete_io() don't have to, and actually can't be called.
| [in] | file | Tablespace file for IO |
| [in] | validate_first_page | False during early recovery, to not use first page for size and other verification. |
complete_io() eventually. Any other error value means the file might be opened or not, but the complete_io() must not be called to complement this call. | void Fil_shard::prepare_to_free_file | ( | fil_node_t * | file | ) |
Prepare to free a file.
Remove from the unflushed list if there are no pending flushes.
| [in,out] | file | File instance to free |
|
inline |
Purge entries from m_deleted_spaces that are no longer referenced by a buffer pool page.
This is no longer required to be done during checkpoint - this is done here for historical reasons - it has to be done periodically somewhere.
| void Fil_shard::remove_from_LRU | ( | fil_node_t * | file | ) |
Remove the file node from the LRU list.
| [in,out] | file | File for the tablespace |
| void Fil_shard::remove_from_unflushed_list | ( | fil_space_t * | space | ) |
If the tablespace is on the unflushed list and there are no pending flushes then remove from the unflushed list.
| [in,out] | space | Tablespace to remove |
|
inline |
Acquire a tablespace to prevent it from being dropped concurrently.
The thread must call Fil_shard::fil_space_release() when the operation is done.
| [in] | space | tablespace to acquire |
| fil_space_t * Fil_shard::space_add | ( | ut::unique_ptr< fil_space_t > | space | ) |
Map the space ID and name to the tablespace instance.
If a space with the same name or ID is mapped already, it does nothing and return nullptr.
| [in] | space | Tablespace instance |
space iff supplied space was added to the space mappings, that is, there were no conflicts in name or ID in the mappings. | bool Fil_shard::space_check_exists | ( | space_id_t | space_id, |
| const char * | name, | ||
| bool | print_err, | ||
| bool | adjust_space | ||
| ) |
Returns true if a matching tablespace exists in the InnoDB tablespace memory cache.
| [in] | space_id | Tablespace ID |
| [in] | name | Tablespace name used in fil_space_create(). |
| [in] | print_err | Print detailed error information to the error log if a matching tablespace is not found from memory. |
| [in] | adjust_space | Whether to adjust space id on mismatch |
|
private |
Check for pending operations.
| [in] | space | tablespace |
| [in] | count | number of attempts so far |
|
static |
Create a space memory object.
The tablespace name is independent from the tablespace file-name. Error messages are issued to the server log.
| [in] | name | Tablespace name |
| [in] | space_id | Tablespace identifier |
| [in] | flags | Tablespace flags |
| [in] | purpose | Tablespace purpose |
| dberr_t Fil_shard::space_delete | ( | space_id_t | space_id | ) |
Deletes an IBD or IBU tablespace.
The tablespace must be cached in the memory cache. This will delete the datafile, fil_space_t & fil_node_t entries from the file_system_t cache. The pages of this space that are cached in the BufferPool will remain untouched, will be discarded lazily when accessed or encountered in lists like flush list or LRU, as they will be visible as being stale.
| [in] | space_id | Tablespace ID |
| void Fil_shard::space_detach | ( | fil_space_t * | space | ) |
Detach a space object from the tablespace memory cache and closes the tablespace files but does not delete them.
There must not be any pending I/O's or flushes on the files.
| [in,out] | space | tablespace |
| bool Fil_shard::space_extend | ( | fil_space_t * | space, |
| page_no_t | new_min_size_in_pages | ||
| ) |
Try to extend a tablespace if it is smaller than the specified size.
| [in,out] | space | tablespace |
| [in] | new_min_size_in_pages | Desired minimum new size in pages. |
| void Fil_shard::space_flush | ( | space_id_t | space_id | ) |
Flushes to disk possible writes cached by the OS.
If the space does not exist or is being dropped, does not do anything. The caller must own the shard mutex. The mutex might be released and re-acquired before returning.
| [in] | space_id | file space ID (id of tablespace of the database) |
| fil_space_t * Fil_shard::space_free | ( | space_id_t | space_id | ) |
Frees a space object from the tablespace memory cache.
Closes a tablespaces' files but does not delete them. There must not be any pending I/O's or flushes on the files.
| [in] | space_id | Tablespace ID |
| bool Fil_shard::space_is_flushed | ( | const fil_space_t * | space | ) |
Checks if all the file nodes in a space are flushed.
The caller must hold the fil_system mutex.
| [in] | space | Tablespace to check |
| ut::Expected< fil_space_t * > Fil_shard::space_open | ( | space_id_t | space_id | ) |
Looks up the tablespace, acquires the space, opens each node of a tablespace if not already open, validates the first page if it was not validated yet and fills the FSP-related cache if it was not filled yet.
A fil_space_release() needs to be called on the returned space.
| [in] | space_id | Tablespace ID |
|
inlinenoexcept |
Move the space to the deleted list and remove from the default lookup set.
| [in,out] | space | Space instance to delete. |
|
private |
Prepare for truncating a single-table tablespace.
1) Wait for pending operations on the tablespace to stop; 2) Remove all insert buffer entries for the tablespace;
| [in] | space_id | Tablespace ID |
| [out] | space | Instance that maps to the space ID. |
| void Fil_shard::space_release | ( | fil_space_t * | space | ) |
Release a tablespace acquired with Fil_shard::space_acquire().
| [in,out] | space | tablespace to release |
|
inline |
Remove the fil_space_t instance from the maps used to search for it.
| [in] | space_id | Tablespace ID to remove from maps. |
| dberr_t Fil_shard::space_rename | ( | space_id_t | space_id, |
| const char * | old_path, | ||
| const char * | new_name, | ||
| const char * | new_path_in | ||
| ) |
Rename a single-table tablespace.
The tablespace must exist in the memory cache.
| [in] | space_id | Tablespace ID |
| [in] | old_path | Old file name |
| [in] | new_name | New tablespace name in the schema/space |
| [in] | new_path_in | New file name, or nullptr if it is located in the normal data directory |
| bool Fil_shard::space_truncate | ( | space_id_t | space_id, |
| page_no_t | size_in_pages | ||
| ) |
Basically recreates the tablespace`s only node and set it to the needed size in place.
The content of the prefix up to new size is overwritten with zeros.
| [in] | space_id | Tablespace ID to truncate |
| [in] | size_in_pages | Truncate size. |
| void Fil_shard::update_space_name_map | ( | fil_space_t * | space, |
| const char * | new_name | ||
| ) |
Remap the tablespace to the new name.
| [in] | space | Tablespace instance, with old name. |
| [in] | new_name | New tablespace name |
| void Fil_shard::validate | ( | ) | const |
Validate a shard.
| void Fil_shard::validate_space_reference_count | ( | Space_References & | buffer_pool_references | ) |
Check that each fil_space_t::m_n_ref_count in this shard matches the number of pages counted in the buffer pool.
| [in] | buffer_pool_references | Map of spaces instances to the count of their pages in the buffer pool. |
| dberr_t Fil_shard::wait_for_pending_operations | ( | space_id_t | space_id, |
| fil_space_t *& | space, | ||
| char ** | path | ||
| ) | const |
Wait for pending operations on a tablespace to stop.
| [in] | space_id | Tablespace ID |
| [out] | space | tablespace instance in memory |
| [out] | path | tablespace path |
|
private |
Note that a write IO has completed.
| [in,out] | file | File on which a write was completed |
|
friend |
|
private |
Deleted tablespaces.
All pages for these tablespaces in the buffer pool will be passively deleted. They need not be written. Once the reference count is zero, this fil_space_t can be deleted from m_deleted_spaces and removed from memory. All reads and writes must be done under the shard mutex.
|
private |
Fil_shard ID.
|
private |
Base node for the LRU list of the most recently used open files with no pending I/O's; if we start an I/O on the file, we first remove it from this list, and return it to the start of the list when the I/O ends; the system tablespace file is not put to this list: it is opened after the startup, and kept open until shutdown.
|
mutableprivate |
Mutex protecting this shard.
|
private |
Tablespace instances hashed on the space name.
|
private |
Tablespace instances hashed on the space id.
|
private |
Base node for the list of those tablespaces whose files contain unflushed writes; those spaces have at least one file where m_modification_counter > m_flush_counter.