feat(db): measure the database's size per table and keep the samples

IDatabaseUsage: MySQL/MariaDB from information_schema.TABLES (fresh
statistics on MySQL 8), SQLite from its page counts and the dbstat table
(now compiled in) with counted rows. Samples go to database_usage and
database_usage_tables (migrations 105 / 88).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-10-02 17:57:24 -05:00
parent c42a7ba387
commit 3daff99556
13 changed files with 313 additions and 1 deletions

View File

@@ -258,6 +258,11 @@ class TestSQLDatabase : public GameDatabase {
void InsertTrafficMinutes(const std::vector<TrafficMinute>& minutes) override {}
std::vector<TrafficMinute> GetTrafficMinutes(int64_t from, int64_t to, int64_t bucketSeconds) override { return {}; }
uint32_t PruneTrafficMinutes(int64_t beforeTime) override { return 0; }
Measurement MeasureDatabaseUsage() override { return {}; }
void InsertDatabaseUsage(const UsageTotals& totals, const std::vector<TableUsage>& tables) override {}
std::vector<UsageTotals> GetDatabaseUsageTotals(int64_t from, int64_t to) override { return {}; }
std::vector<TableUsage> GetDatabaseUsageTables(int64_t time) override { return {}; }
uint32_t PruneDatabaseUsage(int64_t beforeTime) override { return 0; }
void InsertInstanceSamples(const std::vector<InstanceSample>& samples) override {}
std::vector<InstanceSample> GetInstanceSamples(int64_t from, int64_t to, int64_t bucketSeconds, uint32_t zoneId) override { return {}; }
void InsertPositionSamples(const std::vector<PositionSample>& samples) override {}