#include <btr0mtib.h>
◆ Type
Enumerator |
---|
PAGE | Allocate by Page.
|
EXTENT | Allocate by extent.
|
◆ ~Bulk_extent_allocator()
Btree_multi::Bulk_extent_allocator::~Bulk_extent_allocator |
( |
| ) |
|
|
inline |
Destructor to ensure thread stop.
◆ allocate()
dberr_t Btree_multi::Bulk_extent_allocator::allocate |
( |
bool |
is_leaf, |
|
|
bool |
alloc_page, |
|
|
Page_range_t & |
range, |
|
|
std::function< void()> & |
fn_wait_begin, |
|
|
std::function< void()> & |
fn_wait_end |
|
) |
| |
Allocate a page range - currently ans Extent.
- Parameters
-
[in] | is_leaf | true if leaf segment, otherwise non-leaf segment |
[in] | alloc_page | if true, allocate in pages otherwise allocate extent |
[out] | range | page range |
[in,out] | fn_wait_begin | begin callback if wait is needed |
[in,out] | fn_wait_end | end callback if wait is needed |
- Returns
- Innodb error code.
◆ allocate_extent()
Allocate one extent.
- Parameters
-
[in] | is_leaf | true if leaf segment, otherwise non-leaf segment |
[in,out] | mtr | mini tranaction to be used for allocation |
[out] | range | page rannge for the extent |
- Returns
- innodb error code.
◆ allocate_extents()
dberr_t Btree_multi::Bulk_extent_allocator::allocate_extents |
( |
bool |
is_leaf, |
|
|
size_t |
num_extents |
|
) |
| |
|
private |
Allocate extents and fill the cache.
- Parameters
-
[in] | is_leaf | true if leaf segment, otherwise non-leaf segment |
[in] | num_extents | number of extents to allocate |
- Returns
- innodb error code.
◆ allocate_page()
dberr_t Btree_multi::Bulk_extent_allocator::allocate_page |
( |
bool |
is_leaf, |
|
|
Page_range_t & |
range |
|
) |
| |
|
private |
Allocate one page.
- Parameters
-
[in] | is_leaf | true if leaf segment, otherwise non-leaf segment |
[out] | range | page rannge for the page |
- Returns
- innodb error code.
◆ allocator_wait()
void Btree_multi::Bulk_extent_allocator::allocator_wait |
( |
| ) |
const |
|
private |
◆ check()
bool Btree_multi::Bulk_extent_allocator::check |
( |
size_t & |
n_leaf, |
|
|
size_t & |
n_non_leaf, |
|
|
bool & |
trigger |
|
) |
| |
|
private |
Check if leaf and non-leaf extent cache needs to be filled.
- Parameters
-
[out] | n_leaf | number of leaf extents to allocate |
[out] | n_non_leaf | number of non-leaf extents to allocate |
[out] | trigger | true if consumers should be triggered |
- Returns
- true if allocator should stop.
◆ init()
uint64_t Btree_multi::Bulk_extent_allocator::init |
( |
dict_table_t * |
table, |
|
|
trx_t * |
trx, |
|
|
size_t |
size, |
|
|
size_t |
num_threads, |
|
|
bool |
in_pages |
|
) |
| |
Check size and set extent allocator size parameters.
- Parameters
-
[in] | table | Innodb dictionary table object |
[in] | trx | transaction performing bulk load |
[in] | size | total data size to be loaded |
[in] | num_threads | number of concurrent threads |
[in] | in_pages | if true, allocate in pages |
- Returns
- tablespace extend size in bytes.
◆ is_interrupted()
bool Btree_multi::Bulk_extent_allocator::is_interrupted |
( |
| ) |
|
|
private |
- Returns
- true if operation is interrupted.
◆ run()
dberr_t Btree_multi::Bulk_extent_allocator::run |
( |
| ) |
|
|
private |
Extent thread executor.
- Returns
- innodb error code.
◆ start()
void Btree_multi::Bulk_extent_allocator::start |
( |
| ) |
|
◆ stop()
void Btree_multi::Bulk_extent_allocator::stop |
( |
| ) |
|
Stop extent allocator thread, if active.
◆ m_allocator_condition
std::condition_variable Btree_multi::Bulk_extent_allocator::m_allocator_condition |
|
mutableprivate |
Condition variable for allocator thread.
◆ m_allocator_wait_count
size_t Btree_multi::Bulk_extent_allocator::m_allocator_wait_count {} |
|
mutableprivate |
Number of times allocator had to wait.
◆ m_allocator_wait_time
std::chrono::microseconds Btree_multi::Bulk_extent_allocator::m_allocator_wait_time |
|
mutableprivate |
Total allocator wait time in micro seconds.
◆ m_concurrency
size_t Btree_multi::Bulk_extent_allocator::m_concurrency {} |
|
private |
Number of concurrent consumers.
◆ m_consumer_condition
std::condition_variable Btree_multi::Bulk_extent_allocator::m_consumer_condition |
|
mutableprivate |
Condition variable for extent consumer threads.
◆ m_consumer_wait_count
size_t Btree_multi::Bulk_extent_allocator::m_consumer_wait_count {} |
|
mutableprivate |
Number of times consumer(s) had to wait.
◆ m_consumer_wait_time
std::chrono::microseconds Btree_multi::Bulk_extent_allocator::m_consumer_wait_time |
|
mutableprivate |
Total consumer wait time in micro seconds.
◆ m_error
Error code, protected by m_mutex.
◆ m_leaf_extents
Extent_cache Btree_multi::Bulk_extent_allocator::m_leaf_extents |
|
private |
◆ m_mutex
std::mutex Btree_multi::Bulk_extent_allocator::m_mutex |
|
mutableprivate |
This mutex protects the m_queue.
◆ m_non_leaf_extents
Extent_cache Btree_multi::Bulk_extent_allocator::m_non_leaf_extents |
|
private |
◆ m_stop
bool Btree_multi::Bulk_extent_allocator::m_stop {false} |
|
private |
Flag to indicate if the bulk allocator thread should stop.
◆ m_table
dict_table_t* Btree_multi::Bulk_extent_allocator::m_table {} |
|
private |
Innodb dictionary table object.
◆ m_thread
std::thread Btree_multi::Bulk_extent_allocator::m_thread |
|
private |
◆ m_trx
trx_t* Btree_multi::Bulk_extent_allocator::m_trx {} |
|
private |
Innodb transaction - used for checking interrupt.
◆ m_type
◆ S_BULK_EXTEND_SIZE_MAX
constexpr size_t Btree_multi::Bulk_extent_allocator::S_BULK_EXTEND_SIZE_MAX = 64 |
|
staticconstexprprivate |
Maximum size by which the tablespace is extended each time.
◆ S_MAX_RANGES
constexpr size_t Btree_multi::Bulk_extent_allocator::S_MAX_RANGES = 2 * 1024 |
|
staticconstexprprivate |
Upper bound for max ranges.
The documentation for this class was generated from the following files: