diff options
Diffstat (limited to 'storage/rocksdb/properties_collector.cc')
-rw-r--r-- | storage/rocksdb/properties_collector.cc | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/storage/rocksdb/properties_collector.cc b/storage/rocksdb/properties_collector.cc index 92396b23f7e..8bc4f34691f 100644 --- a/storage/rocksdb/properties_collector.cc +++ b/storage/rocksdb/properties_collector.cc @@ -54,7 +54,7 @@ Rdb_tbl_prop_coll::Rdb_tbl_prop_coll(Rdb_ddl_manager *const ddl_manager, : m_cf_id(cf_id), m_ddl_manager(ddl_manager), m_last_stats(nullptr), m_rows(0l), m_window_pos(0l), m_deleted_rows(0l), m_max_deleted_rows(0l), m_file_size(0), m_params(params), - m_cardinality_collector(table_stats_sampling_pct) { + m_cardinality_collector(table_stats_sampling_pct), m_recorded(false) { DBUG_ASSERT(ddl_manager != nullptr); m_deleted_rows_window.resize(m_params.m_window, false); @@ -210,28 +210,31 @@ Rdb_tbl_prop_coll::Finish(rocksdb::UserCollectedProperties *const properties) { num_sst_entry_other += it->m_entry_others; } - if (num_sst_entry_put > 0) { - rocksdb_num_sst_entry_put += num_sst_entry_put; - } + if (!m_recorded) { + if (num_sst_entry_put > 0) { + rocksdb_num_sst_entry_put += num_sst_entry_put; + } - if (num_sst_entry_delete > 0) { - rocksdb_num_sst_entry_delete += num_sst_entry_delete; - } + if (num_sst_entry_delete > 0) { + rocksdb_num_sst_entry_delete += num_sst_entry_delete; + } - if (num_sst_entry_singledelete > 0) { - rocksdb_num_sst_entry_singledelete += num_sst_entry_singledelete; - } + if (num_sst_entry_singledelete > 0) { + rocksdb_num_sst_entry_singledelete += num_sst_entry_singledelete; + } - if (num_sst_entry_merge > 0) { - rocksdb_num_sst_entry_merge += num_sst_entry_merge; - } + if (num_sst_entry_merge > 0) { + rocksdb_num_sst_entry_merge += num_sst_entry_merge; + } - if (num_sst_entry_other > 0) { - rocksdb_num_sst_entry_other += num_sst_entry_other; - } + if (num_sst_entry_other > 0) { + rocksdb_num_sst_entry_other += num_sst_entry_other; + } - for (Rdb_index_stats &stat : m_stats) { - m_cardinality_collector.AdjustStats(&stat); + for (Rdb_index_stats &stat : m_stats) { + m_cardinality_collector.AdjustStats(&stat); + } + m_recorded = true; } properties->insert({INDEXSTATS_KEY, Rdb_index_stats::materialize(m_stats)}); return rocksdb::Status::OK(); @@ -441,15 +444,8 @@ void Rdb_index_stats::merge(const Rdb_index_stats &s, const bool &increment, m_entry_single_deletes += s.m_entry_single_deletes; m_entry_merges += s.m_entry_merges; m_entry_others += s.m_entry_others; - if (s.m_distinct_keys_per_prefix.size() > 0) { - for (i = 0; i < s.m_distinct_keys_per_prefix.size(); i++) { - m_distinct_keys_per_prefix[i] += s.m_distinct_keys_per_prefix[i]; - } - } else { - for (i = 0; i < m_distinct_keys_per_prefix.size(); i++) { - m_distinct_keys_per_prefix[i] += - s.m_rows >> (m_distinct_keys_per_prefix.size() - i - 1); - } + for (i = 0; i < s.m_distinct_keys_per_prefix.size(); i++) { + m_distinct_keys_per_prefix[i] += s.m_distinct_keys_per_prefix[i]; } } else { m_rows -= s.m_rows; @@ -460,15 +456,8 @@ void Rdb_index_stats::merge(const Rdb_index_stats &s, const bool &increment, m_entry_single_deletes -= s.m_entry_single_deletes; m_entry_merges -= s.m_entry_merges; m_entry_others -= s.m_entry_others; - if (s.m_distinct_keys_per_prefix.size() > 0) { - for (i = 0; i < s.m_distinct_keys_per_prefix.size(); i++) { - m_distinct_keys_per_prefix[i] -= s.m_distinct_keys_per_prefix[i]; - } - } else { - for (i = 0; i < m_distinct_keys_per_prefix.size(); i++) { - m_distinct_keys_per_prefix[i] -= - s.m_rows >> (m_distinct_keys_per_prefix.size() - i - 1); - } + for (i = 0; i < s.m_distinct_keys_per_prefix.size(); i++) { + m_distinct_keys_per_prefix[i] -= s.m_distinct_keys_per_prefix[i]; } } } |