add dag_yield point to co merge && record time cost of tx_data lock_for_read in ObMultiVersionMicroBlockRowScanner

This commit is contained in:
Tsunaou 2024-03-13 13:45:25 +00:00 committed by ob-robot
parent 79a2f5c17c
commit fa714cea6d
3 changed files with 24 additions and 1 deletions

View File

@ -1881,6 +1881,7 @@ int ObMultiVersionMicroBlockRowScanner::lock_for_read(
int tmp_ret = OB_SUCCESS;
SCN scn_trans_version = SCN::invalid_scn();
auto &tx_table_guards = context_->store_ctx_->mvcc_acc_ctx_.get_tx_table_guards();
int64_t cost_time = common::ObClockGenerator::getClock();
if (OB_FAIL(tx_table_guards.lock_for_read(lock_for_read_arg,
can_read,
@ -1897,6 +1898,12 @@ int ObMultiVersionMicroBlockRowScanner::lock_for_read(
"sql_seq", lock_for_read_arg.data_sql_sequence_);
}
}
if (REACH_TENANT_TIME_INTERVAL(30 * 1000 * 1000 /*30s*/)) {
cost_time = common::ObClockGenerator::getClock() - cost_time;
if (cost_time > 10 * 1000 /*10ms*/) {
LOG_INFO("multi-ver row scanner lock for read", K(ret), K(cost_time));
}
}
return ret;
}
@ -2798,6 +2805,7 @@ int ObMultiVersionMicroBlockMinorMergeRowScanner::check_curr_row_can_read(
can_read = trans_state.can_read_;
} else {
storage::ObTxTableGuards &tx_table_guards = context_->store_ctx_->mvcc_acc_ctx_.get_tx_table_guards();
int64_t cost_time = common::ObClockGenerator::getClock();
if (OB_FAIL(tx_table_guards.check_sql_sequence_can_read(
trans_id,
sql_seq,
@ -2809,6 +2817,12 @@ int ObMultiVersionMicroBlockMinorMergeRowScanner::check_curr_row_can_read(
committed_trans_version_, last_trans_state_, can_read))) {
LOG_WARN("failed to add minor trans state", K(tmp_ret), K(trans_id), K(sql_seq), K(can_read));
}
if (REACH_TENANT_TIME_INTERVAL(30 * 1000 * 1000 /*30s*/)) {
cost_time = common::ObClockGenerator::getClock() - cost_time;
if (cost_time > 10 * 1000 /*10ms*/) {
LOG_INFO("multi-ver minor row scanner check seq", K(ret), K(cost_time));
}
}
}
LOG_DEBUG("cxf debug check sql sequence can read", K(ret), K(can_read), K(trans_id), K(sql_seq));
return ret;

View File

@ -388,7 +388,9 @@ int ObCOMerger::write_residual_data()
for (int64_t i = 0; OB_SUCC(ret) && i < merge_writers_.count(); i++) {
ObCOMergeWriter *merge_writer = nullptr;
if (OB_ISNULL(merge_writer = merge_writers_.at(i))) {
if (OB_FAIL(share::dag_yield())) {
STORAGE_LOG(WARN, "fail to yield co merge dag", KR(ret));
} else if (OB_ISNULL(merge_writer = merge_writers_.at(i))) {
ret = OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "UNEXPECTED null writer", K(ret));
} else if (OB_FAIL(merge_writer->append_residual_data())) {

View File

@ -587,6 +587,13 @@ int ObLSTxCtxMgr::get_tx_ctx_(const ObTransID &tx_id, const bool for_replay, ObP
TRANS_LOG(INFO, "transaction statistics", K_(ls_id),
"total_tx_ctx_count", get_tx_ctx_count_());
}
#ifdef ENABLE_DEBUG_LOG
// ENABLE_DEBUG_LOG macro only defined in inner test environment
if (REACH_TIME_INTERVAL(3 * 60 * 1000 * 1000 /*3 min*/)) {
TRANS_LOG(INFO, "transaction statistics", K_(ls_id),
"total_tx_ctx_count", get_tx_ctx_count_(), K(lbt()));
}
#endif
}
return ret;
}