Skip to content

Commit

Permalink
Merge 58f5063 into f467388
Browse files Browse the repository at this point in the history
  • Loading branch information
kunga authored May 20, 2024
2 parents f467388 + 58f5063 commit 87712bc
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
2 changes: 1 addition & 1 deletion ydb/core/tx/datashard/datashard__stats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ void TDataShard::Handle(TEvPrivate::TEvAsyncTableStats::TPtr& ev, const TActorCo

ui64 tableId = ev->Get()->TableId;
LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Stats rebuilt at datashard " << TabletID() << ", for tableId " << tableId
<< ": RowCount " << ev->Get()->Stats.RowCount << ", DataSize " << ev->Get()->Stats.DataSize.Size << ", PartCount: " << ev->Get()->PartCount
<< ": RowCount " << ev->Get()->Stats.RowCount << ", DataSize " << ev->Get()->Stats.DataSize.Size << ", IndexSize " << ev->Get()->Stats.IndexSize.Size << ", PartCount: " << ev->Get()->PartCount
<< (ev->Get()->PartOwners.size() > 1 || ev->Get()->PartOwners.size() == 1 && *ev->Get()->PartOwners.begin() != TabletID() ? ", with borrowed parts" : ""));

i64 dataSize = 0;
Expand Down
39 changes: 26 additions & 13 deletions ydb/core/tx/datashard/datashard_ut_stats.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include <ydb/core/tx/datashard/ut_common/datashard_ut_common.h>
#include "datashard_ut_common_kqp.h"
#include "ydb/core/tablet_flat/shared_sausagecache.h"
#include <ydb/core/tablet_flat/test/libs/table/test_make.h>

Expand All @@ -9,6 +8,18 @@ using namespace NKikimr::NDataShard;
using namespace NSchemeShard;
using namespace Tests;

namespace {
void UpsertRows(TServer::TPtr server, TActorId sender, ui32 keyFrom = 0, ui32 keyTo = 2000) {
TString query = "UPSERT INTO `/Root/table-1` (key, value) VALUES ";
for (auto key : xrange(keyFrom, keyTo)) {
if (key != keyFrom)
query += ", ";
query += "(" + ToString(key) + ", " + ToString(key) + ") ";
}
ExecSQL(server, sender, query);
}
}

Y_UNIT_TEST_SUITE(DataShardStats) {

NKikimrTableStats::TTableStats GetTableStats(TTestActorRuntime& runtime, ui64 tabletId, ui64 tableId) {
Expand Down Expand Up @@ -171,20 +182,13 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
const auto shard1 = GetTableShards(server, sender, "/Root/table-1").at(0);
const auto tableId1 = ResolveTableId(server, sender, "/Root/table-1");

const int count = 2000;
TString query = "UPSERT INTO `/Root/table-1` (key, value) VALUES ";
for (auto times = 0; times < count; times++) {
if (times != 0)
query += ", ";
query += "(" + ToString(times) + ", " + ToString(times) + ") ";
}
ExecSQL(server, sender, query);
UpsertRows(server, sender);

{
Cerr << "... waiting for stats after upsert" << Endl;
auto stats = WaitTableStats(runtime, shard1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), count);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 2000);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 0);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetDataSize(), 196096);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetIndexSize(), 0);
Expand All @@ -196,7 +200,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
Cerr << "... waiting for stats after compaction" << Endl;
auto stats = WaitTableStats(runtime, shard1, 1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), count);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 2000);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetDataSize(), 30100);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetIndexSize(), bTreeIndex ? 233 : 138);
Expand Down Expand Up @@ -414,6 +418,11 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
}

Y_UNIT_TEST(NoData) {
const auto gDbStatsDataSizeResolutionBefore = NDataShard::gDbStatsDataSizeResolution;
const auto gDbStatsRowCountResolutionBefore = NDataShard::gDbStatsRowCountResolution;
NDataShard::gDbStatsDataSizeResolution = 1; // by page stats
NDataShard::gDbStatsRowCountResolution = 1;

TPortManager pm;
TServerSettings serverSettings(pm.GetPort(2134));
serverSettings.SetDomainName("Root")
Expand All @@ -431,7 +440,7 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
auto [shards, tableId1] = CreateShardedTable(server, sender, "/Root", "table-1", 1);
const auto shard1 = GetTableShards(server, sender, "/Root/table-1").at(0);

ExecSQL(server, sender, "UPSERT INTO `/Root/table-1` (key, value) VALUES (1, 1), (2, 2), (3, 3)");
UpsertRows(server, sender);

bool captured = false;
auto observer = runtime.AddObserver<NSharedCache::TEvResult>([&](NSharedCache::TEvResult::TPtr& event) {
Expand Down Expand Up @@ -459,9 +468,13 @@ Y_UNIT_TEST_SUITE(DataShardStats) {
Cerr << "Waiting stats.." << Endl;
auto stats = WaitTableStats(runtime, shard1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetDatashardId(), shard1);
UNIT_ASSERT_GT(stats.GetTableStats().GetIndexSize(), 0);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetPartCount(), 1);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 3);
UNIT_ASSERT_VALUES_EQUAL(stats.GetTableStats().GetRowCount(), 2000);
}

NDataShard::gDbStatsDataSizeResolution = gDbStatsDataSizeResolutionBefore;
NDataShard::gDbStatsRowCountResolution = gDbStatsRowCountResolutionBefore;
}

} // Y_UNIT_TEST_SUITE(DataShardStats)
Expand Down

0 comments on commit 87712bc

Please sign in to comment.