MySQL 8.0.40
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 | open_system_tablespaces (size_t max_n_open, size_t *n_open) |
Open all the system files. 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... | |
void | space_add (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, const IORequest &type) |
Updates the data structures when an I/O operation finishes. More... | |
bool | prepare_file_for_io (fil_node_t *file) |
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 size) |
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... | |
bool | 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... | |
bool | space_open (space_id_t space_id) |
Open each file of a tablespace if not already open. More... | |
fil_space_t * | space_load (space_id_t space_id) |
Opens the files associated with a tablespace and returns a pointer to the fil_space_t that is in the memory cache associated with a space id. 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, buf_remove_t buf_remove) |
Deletes an IBD or IBU tablespace. More... | |
bool | space_truncate (space_id_t space_id, page_no_t size_in_pages) |
Truncate the tablespace to needed size. More... | |
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 and put it to the fil_system hash table. 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, bool sync, const page_id_t &page_id, const page_size_t &page_size, ulint byte_offset, ulint len, void *buf, void *message) |
Read or write data. 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... | |
fil_node_t * | create_node (const char *name, page_no_t size, fil_space_t *space, bool is_raw, bool punch_hole, bool atomic_write, page_no_t max_pages=PAGE_NO_MAX) |
Attach a file to a tablespace. More... | |
void | validate () const |
Validate a shard. More... | |
Static Public Member Functions | |
static void | space_free_low (fil_space_t *&space) |
Free a tablespace object on which fil_space_detach() was invoked. 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 | |
fil_space_t * | get_reserved_space (space_id_t space_id) |
We keep system tablespace files always open; this is important in preventing deadlocks in this module, as a page read completion often performs another read from the insert buffer. More... | |
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... | |
dberr_t | get_file_size (fil_node_t *file, bool read_only_mode) |
First we open the file in the normal mode, no async I/O here, for simplicity. 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 |
Static Private Member Functions | |
static AIO_mode | get_AIO_mode (const IORequest &req_type, bool sync) |
Get the AIO mode. More... | |
static dberr_t | get_file_for_io (fil_space_t *space, page_no_t *page_no, fil_node_t *&file) |
Get the file name for IO and the local offset within that file. More... | |
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 modification_counter > flush_counter. More... | |
int64_t | m_modification_counter |
When we write to a file we increment this by one. 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, |
const IORequest & | type | ||
) |
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] | type | Marks the file as modified type == WRITE |
|
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. |
fil_node_t * Fil_shard::create_node | ( | const char * | name, |
page_no_t | size, | ||
fil_space_t * | space, | ||
bool | is_raw, | ||
bool | punch_hole, | ||
bool | atomic_write, | ||
page_no_t | max_pages = PAGE_NO_MAX |
||
) |
Attach a file to a tablespace.
[in] | name | file name of a file that is not open |
[in] | size | file size in entire database blocks |
[in,out] | space | tablespace from fil_space_create() |
[in] | is_raw | whether this is a raw device or partition |
[in] | punch_hole | true if supported for this file |
[in] | atomic_write | true if the file has atomic write enabled |
[in] | max_pages | maximum number of pages in file |
nullptr | if error |
dberr_t Fil_shard::do_io | ( | const IORequest & | type, |
bool | sync, | ||
const page_id_t & | page_id, | ||
const page_size_t & | page_size, | ||
ulint | byte_offset, | ||
ulint | len, | ||
void * | buf, | ||
void * | message | ||
) |
Read or write data.
This operation could be asynchronous (aio).
[in] | type | IO context |
[in] | sync | whether synchronous aio is desired |
[in] | page_id | page id |
[in] | page_size | page size |
[in] | byte_offset | remainder of offset in bytes; in AIO this must be divisible by the OS block size |
[in] | len | how many bytes to read or write; this must not cross a file boundary; in AIO this must be a block size multiple |
[in,out] | buf | buffer where to store read data or from where to write; in AIO this must be appropriately aligned |
[in] | message | message for AIO handler if !sync, else ignored |
DB_SUCCESS | on success |
DB_TABLESPACE_DELETED | if the tablespace does not exist |
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)
Get the AIO mode.
[in] | req_type | IO request type |
[in] | sync | true if Synchronous IO return the AIO mode |
|
staticprivate |
Get the file name for IO and the local offset within that file.
[in,out] | space | Tablespace for IO |
[in,out] | page_no | The relative page number in the file |
[out] | file | File node if DB_SUCCESS, NULL if not |
DB_SUCCESS | if the file is found with the page_no |
DB_ERROR | if the file is not found or does not contain the page. in this case file == nullptr |
|
private |
First we open the file in the normal mode, no async I/O here, for simplicity.
Then do some checks, and close the file again. NOTE that we could not use the simple file read function os_file_read() in Windows to read from a file opened for async I/O!
[in,out] | file | Get the size of this file |
[in] | read_only_mode | true if read only mode set |
Add some tolerance when the tablespace is upgraded. If an empty general tablespace is created in 5.7, and then upgraded to 8.0, then its size changes from FIL_IBD_FILE_INITIAL_SIZE_5_7 pages to FIL_IBD_FILE_INITIAL_SIZE-1.
|
private |
We keep system tablespace files always open; this is important in preventing deadlocks in this module, as a page read completion often performs another read from the insert buffer.
The insert buffer is in tablespace TRX_SYS_SPACE, and we cannot end up waiting in this function.
[in] | space_id | Tablespace ID to look up |
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 and DDL 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 |
|
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 |
bool 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 |
void Fil_shard::open_system_tablespaces | ( | size_t | max_n_open, |
size_t * | n_open | ||
) |
Open all the system files.
[in] | max_n_open | Maximum number of open files allowed |
[in,out] | n_open | Current number of open files |
bool Fil_shard::prepare_file_for_io | ( | fil_node_t * | file | ) |
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.
[in] | file | Tablespace file for IO |
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 |
void Fil_shard::space_add | ( | fil_space_t * | space | ) |
Map the space ID and name to the tablespace instance.
[in] | space | Tablespace instance |
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 |
fil_space_t * Fil_shard::space_create | ( | const char * | name, |
space_id_t | space_id, | ||
uint32_t | flags, | ||
fil_type_t | purpose | ||
) |
Create a space memory object and put it to the fil_system hash table.
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 |
nullptr | on failure (such as when the same tablespace exists) |
dberr_t Fil_shard::space_delete | ( | space_id_t | space_id, |
buf_remove_t | buf_remove | ||
) |
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.
[in] | space_id | Tablespace ID |
[in] | buf_remove | Specify the action to take on the pages for this table in the buffer pool. |
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 | size | ||
) |
Try to extend a tablespace if it is smaller than the specified size.
[in,out] | space | tablespace |
[in] | size | desired 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.
[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 |
|
static |
Free a tablespace object on which fil_space_detach() was invoked.
There must not be any pending I/O's or flushes on the files.
[in,out] | space | tablespace |
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 |
fil_space_t * Fil_shard::space_load | ( | space_id_t | space_id | ) |
Opens the files associated with a tablespace and returns a pointer to the fil_space_t that is in the memory cache associated with a space id.
Open the files associated with a tablespace, make sure the size of the tablespace is read from the header page, and return a pointer to the fil_space_t that is in the memory cache associated with the given space id.
[in] | space_id | Get the tablespace instance or this ID |
bool Fil_shard::space_open | ( | space_id_t | space_id | ) |
Open each file of a tablespace if not already open.
[in] | space_id | tablespace identifier |
true | if all file nodes were opened |
false | on failure |
|
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 | ||
) |
Truncate the tablespace to needed size.
[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.
|
private |
When we write to a file we increment this by one.
|
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 modification_counter > flush_counter.