You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/01/22 16:48:23 UTC

(shardingsphere) branch master updated: Rename DatabaseStatistics, SchemaStatistics and TableStatistics (#34434)

This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 0b1ab343c7e Rename DatabaseStatistics, SchemaStatistics and TableStatistics (#34434)
0b1ab343c7e is described below

commit 0b1ab343c7edd527c538d9f6d8e8d3a7bf65a45d
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jan 23 00:48:17 2025 +0800

    Rename DatabaseStatistics, SchemaStatistics and TableStatistics (#34434)
    
    * Rename DatabaseStatistics
    
    * Rename SchemaStatistics
    
    * Rename TableStatistics
    
    * Rename RowStatistics
---
 .../data/ShardingStatisticsTableCollector.java     | 16 ++--
 .../data/ShardingStatisticsTableCollectorTest.java | 10 +--
 .../MySQLShardingStatisticsTableCollectorTest.java |  8 +-
 ...nGaussShardingStatisticsTableCollectorTest.java | 12 +--
 ...greSQLShardingStatisticsTableCollectorTest.java |  8 +-
 ...reDatabaseData.java => DatabaseStatistics.java} | 36 ++++-----
 ...ardingSphereRowData.java => RowStatistics.java} |  6 +-
 ...SphereSchemaData.java => SchemaStatistics.java} | 36 ++++-----
 .../statistics/ShardingSphereStatistics.java       | 32 ++++----
 ...ngSphereTableData.java => TableStatistics.java} |  6 +-
 .../builder/DialectStatisticsAppender.java         |  8 +-
 .../ShardingSphereDefaultStatisticsBuilder.java    | 36 ++++-----
 .../builder/ShardingSphereStatisticsFactory.java   | 51 ++++++------
 .../dialect/PostgreSQLStatisticsAppender.java      | 20 ++---
 .../ShardingSphereStatisticsCollector.java         |  8 +-
 .../collector/tables/PgClassTableCollector.java    | 14 ++--
 .../tables/PgNamespaceTableCollector.java          | 10 +--
 ...=> YamlShardingSphereRowStatisticsSwapper.java} | 12 +--
 ... YamlShardingSphereTableStatisticsSwapper.java} | 16 ++--
 ...seDataTest.java => DatabaseStatisticsTest.java} | 30 +++----
 .../metadata/statistics/SchemaStatisticsTest.java  | 73 +++++++++++++++++
 .../statistics/ShardingSphereSchemaDataTest.java   | 73 -----------------
 .../statistics/ShardingSphereStatisticsTest.java   | 53 ++++++------
 ...ShardingSphereDefaultStatisticsBuilderTest.java | 10 +--
 .../dialect/PostgreSQLStatisticsAppenderTest.java  | 10 +--
 .../enumerable/EnumerableScanExecutor.java         | 14 ++--
 .../executor/enumerator/MemoryRowEnumerator.java   |  8 +-
 .../executor/utils/StatisticsAssembleUtils.java    | 24 +++---
 .../enumerable/EnumerableScanExecutorTest.java     | 22 ++---
 .../mode/metadata/MetaDataContextManager.java      |  2 +-
 .../mode/metadata/MetaDataContexts.java            |  2 +-
 .../metadata/factory/MetaDataContextsFactory.java  |  4 +-
 .../factory/init/MetaDataContextsInitFactory.java  |  2 +-
 ...alConfigurationMetaDataContextsInitFactory.java | 12 +--
 .../manager/ShardingSphereDatabaseDataManager.java | 75 ++++++++---------
 .../metadata/persist/MetaDataPersistService.java   |  6 +-
 ...=> ShardingSphereStatisticsPersistService.java} | 42 +++++-----
 .../metadata/table/TableRowDataPersistService.java | 14 ++--
 .../ShardingSphereStatisticsRefreshEngine.java     | 94 +++++++++++-----------
 .../mode/fixture/StatisticsCollectorFixture.java   | 12 +--
 ...hardingSphereStatisticsPersistServiceTest.java} | 30 +++----
 .../table/TableRowDataPersistServiceTest.java      |  6 +-
 .../ShardingSphereStatisticsRefreshEngineTest.java | 20 ++---
 .../ShardingSphereStatisticsChangedHandler.java    | 12 +--
 .../ClusterMetaDataManagerPersistService.java      | 12 +--
 ...ShardingSphereStatisticsChangedHandlerTest.java | 18 ++---
 .../pipeline/core/util/PipelineContextUtils.java   |  2 +-
 47 files changed, 514 insertions(+), 513 deletions(-)

diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
index 2165b336f63..c870c59a781 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
@@ -27,8 +27,8 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.rule.attribute.datasource.aggregate.AggregatedDataSourceRuleAttribute;
 import org.apache.shardingsphere.sharding.metadata.data.dialect.DialectShardingStatisticsTableCollector;
@@ -52,8 +52,8 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereSta
     private static final String SHARDING_TABLE_STATISTICS = "sharding_table_statistics";
     
     @Override
-    public Optional<ShardingSphereTableData> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
-        ShardingSphereTableData result = new ShardingSphereTableData(SHARDING_TABLE_STATISTICS);
+    public Optional<TableStatistics> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
+        TableStatistics result = new TableStatistics(SHARDING_TABLE_STATISTICS);
         DatabaseType protocolType = metaData.getAllDatabases().iterator().next().getProtocolType();
         DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(protocolType).getDialectDatabaseMetaData();
         if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
@@ -66,15 +66,15 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereSta
         return result.getRows().isEmpty() ? Optional.empty() : Optional.of(result);
     }
     
-    private void collectFromDatabase(final ShardingSphereDatabase database, final ShardingSphereTableData tableData) throws SQLException {
+    private void collectFromDatabase(final ShardingSphereDatabase database, final TableStatistics tableStatistics) throws SQLException {
         Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
         if (!rule.isPresent()) {
             return;
         }
-        collectForShardingStatisticTable(database, rule.get(), tableData);
+        collectForShardingStatisticTable(database, rule.get(), tableStatistics);
     }
     
-    private void collectForShardingStatisticTable(final ShardingSphereDatabase database, final ShardingRule rule, final ShardingSphereTableData tableData) throws SQLException {
+    private void collectForShardingStatisticTable(final ShardingSphereDatabase database, final ShardingRule rule, final TableStatistics tableStatistics) throws SQLException {
         int count = 1;
         for (ShardingTable each : rule.getShardingTables().values()) {
             for (DataNode dataNode : each.getActualDataNodes()) {
@@ -85,7 +85,7 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereSta
                 row.add(dataNode.getDataSourceName());
                 row.add(dataNode.getTableName());
                 addTableRowsAndDataLength(database.getResourceMetaData().getStorageUnits(), dataNode, row, rule);
-                tableData.getRows().add(new ShardingSphereRowData(row));
+                tableStatistics.getRows().add(new RowStatistics(row));
             }
         }
     }
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollectorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollectorTest.java
index 0d176b9e76f..e625d89e233 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollectorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollectorTest.java
@@ -25,8 +25,8 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -71,7 +71,7 @@ class ShardingStatisticsTableCollectorTest {
         when(database.getProtocolType()).thenReturn(databaseType);
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(
                 Collections.singleton(database), mock(ResourceMetaData.class), mock(RuleMetaData.class), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertFalse(actual.isPresent());
     }
     
@@ -85,10 +85,10 @@ class ShardingStatisticsTableCollectorTest {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new ResourceMetaData(Collections.emptyMap(), storageUnits), new RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("sharding_table_statistics"));
-        List<ShardingSphereRowData> actualRows = new ArrayList<>(actual.get().getRows());
+        List<RowStatistics> actualRows = new ArrayList<>(actual.get().getRows());
         assertThat(actualRows.size(), is(2));
         assertThat(actualRows.get(0).getRows(), is(Arrays.asList(1, "foo_db", "foo_tbl", "ds_0", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
         assertThat(actualRows.get(1).getRows(), is(Arrays.asList(2, "foo_db", "foo_tbl", "ds_1", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/MySQLShardingStatisticsTableCollectorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/MySQLShardingStatisticsTableCollectorTest.java
index 1db191df427..95468ff578e 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/MySQLShardingStatisticsTableCollectorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/MySQLShardingStatisticsTableCollectorTest.java
@@ -25,8 +25,8 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -76,10 +76,10 @@ class MySQLShardingStatisticsTableCollectorTest {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new ResourceMetaData(Collections.emptyMap(), storageUnits), new RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("sharding_table_statistics"));
-        List<ShardingSphereRowData> actualRows = new ArrayList<>(actual.get().getRows());
+        List<RowStatistics> actualRows = new ArrayList<>(actual.get().getRows());
         assertThat(actualRows.size(), is(2));
         assertThat(actualRows.get(0).getRows(), is(Arrays.asList(2, "foo_db", "foo_tbl", "ds_1", "foo_tbl", new BigDecimal("10"), new BigDecimal("100"))));
         assertThat(actualRows.get(1).getRows(), is(Arrays.asList(1, "foo_db", "foo_tbl", "ds_0", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/OpenGaussShardingStatisticsTableCollectorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/OpenGaussShardingStatisticsTableCollectorTest.java
index 906e88112dc..e4435688b75 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/OpenGaussShardingStatisticsTableCollectorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/OpenGaussShardingStatisticsTableCollectorTest.java
@@ -25,8 +25,8 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -77,10 +77,10 @@ class OpenGaussShardingStatisticsTableCollectorTest {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new ResourceMetaData(Collections.emptyMap(), storageUnits), new RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("sharding_table_statistics"));
-        List<ShardingSphereRowData> actualRows = new ArrayList<>(actual.get().getRows());
+        List<RowStatistics> actualRows = new ArrayList<>(actual.get().getRows());
         assertThat(actualRows.size(), is(2));
         assertThat(actualRows.get(0).getRows(), is(Arrays.asList(1, "foo_db", "foo_tbl", "ds_0", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
         assertThat(actualRows.get(1).getRows(), is(Arrays.asList(2, "foo_db", "foo_tbl", "ds_1", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
@@ -96,10 +96,10 @@ class OpenGaussShardingStatisticsTableCollectorTest {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new ResourceMetaData(Collections.emptyMap(), storageUnits), new RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("sharding_table_statistics"));
-        List<ShardingSphereRowData> actualRows = new ArrayList<>(actual.get().getRows());
+        List<RowStatistics> actualRows = new ArrayList<>(actual.get().getRows());
         assertThat(actualRows.size(), is(2));
         assertThat(actualRows.get(0).getRows(), is(Arrays.asList(2, "foo_db", "foo_tbl", "ds_1", "foo_tbl", new BigDecimal("10"), new BigDecimal("100"))));
         assertThat(actualRows.get(1).getRows(), is(Arrays.asList(1, "foo_db", "foo_tbl", "ds_0", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/PostgreSQLShardingStatisticsTableCollectorTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/PostgreSQLShardingStatisticsTableCollectorTest.java
index aa1cfccdb46..bc37197ca89 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/PostgreSQLShardingStatisticsTableCollectorTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/data/dialect/type/PostgreSQLShardingStatisticsTableCollectorTest.java
@@ -25,8 +25,8 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaDa
 import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -76,10 +76,10 @@ class PostgreSQLShardingStatisticsTableCollectorTest {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new ResourceMetaData(Collections.emptyMap(), storageUnits), new RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new ConfigurationProperties(new Properties()));
-        Optional<ShardingSphereTableData> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
+        Optional<TableStatistics> actual = statisticsCollector.collect("foo_db", mock(ShardingSphereTable.class), metaData);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getName(), is("sharding_table_statistics"));
-        List<ShardingSphereRowData> actualRows = new ArrayList<>(actual.get().getRows());
+        List<RowStatistics> actualRows = new ArrayList<>(actual.get().getRows());
         assertThat(actualRows.size(), is(2));
         assertThat(actualRows.get(0).getRows(), is(Arrays.asList(2, "foo_db", "foo_tbl", "ds_1", "foo_tbl", new BigDecimal("10"), new BigDecimal("100"))));
         assertThat(actualRows.get(1).getRows(), is(Arrays.asList(1, "foo_db", "foo_tbl", "ds_0", "foo_tbl", new BigDecimal("0"), new BigDecimal("0"))));
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatistics.java
similarity index 56%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseData.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatistics.java
index 19cdb2cf2f4..06cb5c9267b 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatistics.java
@@ -23,49 +23,49 @@ import lombok.Getter;
 import java.util.Map;
 
 /**
- * ShardingSphere database data.
+ * Database statistics.
  */
 @Getter
-public final class ShardingSphereDatabaseData {
+public final class DatabaseStatistics {
     
-    private final Map<String, ShardingSphereSchemaData> schemaData = new CaseInsensitiveMap<>();
+    private final Map<String, SchemaStatistics> schemaStatisticsMap = new CaseInsensitiveMap<>();
     
     /**
-     * Judge whether to contains schema.
+     * Judge whether to contains schema statistics.
      *
      * @param schemaName schema name
-     * @return contains schema or not
+     * @return contains schema statistics or not
      */
-    public boolean containsSchema(final String schemaName) {
-        return schemaData.containsKey(schemaName);
+    public boolean containsSchemaStatistics(final String schemaName) {
+        return schemaStatisticsMap.containsKey(schemaName);
     }
     
     /**
-     * Get ShardingSphere schema data.
+     * Get schema statistics.
      *
      * @param schemaName schema name
-     * @return schema data
+     * @return schema statistics
      */
-    public ShardingSphereSchemaData getSchema(final String schemaName) {
-        return schemaData.get(schemaName);
+    public SchemaStatistics getSchemaStatistics(final String schemaName) {
+        return schemaStatisticsMap.get(schemaName);
     }
     
     /**
-     * Put schema data.
+     * Put schema statistics.
      *
      * @param schemaName schema name
-     * @param schema schema data
+     * @param schemaStatistics schema statistics
      */
-    public void putSchema(final String schemaName, final ShardingSphereSchemaData schema) {
-        schemaData.put(schemaName, schema);
+    public void putSchemaStatistics(final String schemaName, final SchemaStatistics schemaStatistics) {
+        schemaStatisticsMap.put(schemaName, schemaStatistics);
     }
     
     /**
-     * Remove schema data.
+     * Remove schema statistics.
      *
      * @param schemaName schema name
      */
-    public void removeSchema(final String schemaName) {
-        schemaData.remove(schemaName);
+    public void removeSchemaStatistics(final String schemaName) {
+        schemaStatisticsMap.remove(schemaName);
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereRowData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/RowStatistics.java
similarity index 94%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereRowData.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/RowStatistics.java
index 0cb68e367fc..d879a8a9297 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereRowData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/RowStatistics.java
@@ -28,19 +28,19 @@ import java.security.MessageDigest;
 import java.util.List;
 
 /**
- * ShardingSphere row data.
+ * Row statistics.
  */
 @RequiredArgsConstructor
 @Getter
 @EqualsAndHashCode(onlyExplicitlyIncluded = true)
-public final class ShardingSphereRowData {
+public final class RowStatistics {
     
     @EqualsAndHashCode.Include
     private final String uniqueKey;
     
     private final List<Object> rows;
     
-    public ShardingSphereRowData(final List<Object> rows) {
+    public RowStatistics(final List<Object> rows) {
         uniqueKey = generateUniqueKey(rows);
         this.rows = rows;
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatistics.java
similarity index 56%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaData.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatistics.java
index 848dd8efe93..689911550a7 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatistics.java
@@ -23,49 +23,49 @@ import lombok.Getter;
 import java.util.Map;
 
 /**
- * ShardingSphere schema data.
+ * Schema statistics.
  */
 @Getter
-public final class ShardingSphereSchemaData {
+public final class SchemaStatistics {
     
-    private final Map<String, ShardingSphereTableData> tableData = new CaseInsensitiveMap<>();
+    private final Map<String, TableStatistics> tableStatisticsMap = new CaseInsensitiveMap<>();
     
     /**
-     * Get ShardingSphere table meta data via table name.
+     * Get table statistics.
      *
      * @param tableName tableName table name
-     * @return ShardingSphere table data
+     * @return table statistics
      */
-    public ShardingSphereTableData getTable(final String tableName) {
-        return tableData.get(tableName);
+    public TableStatistics getTableStatistics(final String tableName) {
+        return tableStatisticsMap.get(tableName);
     }
     
     /**
-     * Add ShardingSphere table data.
+     * Add table statistics.
      *
      * @param tableName table name
-     * @param table ShardingSphere table data
+     * @param tableStatistics table statistics
      */
-    public void putTable(final String tableName, final ShardingSphereTableData table) {
-        tableData.put(tableName, table);
+    public void putTableStatistics(final String tableName, final TableStatistics tableStatistics) {
+        tableStatisticsMap.put(tableName, tableStatistics);
     }
     
     /**
-     * Remove ShardingSphere table meta data.
+     * Remove table statistics.
      *
      * @param tableName table name
      */
-    public void removeTable(final String tableName) {
-        tableData.remove(tableName);
+    public void removeTableStatistics(final String tableName) {
+        tableStatisticsMap.remove(tableName);
     }
     
     /**
-     * Judge contains ShardingSphere table from table metadata or not.
+     * Judge whether contains table statistics.
      *
      * @param tableName table name
-     * @return contains ShardingSphere table from table metadata or not
+     * @return contains table statistics or not
      */
-    public boolean containsTable(final String tableName) {
-        return tableData.containsKey(tableName);
+    public boolean containsTableStatistics(final String tableName) {
+        return tableStatisticsMap.containsKey(tableName);
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatistics.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatistics.java
index 1e269c2539e..6ed2de4cfe6 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatistics.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatistics.java
@@ -28,44 +28,44 @@ import java.util.Map;
 @Getter
 public final class ShardingSphereStatistics {
     
-    private final Map<String, ShardingSphereDatabaseData> databaseData = new CaseInsensitiveMap<>();
+    private final Map<String, DatabaseStatistics> databaseStatisticsMap = new CaseInsensitiveMap<>();
     
     /**
-     * Get ShardingSphere database.
+     * Get database statistics.
      *
      * @param databaseName database name
-     * @return ShardingSphere database data
+     * @return database statistics
      */
-    public ShardingSphereDatabaseData getDatabase(final String databaseName) {
-        return databaseData.get(databaseName);
+    public DatabaseStatistics getDatabaseStatistics(final String databaseName) {
+        return databaseStatisticsMap.get(databaseName);
     }
     
     /**
-     * Put ShardingSphere database.
+     * Put database statistics.
      *
      * @param databaseName database name
-     * @param database ShardingSphere database
+     * @param databaseStatistics database statistics
      */
-    public void putDatabase(final String databaseName, final ShardingSphereDatabaseData database) {
-        databaseData.put(databaseName, database);
+    public void putDatabaseStatistics(final String databaseName, final DatabaseStatistics databaseStatistics) {
+        databaseStatisticsMap.put(databaseName, databaseStatistics);
     }
     
     /**
-     * Drop ShardingSphere database.
+     * Drop database statistics.
      *
      * @param databaseName database name
      */
-    public void dropDatabase(final String databaseName) {
-        databaseData.remove(databaseName);
+    public void dropDatabaseStatistics(final String databaseName) {
+        databaseStatisticsMap.remove(databaseName);
     }
     
     /**
-     * Judge contains ShardingSphere database from meta data or not.
+     * Judge whether contains database statistics.
      *
      * @param databaseName database name
-     * @return contains ShardingSphere database from meta data or not
+     * @return contains database statistics or not
      */
-    public boolean containsDatabase(final String databaseName) {
-        return databaseData.containsKey(databaseName);
+    public boolean containsDatabaseStatistics(final String databaseName) {
+        return databaseStatisticsMap.containsKey(databaseName);
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereTableData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/TableStatistics.java
similarity index 84%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereTableData.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/TableStatistics.java
index ab92dcfd098..629035fa1f6 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereTableData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/TableStatistics.java
@@ -26,14 +26,14 @@ import java.util.Comparator;
 import java.util.TreeSet;
 
 /**
- * ShardingSphere table data.
+ * Table statistics.
  */
 @RequiredArgsConstructor
 @Getter
 @EqualsAndHashCode
-public final class ShardingSphereTableData {
+public final class TableStatistics {
     
     private final String name;
     
-    private final Collection<ShardingSphereRowData> rows = new TreeSet<>(Comparator.comparing(ShardingSphereRowData::getUniqueKey));
+    private final Collection<RowStatistics> rows = new TreeSet<>(Comparator.comparing(RowStatistics::getUniqueKey));
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
index b67029b39d0..a729bb14dc0 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.metadata.statistics.builder;
 
 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 
 /**
@@ -29,10 +29,10 @@ import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 public interface DialectStatisticsAppender extends DatabaseTypedSPI {
     
     /**
-     * Append database data.
+     * Append database statistics.
      *
-     * @param databaseData to be appended database data 
+     * @param databaseStatistics to be appended database statistics 
      * @param database database
      */
-    void append(ShardingSphereDatabaseData databaseData, ShardingSphereDatabase database);
+    void append(DatabaseStatistics databaseStatistics, ShardingSphereDatabase database);
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilder.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilder.java
index 84b3ea070c2..4a0a7924b7d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilder.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilder.java
@@ -19,10 +19,10 @@ package org.apache.shardingsphere.infra.metadata.statistics.builder;
 
 import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 
 import java.util.Collections;
 
@@ -38,29 +38,29 @@ public final class ShardingSphereDefaultStatisticsBuilder {
     private static final String SHARDING_TABLE_STATISTICS = "sharding_table_statistics";
     
     /**
-     * Build default statistics data.
+     * Build default database statistics.
      *
      * @param database database
-     * @return built statistics data
+     * @return built database statistics
      */
-    public ShardingSphereDatabaseData build(final ShardingSphereDatabase database) {
-        ShardingSphereDatabaseData result = new ShardingSphereDatabaseData();
+    public DatabaseStatistics build(final ShardingSphereDatabase database) {
+        DatabaseStatistics result = new DatabaseStatistics();
         if (database.containsSchema(SHARDINGSPHERE)) {
-            ShardingSphereSchemaData schemaData = new ShardingSphereSchemaData();
-            buildClusterInformationTable(schemaData);
-            buildShardingTableStatisticsTable(schemaData);
-            result.putSchema(SHARDINGSPHERE, schemaData);
+            SchemaStatistics schemaStatistics = new SchemaStatistics();
+            buildClusterInformationTable(schemaStatistics);
+            buildShardingTableStatisticsTable(schemaStatistics);
+            result.putSchemaStatistics(SHARDINGSPHERE, schemaStatistics);
         }
         return result;
     }
     
-    private void buildClusterInformationTable(final ShardingSphereSchemaData schemaData) {
-        ShardingSphereTableData tableData = new ShardingSphereTableData(CLUSTER_INFORMATION);
-        tableData.getRows().add(new ShardingSphereRowData(Collections.singletonList(ShardingSphereVersion.VERSION)));
-        schemaData.putTable(CLUSTER_INFORMATION, tableData);
+    private void buildClusterInformationTable(final SchemaStatistics schemaStatistics) {
+        TableStatistics tableStatistics = new TableStatistics(CLUSTER_INFORMATION);
+        tableStatistics.getRows().add(new RowStatistics(Collections.singletonList(ShardingSphereVersion.VERSION)));
+        schemaStatistics.putTableStatistics(CLUSTER_INFORMATION, tableStatistics);
     }
     
-    private void buildShardingTableStatisticsTable(final ShardingSphereSchemaData schemaData) {
-        schemaData.putTable(SHARDING_TABLE_STATISTICS, new ShardingSphereTableData(SHARDING_TABLE_STATISTICS));
+    private void buildShardingTableStatisticsTable(final SchemaStatistics schemaStatistics) {
+        schemaStatistics.putTableStatistics(SHARDING_TABLE_STATISTICS, new TableStatistics(SHARDING_TABLE_STATISTICS));
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java
index 2af23738353..7e30cabf124 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java
@@ -26,10 +26,10 @@ import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 
 import java.util.Collection;
@@ -56,16 +56,17 @@ public final class ShardingSphereStatisticsFactory {
             return result;
         }
         Optional<DialectStatisticsAppender> dialectStatisticsAppender = DatabaseTypedSPILoader.findService(DialectStatisticsAppender.class, getDatabaseType(metaData));
-        Collection<ShardingSphereDatabase> unloadedDatabases = metaData.getAllDatabases().stream().filter(each -> !loadedStatistics.containsDatabase(each.getName())).collect(Collectors.toList());
+        Collection<ShardingSphereDatabase> unloadedDatabases = metaData.getAllDatabases().stream()
+                .filter(each -> !loadedStatistics.containsDatabaseStatistics(each.getName())).collect(Collectors.toList());
         for (ShardingSphereDatabase each : unloadedDatabases) {
-            ShardingSphereDatabaseData databaseData = new ShardingSphereDatabaseData();
-            dialectStatisticsAppender.ifPresent(optional -> optional.append(databaseData, each));
-            if (!databaseData.getSchemaData().isEmpty()) {
-                result.putDatabase(each.getName(), databaseData);
+            DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+            dialectStatisticsAppender.ifPresent(optional -> optional.append(databaseStatistics, each));
+            if (!databaseStatistics.getSchemaStatisticsMap().isEmpty()) {
+                result.putDatabaseStatistics(each.getName(), databaseStatistics);
             }
         }
-        loadedStatistics.getDatabaseData().forEach(result::putDatabase);
-        fillDefaultShardingSphereStatistics(metaData, result);
+        loadedStatistics.getDatabaseStatisticsMap().forEach(result::putDatabaseStatistics);
+        fillDefaultStatistics(metaData, result);
         return result;
     }
     
@@ -76,35 +77,35 @@ public final class ShardingSphereStatisticsFactory {
         return dialectDatabaseMetaData.getDefaultSchema().isPresent() ? TypedSPILoader.getService(DatabaseType.class, "PostgreSQL") : protocolType;
     }
     
-    private static void fillDefaultShardingSphereStatistics(final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
+    private static void fillDefaultStatistics(final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
         for (ShardingSphereDatabase database : metaData.getAllDatabases()) {
-            ShardingSphereDatabaseData defaultDatabaseData = new ShardingSphereDefaultStatisticsBuilder().build(database);
-            Collection<String> defaultSchemaNames = new CaseInsensitiveSet<>(defaultDatabaseData.getSchemaData().keySet());
+            DatabaseStatistics defaultDatabaseStatistics = new ShardingSphereDefaultStatisticsBuilder().build(database);
+            Collection<String> defaultSchemaNames = new CaseInsensitiveSet<>(defaultDatabaseStatistics.getSchemaStatisticsMap().keySet());
             if (database.getAllSchemas().stream().noneMatch(optional -> defaultSchemaNames.contains(optional.getName()))) {
                 continue;
             }
-            if (!statistics.containsDatabase(database.getName())) {
-                statistics.putDatabase(database.getName(), defaultDatabaseData);
+            if (!statistics.containsDatabaseStatistics(database.getName())) {
+                statistics.putDatabaseStatistics(database.getName(), defaultDatabaseStatistics);
                 continue;
             }
-            fillDefaultShardingSphereStatistics(defaultDatabaseData, statistics.getDatabase(database.getName()));
+            fillDefaultStatistics(defaultDatabaseStatistics, statistics.getDatabaseStatistics(database.getName()));
         }
     }
     
-    private static void fillDefaultShardingSphereStatistics(final ShardingSphereDatabaseData defaultDatabaseData, final ShardingSphereDatabaseData existedDatabaseData) {
-        for (Entry<String, ShardingSphereSchemaData> entry : defaultDatabaseData.getSchemaData().entrySet()) {
-            if (!existedDatabaseData.containsSchema(entry.getKey())) {
-                existedDatabaseData.putSchema(entry.getKey(), entry.getValue());
+    private static void fillDefaultStatistics(final DatabaseStatistics defaultDatabaseStatistics, final DatabaseStatistics existedDatabaseStatistics) {
+        for (Entry<String, SchemaStatistics> entry : defaultDatabaseStatistics.getSchemaStatisticsMap().entrySet()) {
+            if (!existedDatabaseStatistics.containsSchemaStatistics(entry.getKey())) {
+                existedDatabaseStatistics.putSchemaStatistics(entry.getKey(), entry.getValue());
                 continue;
             }
-            fillDefaultShardingSphereStatistics(entry.getValue(), existedDatabaseData.getSchema(entry.getKey()));
+            fillDefaultStatistics(entry.getValue(), existedDatabaseStatistics.getSchemaStatistics(entry.getKey()));
         }
     }
     
-    private static void fillDefaultShardingSphereStatistics(final ShardingSphereSchemaData defaultSchemaData, final ShardingSphereSchemaData existedSchemaData) {
-        for (Entry<String, ShardingSphereTableData> entry : defaultSchemaData.getTableData().entrySet()) {
-            if (!existedSchemaData.containsTable(entry.getKey())) {
-                existedSchemaData.putTable(entry.getKey(), entry.getValue());
+    private static void fillDefaultStatistics(final SchemaStatistics defaultSchemaStatistics, final SchemaStatistics existedSchemaStatistics) {
+        for (Entry<String, TableStatistics> entry : defaultSchemaStatistics.getTableStatisticsMap().entrySet()) {
+            if (!existedSchemaStatistics.containsTableStatistics(entry.getKey())) {
+                existedSchemaStatistics.putTableStatistics(entry.getKey(), entry.getValue());
             }
         }
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
index 333015baa82..258dee64bc0 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.infra.metadata.statistics.builder.dialect;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender;
 
 import java.util.Arrays;
@@ -43,20 +43,20 @@ public final class PostgreSQLStatisticsAppender implements DialectStatisticsAppe
     }
     
     @Override
-    public void append(final ShardingSphereDatabaseData databaseData, final ShardingSphereDatabase database) {
+    public void append(final DatabaseStatistics databaseStatistics, final ShardingSphereDatabase database) {
         for (Entry<String, Collection<String>> entry : INIT_DATA_SCHEMA_TABLES.entrySet()) {
-            ShardingSphereSchemaData schemaData = new ShardingSphereSchemaData();
+            SchemaStatistics schemaStatistics = new SchemaStatistics();
             if (null != database.getSchema(entry.getKey())) {
-                initTables(database.getSchema(entry.getKey()), entry.getValue(), schemaData);
-                databaseData.putSchema(entry.getKey(), schemaData);
+                initTables(database.getSchema(entry.getKey()), entry.getValue(), schemaStatistics);
+                databaseStatistics.putSchemaStatistics(entry.getKey(), schemaStatistics);
             }
         }
     }
     
-    private void initTables(final ShardingSphereSchema schema, final Collection<String> tables, final ShardingSphereSchemaData schemaData) {
+    private void initTables(final ShardingSphereSchema schema, final Collection<String> tableNames, final SchemaStatistics schemaStatistics) {
         for (ShardingSphereTable each : schema.getAllTables()) {
-            if (tables.contains(each.getName().toLowerCase())) {
-                schemaData.putTable(each.getName().toLowerCase(), new ShardingSphereTableData(each.getName()));
+            if (tableNames.contains(each.getName().toLowerCase())) {
+                schemaStatistics.putTableStatistics(each.getName().toLowerCase(), new TableStatistics(each.getName()));
             }
         }
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/ShardingSphereStatisticsCollector.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/ShardingSphereStatisticsCollector.java
index cfa715791fb..bda89ca21ce 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/ShardingSphereStatisticsCollector.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/ShardingSphereStatisticsCollector.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.metadata.statistics.collector;
 
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
 
@@ -37,9 +37,9 @@ public interface ShardingSphereStatisticsCollector extends TypedSPI {
      *
      * @param databaseName database name
      * @param table table
-     * @param metaData ShardingSphere meta data
-     * @return ShardingSphere table data
+     * @param metaData meta data
+     * @return table statistics
      * @throws SQLException SQL exception
      */
-    Optional<ShardingSphereTableData> collect(String databaseName, ShardingSphereTable table, ShardingSphereMetaData metaData) throws SQLException;
+    Optional<TableStatistics> collect(String databaseName, ShardingSphereTable table, ShardingSphereMetaData metaData) throws SQLException;
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
index d5e33bf3aaa..455e60e899b 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
@@ -21,8 +21,8 @@ import com.cedarsoftware.util.CaseInsensitiveMap;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereTableDataCollectorUtils;
 
@@ -44,8 +44,8 @@ public final class PgClassTableCollector implements ShardingSphereStatisticsColl
     private static final Long PUBLIC_SCHEMA_OID = 0L;
     
     @Override
-    public Optional<ShardingSphereTableData> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
-        ShardingSphereTableData result = new ShardingSphereTableData(PG_CLASS);
+    public Optional<TableStatistics> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
+        TableStatistics result = new TableStatistics(PG_CLASS);
         ShardingSphereSchema publicSchema = metaData.getDatabase(databaseName).getSchema(PUBLIC_SCHEMA);
         if (null != publicSchema) {
             result.getRows().addAll(collectForSchema(0L, PUBLIC_SCHEMA_OID, publicSchema, table));
@@ -53,15 +53,15 @@ public final class PgClassTableCollector implements ShardingSphereStatisticsColl
         return Optional.of(result);
     }
     
-    private Collection<ShardingSphereRowData> collectForSchema(final Long oid, final Long relNamespace, final ShardingSphereSchema schema, final ShardingSphereTable table) {
-        Collection<ShardingSphereRowData> result = new LinkedList<>();
+    private Collection<RowStatistics> collectForSchema(final Long oid, final Long relNamespace, final ShardingSphereSchema schema, final ShardingSphereTable table) {
+        Collection<RowStatistics> result = new LinkedList<>();
         for (ShardingSphereTable each : schema.getAllTables()) {
             Map<String, Object> columnValues = new CaseInsensitiveMap<>(4, 1F);
             columnValues.put("oid", oid);
             columnValues.put("relnamespace", relNamespace);
             columnValues.put("relname", each.getName());
             columnValues.put("relkind", "r");
-            result.add(new ShardingSphereRowData(ShardingSphereTableDataCollectorUtils.createRowValue(columnValues, table)));
+            result.add(new RowStatistics(ShardingSphereTableDataCollectorUtils.createRowValue(columnValues, table)));
         }
         return result;
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
index fb00fd536a0..0789e6feb55 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
@@ -21,8 +21,8 @@ import com.cedarsoftware.util.CaseInsensitiveMap;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereTableDataCollectorUtils;
 
@@ -43,11 +43,11 @@ public final class PgNamespaceTableCollector implements ShardingSphereStatistics
     private static final Long PUBLIC_SCHEMA_OID = 0L;
     
     @Override
-    public Optional<ShardingSphereTableData> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
-        ShardingSphereTableData result = new ShardingSphereTableData(PG_NAMESPACE);
+    public Optional<TableStatistics> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
+        TableStatistics result = new TableStatistics(PG_NAMESPACE);
         long oid = 1L;
         for (ShardingSphereSchema each : metaData.getDatabase(databaseName).getAllSchemas()) {
-            result.getRows().add(new ShardingSphereRowData(getRow(PUBLIC_SCHEMA.equalsIgnoreCase(each.getName()) ? PUBLIC_SCHEMA_OID : oid++, each.getName(), table)));
+            result.getRows().add(new RowStatistics(getRow(PUBLIC_SCHEMA.equalsIgnoreCase(each.getName()) ? PUBLIC_SCHEMA_OID : oid++, each.getName(), table)));
         }
         return Optional.of(result);
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowDataSwapper.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowStatisticsSwapper.java
similarity index 87%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowDataSwapper.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowStatisticsSwapper.java
index 43af506e33d..cfcb9f03175 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowDataSwapper.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereRowStatisticsSwapper.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.yaml.data.swapper;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import org.apache.shardingsphere.infra.util.yaml.swapper.YamlConfigurationSwapper;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
@@ -31,15 +31,15 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * YAML ShardingSphere row data swapper.
+ * YAML ShardingSphere row statistics swapper.
  */
 @RequiredArgsConstructor
-public final class YamlShardingSphereRowDataSwapper implements YamlConfigurationSwapper<YamlShardingSphereRowData, ShardingSphereRowData> {
+public final class YamlShardingSphereRowStatisticsSwapper implements YamlConfigurationSwapper<YamlShardingSphereRowData, RowStatistics> {
     
     private final List<ShardingSphereColumn> columns;
     
     @Override
-    public YamlShardingSphereRowData swapToYamlConfiguration(final ShardingSphereRowData data) {
+    public YamlShardingSphereRowData swapToYamlConfiguration(final RowStatistics data) {
         YamlShardingSphereRowData result = new YamlShardingSphereRowData();
         Collection<Object> rowData = null == data.getRows() ? Collections.emptyList() : data.getRows();
         List<Object> yamlRowData = new LinkedList<>();
@@ -61,7 +61,7 @@ public final class YamlShardingSphereRowDataSwapper implements YamlConfiguration
     }
     
     @Override
-    public ShardingSphereRowData swapToObject(final YamlShardingSphereRowData yamlConfig) {
+    public RowStatistics swapToObject(final YamlShardingSphereRowData yamlConfig) {
         Collection<Object> yamlRow = null == yamlConfig.getRows() ? Collections.emptyList() : yamlConfig.getRows();
         List<Object> rowData = new LinkedList<>();
         int count = 0;
@@ -69,7 +69,7 @@ public final class YamlShardingSphereRowDataSwapper implements YamlConfiguration
             ShardingSphereColumn column = columns.get(count++);
             rowData.add(convertByDataType(each, column.getDataType()));
         }
-        return new ShardingSphereRowData(yamlConfig.getUniqueKey(), rowData);
+        return new RowStatistics(yamlConfig.getUniqueKey(), rowData);
     }
     
     private Object convertByDataType(final Object data, final int dataType) {
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableDataSwapper.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableStatisticsSwapper.java
similarity index 75%
rename from infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableDataSwapper.java
rename to infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableStatisticsSwapper.java
index d6ce5a8f80b..c4277b2ef81 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableDataSwapper.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/yaml/data/swapper/YamlShardingSphereTableStatisticsSwapper.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.yaml.data.swapper;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import org.apache.shardingsphere.infra.util.yaml.swapper.YamlConfigurationSwapper;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
@@ -29,28 +29,28 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * YAML ShardingSphere data swapper.
+ * YAML ShardingSphere statistics swapper.
  */
 @RequiredArgsConstructor
-public final class YamlShardingSphereTableDataSwapper implements YamlConfigurationSwapper<YamlShardingSphereTableData, ShardingSphereTableData> {
+public final class YamlShardingSphereTableStatisticsSwapper implements YamlConfigurationSwapper<YamlShardingSphereTableData, TableStatistics> {
     
     private final List<ShardingSphereColumn> columns;
     
     @Override
-    public YamlShardingSphereTableData swapToYamlConfiguration(final ShardingSphereTableData data) {
+    public YamlShardingSphereTableData swapToYamlConfiguration(final TableStatistics data) {
         YamlShardingSphereTableData result = new YamlShardingSphereTableData();
         result.setName(data.getName());
         Collection<YamlShardingSphereRowData> yamlShardingSphereRowData = new LinkedList<>();
-        data.getRows().forEach(rowData -> yamlShardingSphereRowData.add(new YamlShardingSphereRowDataSwapper(columns).swapToYamlConfiguration(rowData)));
+        data.getRows().forEach(rowData -> yamlShardingSphereRowData.add(new YamlShardingSphereRowStatisticsSwapper(columns).swapToYamlConfiguration(rowData)));
         result.setRowData(yamlShardingSphereRowData);
         return result;
     }
     
     @Override
-    public ShardingSphereTableData swapToObject(final YamlShardingSphereTableData yamlConfig) {
-        ShardingSphereTableData result = new ShardingSphereTableData(yamlConfig.getName());
+    public TableStatistics swapToObject(final YamlShardingSphereTableData yamlConfig) {
+        TableStatistics result = new TableStatistics(yamlConfig.getName());
         if (null != yamlConfig.getRowData()) {
-            yamlConfig.getRowData().forEach(yamlRowData -> result.getRows().add(new YamlShardingSphereRowDataSwapper(columns).swapToObject(yamlRowData)));
+            yamlConfig.getRowData().forEach(yamlRowData -> result.getRows().add(new YamlShardingSphereRowStatisticsSwapper(columns).swapToObject(yamlRowData)));
         }
         return result;
     }
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseDataTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatisticsTest.java
similarity index 55%
rename from infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseDataTest.java
rename to infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatisticsTest.java
index a8696badf14..474406ede0a 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereDatabaseDataTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/DatabaseStatisticsTest.java
@@ -24,36 +24,36 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-class ShardingSphereDatabaseDataTest {
+class DatabaseStatisticsTest {
     
-    private final ShardingSphereDatabaseData databaseData = new ShardingSphereDatabaseData();
+    private final DatabaseStatistics databaseStatistics = new DatabaseStatistics();
     
     @BeforeEach
     void setUp() {
-        databaseData.putSchema("foo_schema", new ShardingSphereSchemaData());
+        databaseStatistics.putSchemaStatistics("foo_schema", new SchemaStatistics());
     }
     
     @Test
-    void assertContainsSchema() {
-        assertTrue(databaseData.containsSchema("foo_schema"));
-        assertFalse(databaseData.containsSchema("bar_schema"));
+    void assertContainsSchemaStatistics() {
+        assertTrue(databaseStatistics.containsSchemaStatistics("foo_schema"));
+        assertFalse(databaseStatistics.containsSchemaStatistics("bar_schema"));
     }
     
     @Test
-    void assertGetSchema() {
-        assertTrue(databaseData.getSchema("foo_schema").getTableData().isEmpty());
-        assertNull(databaseData.getSchema("bar_schema"));
+    void assertGetSchemaStatistics() {
+        assertTrue(databaseStatistics.getSchemaStatistics("foo_schema").getTableStatisticsMap().isEmpty());
+        assertNull(databaseStatistics.getSchemaStatistics("bar_schema"));
     }
     
     @Test
-    void assertPutSchema() {
-        databaseData.putSchema("bar_schema", new ShardingSphereSchemaData());
-        assertTrue(databaseData.containsSchema("bar_schema"));
+    void assertPutSchemaStatistics() {
+        databaseStatistics.putSchemaStatistics("bar_schema", new SchemaStatistics());
+        assertTrue(databaseStatistics.containsSchemaStatistics("bar_schema"));
     }
     
     @Test
-    void assertRemoveSchema() {
-        databaseData.removeSchema("foo_schema");
-        assertFalse(databaseData.containsSchema("foo_schema"));
+    void assertRemoveSchemaStatistics() {
+        databaseStatistics.removeSchemaStatistics("foo_schema");
+        assertFalse(databaseStatistics.containsSchemaStatistics("foo_schema"));
     }
 }
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatisticsTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatisticsTest.java
new file mode 100644
index 00000000000..f271521c3c0
--- /dev/null
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/SchemaStatisticsTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.infra.metadata.statistics;
+
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class SchemaStatisticsTest {
+    
+    private static final String TEST_TABLE_NAME = "TEST_TABLE_NAME";
+    
+    private static final String TEST_TABLE_2 = "TEST_TABLE_2";
+    
+    private static final String NON_EXISTENT_TABLE = "NON_EXISTENT_TABLE";
+    
+    @Test
+    void assertGetTableStatistics() {
+        SchemaStatistics schemaStatistics = new SchemaStatistics();
+        schemaStatistics.putTableStatistics(TEST_TABLE_NAME, new TableStatistics(TEST_TABLE_NAME));
+        TableStatistics tableStatistics = schemaStatistics.getTableStatistics(TEST_TABLE_NAME);
+        assertTrue(TEST_TABLE_NAME.equalsIgnoreCase(tableStatistics.getName()));
+        assertNull(schemaStatistics.getTableStatistics(NON_EXISTENT_TABLE));
+    }
+    
+    @Test
+    void assertPutTableStatistics() {
+        SchemaStatistics schemaStatistics = new SchemaStatistics();
+        schemaStatistics.putTableStatistics(TEST_TABLE_NAME, new TableStatistics(TEST_TABLE_NAME));
+        assertThat(schemaStatistics.getTableStatisticsMap().size(), is(1));
+        assertFalse(schemaStatistics.getTableStatisticsMap().containsKey(TEST_TABLE_2));
+        TableStatistics newTableStatistics = new TableStatistics(TEST_TABLE_2);
+        schemaStatistics.putTableStatistics(TEST_TABLE_2, newTableStatistics);
+        assertThat(schemaStatistics.getTableStatisticsMap().size(), is(2));
+        assertTrue(schemaStatistics.containsTableStatistics(TEST_TABLE_2));
+    }
+    
+    @Test
+    void assertRemoveTableStatistics() {
+        SchemaStatistics schemaStatistics = new SchemaStatistics();
+        schemaStatistics.putTableStatistics(TEST_TABLE_NAME, new TableStatistics(TEST_TABLE_NAME));
+        assertTrue(schemaStatistics.containsTableStatistics(TEST_TABLE_NAME));
+        schemaStatistics.removeTableStatistics(TEST_TABLE_NAME);
+        assertTrue(schemaStatistics.getTableStatisticsMap().isEmpty());
+    }
+    
+    @Test
+    void assertContainsTableStatistics() {
+        SchemaStatistics schemaStatistics = new SchemaStatistics();
+        schemaStatistics.putTableStatistics(TEST_TABLE_NAME, new TableStatistics(TEST_TABLE_NAME));
+        assertTrue(schemaStatistics.containsTableStatistics(TEST_TABLE_NAME));
+        assertFalse(schemaStatistics.containsTableStatistics(NON_EXISTENT_TABLE));
+    }
+}
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaDataTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaDataTest.java
deleted file mode 100644
index 4eb8ea2610d..00000000000
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereSchemaDataTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.statistics;
-
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-class ShardingSphereSchemaDataTest {
-    
-    private static final String TEST_TABLE_NAME = "TEST_TABLE_NAME";
-    
-    private static final String TEST_TABLE_2 = "TEST_TABLE_2";
-    
-    private static final String NON_EXISTENT_TABLE = "NON_EXISTENT_TABLE";
-    
-    @Test
-    void assertGetTable() {
-        ShardingSphereSchemaData shardingSphereSchemaData = new ShardingSphereSchemaData();
-        shardingSphereSchemaData.putTable(TEST_TABLE_NAME, new ShardingSphereTableData(TEST_TABLE_NAME));
-        ShardingSphereTableData tableData = shardingSphereSchemaData.getTable(TEST_TABLE_NAME);
-        assertTrue(TEST_TABLE_NAME.equalsIgnoreCase(tableData.getName()));
-        assertNull(shardingSphereSchemaData.getTable(NON_EXISTENT_TABLE));
-    }
-    
-    @Test
-    void assertPutTable() {
-        ShardingSphereSchemaData shardingSphereSchemaData = new ShardingSphereSchemaData();
-        shardingSphereSchemaData.putTable(TEST_TABLE_NAME, new ShardingSphereTableData(TEST_TABLE_NAME));
-        assertThat(shardingSphereSchemaData.getTableData().size(), is(1));
-        assertFalse(shardingSphereSchemaData.getTableData().containsKey(TEST_TABLE_2));
-        ShardingSphereTableData newTable = new ShardingSphereTableData(TEST_TABLE_2);
-        shardingSphereSchemaData.putTable(TEST_TABLE_2, newTable);
-        assertThat(shardingSphereSchemaData.getTableData().size(), is(2));
-        assertTrue(shardingSphereSchemaData.containsTable(TEST_TABLE_2));
-    }
-    
-    @Test
-    void assertRemoveTable() {
-        ShardingSphereSchemaData shardingSphereSchemaData = new ShardingSphereSchemaData();
-        shardingSphereSchemaData.putTable(TEST_TABLE_NAME, new ShardingSphereTableData(TEST_TABLE_NAME));
-        assertTrue(shardingSphereSchemaData.containsTable(TEST_TABLE_NAME));
-        shardingSphereSchemaData.removeTable(TEST_TABLE_NAME);
-        assertTrue(shardingSphereSchemaData.getTableData().isEmpty());
-    }
-    
-    @Test
-    void assertContainsTable() {
-        ShardingSphereSchemaData shardingSphereSchemaData = new ShardingSphereSchemaData();
-        shardingSphereSchemaData.putTable(TEST_TABLE_NAME, new ShardingSphereTableData(TEST_TABLE_NAME));
-        assertTrue(shardingSphereSchemaData.containsTable(TEST_TABLE_NAME));
-        assertFalse(shardingSphereSchemaData.containsTable(NON_EXISTENT_TABLE));
-    }
-}
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatisticsTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatisticsTest.java
index caf6e882561..ae7ce144001 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatisticsTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/ShardingSphereStatisticsTest.java
@@ -35,45 +35,44 @@ class ShardingSphereStatisticsTest {
     public static final String NON_EXISTENT_DATABASE_NAME = "NON_EXISTENT_DATABASE_NAME";
     
     @Test
-    void assertGetDatabase() {
-        ShardingSphereStatistics shardingSphereStatistics = new ShardingSphereStatistics();
-        ShardingSphereDatabaseData shardingSphereDatabaseData = new ShardingSphereDatabaseData();
-        shardingSphereStatistics.putDatabase(TEST_DATABASE_NAME, shardingSphereDatabaseData);
-        ShardingSphereDatabaseData databaseData = shardingSphereStatistics.getDatabase(TEST_DATABASE_NAME);
-        assertEquals(databaseData, shardingSphereDatabaseData);
-        assertNull(shardingSphereStatistics.getDatabase(NON_EXISTENT_DATABASE_NAME));
+    void assertGetDatabaseStatistics() {
+        ShardingSphereStatistics statistics = new ShardingSphereStatistics();
+        DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+        statistics.putDatabaseStatistics(TEST_DATABASE_NAME, databaseStatistics);
+        assertEquals(statistics.getDatabaseStatistics(TEST_DATABASE_NAME), databaseStatistics);
+        assertNull(statistics.getDatabaseStatistics(NON_EXISTENT_DATABASE_NAME));
     }
     
     @Test
-    void assertPutDatabase() {
+    void assertPutDatabaseStatistics() {
         ShardingSphereStatistics shardingSphereStatistics = new ShardingSphereStatistics();
-        ShardingSphereDatabaseData shardingSphereDatabaseData = new ShardingSphereDatabaseData();
-        shardingSphereStatistics.putDatabase(TEST_DATABASE_NAME, shardingSphereDatabaseData);
-        assertThat(shardingSphereStatistics.getDatabaseData().size(), is(1));
-        assertFalse(shardingSphereStatistics.containsDatabase(TEST_DATABASE_NAME_2));
-        ShardingSphereDatabaseData newShardingSphereDatabaseData = new ShardingSphereDatabaseData();
-        shardingSphereStatistics.putDatabase(TEST_DATABASE_NAME_2, newShardingSphereDatabaseData);
-        assertThat(shardingSphereStatistics.getDatabaseData().size(), is(2));
-        assertTrue(shardingSphereStatistics.containsDatabase(TEST_DATABASE_NAME_2));
+        DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+        shardingSphereStatistics.putDatabaseStatistics(TEST_DATABASE_NAME, databaseStatistics);
+        assertThat(shardingSphereStatistics.getDatabaseStatisticsMap().size(), is(1));
+        assertFalse(shardingSphereStatistics.containsDatabaseStatistics(TEST_DATABASE_NAME_2));
+        DatabaseStatistics newDatabaseStatistics = new DatabaseStatistics();
+        shardingSphereStatistics.putDatabaseStatistics(TEST_DATABASE_NAME_2, newDatabaseStatistics);
+        assertThat(shardingSphereStatistics.getDatabaseStatisticsMap().size(), is(2));
+        assertTrue(shardingSphereStatistics.containsDatabaseStatistics(TEST_DATABASE_NAME_2));
     }
     
     @Test
-    void assertDropDatabase() {
+    void assertDropDatabaseStatistics() {
         ShardingSphereStatistics shardingSphereStatistics = new ShardingSphereStatistics();
-        ShardingSphereDatabaseData shardingSphereDatabaseData = new ShardingSphereDatabaseData();
-        shardingSphereStatistics.putDatabase(TEST_DATABASE_NAME, shardingSphereDatabaseData);
-        assertTrue(shardingSphereStatistics.containsDatabase(TEST_DATABASE_NAME));
-        shardingSphereStatistics.dropDatabase(TEST_DATABASE_NAME);
-        assertThat(shardingSphereStatistics.getDatabaseData().size(), is(0));
-        assertFalse(shardingSphereStatistics.containsDatabase(TEST_DATABASE_NAME));
+        DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+        shardingSphereStatistics.putDatabaseStatistics(TEST_DATABASE_NAME, databaseStatistics);
+        assertTrue(shardingSphereStatistics.containsDatabaseStatistics(TEST_DATABASE_NAME));
+        shardingSphereStatistics.dropDatabaseStatistics(TEST_DATABASE_NAME);
+        assertThat(shardingSphereStatistics.getDatabaseStatisticsMap().size(), is(0));
+        assertFalse(shardingSphereStatistics.containsDatabaseStatistics(TEST_DATABASE_NAME));
     }
     
     @Test
     void assertContainsTable() {
         ShardingSphereStatistics shardingSphereStatistics = new ShardingSphereStatistics();
-        ShardingSphereDatabaseData shardingSphereDatabaseData = new ShardingSphereDatabaseData();
-        shardingSphereStatistics.putDatabase(TEST_DATABASE_NAME, shardingSphereDatabaseData);
-        assertTrue(shardingSphereStatistics.containsDatabase(TEST_DATABASE_NAME));
-        assertFalse(shardingSphereStatistics.containsDatabase(NON_EXISTENT_DATABASE_NAME));
+        DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+        shardingSphereStatistics.putDatabaseStatistics(TEST_DATABASE_NAME, databaseStatistics);
+        assertTrue(shardingSphereStatistics.containsDatabaseStatistics(TEST_DATABASE_NAME));
+        assertFalse(shardingSphereStatistics.containsDatabaseStatistics(NON_EXISTENT_DATABASE_NAME));
     }
 }
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilderTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilderTest.java
index a417a497831..cceef253d46 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilderTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereDefaultStatisticsBuilderTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.infra.metadata.statistics.builder;
 
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -29,10 +29,10 @@ class ShardingSphereDefaultStatisticsBuilderTest {
     
     @Test
     void assertBuild() {
-        ShardingSphereDatabaseData databaseData = new ShardingSphereDefaultStatisticsBuilder().build(mockDatabase());
-        assertTrue(databaseData.getSchemaData().containsKey("shardingsphere"));
-        assertTrue(databaseData.getSchemaData().get("shardingsphere").getTableData().containsKey("cluster_information"));
-        assertTrue(databaseData.getSchemaData().get("shardingsphere").getTableData().containsKey("sharding_table_statistics"));
+        DatabaseStatistics databaseStatistics = new ShardingSphereDefaultStatisticsBuilder().build(mockDatabase());
+        assertTrue(databaseStatistics.getSchemaStatisticsMap().containsKey("shardingsphere"));
+        assertTrue(databaseStatistics.getSchemaStatisticsMap().get("shardingsphere").getTableStatisticsMap().containsKey("cluster_information"));
+        assertTrue(databaseStatistics.getSchemaStatisticsMap().get("shardingsphere").getTableStatisticsMap().containsKey("sharding_table_statistics"));
     }
     
     private ShardingSphereDatabase mockDatabase() {
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
index bd8d677d515..e0e90153dd9 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.metadata.statistics.builder.dialect;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereDefaultStatisticsBuilder;
 import org.junit.jupiter.api.Test;
 
@@ -36,10 +36,10 @@ class PostgreSQLStatisticsAppenderTest {
     @Test
     void assertAppend() {
         ShardingSphereDatabase database = mockDatabase();
-        ShardingSphereDatabaseData databaseData = new ShardingSphereDefaultStatisticsBuilder().build(database);
-        new PostgreSQLStatisticsAppender().append(databaseData, database);
-        assertTrue(databaseData.getSchemaData().containsKey("pg_catalog"));
-        assertTrue(databaseData.getSchemaData().get("pg_catalog").getTableData().containsKey("pg_class"));
+        DatabaseStatistics databaseStatistics = new ShardingSphereDefaultStatisticsBuilder().build(database);
+        new PostgreSQLStatisticsAppender().append(databaseStatistics, database);
+        assertTrue(databaseStatistics.getSchemaStatisticsMap().containsKey("pg_catalog"));
+        assertTrue(databaseStatistics.getSchemaStatisticsMap().get("pg_catalog").getTableStatisticsMap().containsKey("pg_class"));
     }
     
     private ShardingSphereDatabase mockDatabase() {
diff --git a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
index 3a21637fc6b..baaec87c15a 100644
--- a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
+++ b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
@@ -51,7 +51,7 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserEngine;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
@@ -155,19 +155,19 @@ public final class EnumerableScanExecutor implements ScanExecutor {
     
     private Enumerable<Object> createMemoryEnumerable(final String databaseName, final String schemaName, final ShardingSphereTable table, final DatabaseType databaseType) {
         if (databaseType instanceof OpenGaussDatabaseType && EnumerableConstants.SYSTEM_CATALOG_TABLES.contains(table.getName())) {
-            return createMemoryEnumerator(StatisticsAssembleUtils.assembleTableData(table, federationContext.getMetaData()), table, databaseType);
+            return createMemoryEnumerator(StatisticsAssembleUtils.assembleTableStatistics(table, federationContext.getMetaData()), table, databaseType);
         }
-        Optional<ShardingSphereTableData> tableData = Optional.ofNullable(statistics.getDatabase(databaseName))
-                .map(optional -> optional.getSchema(schemaName)).map(optional -> optional.getTable(table.getName()));
-        return tableData.map(optional -> createMemoryEnumerator(optional, table, databaseType)).orElseGet(this::createEmptyEnumerable);
+        Optional<TableStatistics> tableStatistics = Optional.ofNullable(statistics.getDatabaseStatistics(databaseName))
+                .map(optional -> optional.getSchemaStatistics(schemaName)).map(optional -> optional.getTableStatistics(table.getName()));
+        return tableStatistics.map(optional -> createMemoryEnumerator(optional, table, databaseType)).orElseGet(this::createEmptyEnumerable);
     }
     
-    private Enumerable<Object> createMemoryEnumerator(final ShardingSphereTableData tableData, final ShardingSphereTable table, final DatabaseType databaseType) {
+    private Enumerable<Object> createMemoryEnumerator(final TableStatistics tableStatistics, final ShardingSphereTable table, final DatabaseType databaseType) {
         return new AbstractEnumerable<Object>() {
             
             @Override
             public Enumerator<Object> enumerator() {
-                return new MemoryRowEnumerator(tableData.getRows(), table.getAllColumns(), databaseType);
+                return new MemoryRowEnumerator(tableStatistics.getRows(), table.getAllColumns(), databaseType);
             }
         };
     }
diff --git a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerator/MemoryRowEnumerator.java b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerator/MemoryRowEnumerator.java
index b553cfabd55..2f283f71b47 100644
--- a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerator/MemoryRowEnumerator.java
+++ b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerator/MemoryRowEnumerator.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.sqlfederation.executor.enumerator;
 import org.apache.calcite.linq4j.Enumerator;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
 import org.apache.shardingsphere.sqlfederation.executor.utils.EnumeratorUtils;
 
 import java.util.ArrayList;
@@ -33,15 +33,15 @@ import java.util.Map;
  */
 public final class MemoryRowEnumerator implements Enumerator<Object> {
     
-    private final Collection<ShardingSphereRowData> rows;
+    private final Collection<RowStatistics> rows;
     
     private final Map<Integer, Class<?>> columnTypes;
     
-    private Iterator<ShardingSphereRowData> iterator;
+    private Iterator<RowStatistics> iterator;
     
     private Object current;
     
-    public MemoryRowEnumerator(final Collection<ShardingSphereRowData> rows, final Collection<ShardingSphereColumn> columns, final DatabaseType databaseType) {
+    public MemoryRowEnumerator(final Collection<RowStatistics> rows, final Collection<ShardingSphereColumn> columns, final DatabaseType databaseType) {
         this.rows = rows;
         columnTypes = EnumeratorUtils.createColumnTypes(new ArrayList<>(columns), databaseType);
         iterator = rows.iterator();
diff --git a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
index 2bbf5a38e2e..3121eed3510 100644
--- a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
+++ b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
@@ -24,8 +24,8 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.sqlfederation.executor.constant.EnumerableConstants;
 
@@ -39,15 +39,15 @@ import java.util.Collection;
 public final class StatisticsAssembleUtils {
     
     /**
-     * Assemble table data.
+     * Assemble table statistics.
      *
      * @param table table
      * @param metaData meta data
-     * @return ShardingSphere table data
+     * @return table statistics
      */
-    public static ShardingSphereTableData assembleTableData(final ShardingSphereTable table, final ShardingSphereMetaData metaData) {
+    public static TableStatistics assembleTableStatistics(final ShardingSphereTable table, final ShardingSphereMetaData metaData) {
         // TODO move this logic to ShardingSphere statistics
-        ShardingSphereTableData result = new ShardingSphereTableData(table.getName());
+        TableStatistics result = new TableStatistics(table.getName());
         if (EnumerableConstants.PG_DATABASE.equalsIgnoreCase(table.getName())) {
             assembleOpenGaussDatabaseData(result, metaData.getAllDatabases());
         } else if (EnumerableConstants.PG_TABLES.equalsIgnoreCase(table.getName())) {
@@ -60,31 +60,31 @@ public final class StatisticsAssembleUtils {
         return result;
     }
     
-    private static void assembleOpenGaussDatabaseData(final ShardingSphereTableData tableData, final Collection<ShardingSphereDatabase> databases) {
+    private static void assembleOpenGaussDatabaseData(final TableStatistics tableStatistics, final Collection<ShardingSphereDatabase> databases) {
         for (ShardingSphereDatabase each : databases) {
             Object[] rows = new Object[15];
             rows[0] = each.getName();
             rows[11] = EnumerableConstants.DAT_COMPATIBILITY;
-            tableData.getRows().add(new ShardingSphereRowData(Arrays.asList(rows)));
+            tableStatistics.getRows().add(new RowStatistics(Arrays.asList(rows)));
         }
     }
     
-    private static void assembleOpenGaussTableData(final ShardingSphereTableData tableData, final Collection<ShardingSphereSchema> schemas) {
+    private static void assembleOpenGaussTableData(final TableStatistics tableStatistics, final Collection<ShardingSphereSchema> schemas) {
         for (ShardingSphereSchema schema : schemas) {
             for (ShardingSphereTable each : schema.getAllTables()) {
                 Object[] rows = new Object[10];
                 rows[0] = schema.getName();
                 rows[1] = each.getName();
-                tableData.getRows().add(new ShardingSphereRowData(Arrays.asList(rows)));
+                tableStatistics.getRows().add(new RowStatistics(Arrays.asList(rows)));
             }
         }
     }
     
-    private static void assembleOpenGaussRoleData(final ShardingSphereTableData tableData, final ShardingSphereMetaData metaData) {
+    private static void assembleOpenGaussRoleData(final TableStatistics tableStatistics, final ShardingSphereMetaData metaData) {
         for (Grantee each : metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class).getGrantees()) {
             Object[] rows = new Object[27];
             rows[0] = each.getUsername();
-            tableData.getRows().add(new ShardingSphereRowData(Arrays.asList(rows)));
+            tableStatistics.getRows().add(new RowStatistics(Arrays.asList(rows)));
         }
     }
 }
diff --git a/kernel/sql-federation/executor/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutorTest.java b/kernel/sql-federation/executor/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutorTest.java
index 46de51b8781..be81a1571b4 100644
--- a/kernel/sql-federation/executor/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutorTest.java
+++ b/kernel/sql-federation/executor/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutorTest.java
@@ -22,11 +22,11 @@ import org.apache.calcite.linq4j.Enumerator;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.sqlfederation.executor.context.SQLFederationExecutorContext;
 import org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContext;
@@ -54,13 +54,13 @@ class EnumerableScanExecutorTest {
         when(executorContext.getCurrentDatabaseName()).thenReturn("db");
         when(executorContext.getSchemaName()).thenReturn("pg_catalog");
         ShardingSphereStatistics statistics = mock(ShardingSphereStatistics.class, RETURNS_DEEP_STUBS);
-        ShardingSphereDatabaseData databaseData = mock(ShardingSphereDatabaseData.class, RETURNS_DEEP_STUBS);
-        when(statistics.getDatabase("db")).thenReturn(databaseData);
-        ShardingSphereSchemaData schemaData = mock(ShardingSphereSchemaData.class, RETURNS_DEEP_STUBS);
-        when(databaseData.getSchema("pg_catalog")).thenReturn(schemaData);
-        ShardingSphereTableData tableData = mock(ShardingSphereTableData.class);
-        when(tableData.getRows()).thenReturn(Collections.singletonList(new ShardingSphereRowData(Collections.singletonList(1))));
-        when(schemaData.getTable("test")).thenReturn(tableData);
+        DatabaseStatistics databaseStatistics = mock(DatabaseStatistics.class, RETURNS_DEEP_STUBS);
+        when(statistics.getDatabaseStatistics("db")).thenReturn(databaseStatistics);
+        SchemaStatistics schemaStatistics = mock(SchemaStatistics.class, RETURNS_DEEP_STUBS);
+        when(databaseStatistics.getSchemaStatistics("pg_catalog")).thenReturn(schemaStatistics);
+        TableStatistics tableStatistics = mock(TableStatistics.class);
+        when(tableStatistics.getRows()).thenReturn(Collections.singletonList(new RowStatistics(Collections.singletonList(1))));
+        when(schemaStatistics.getTableStatistics("test")).thenReturn(tableStatistics);
         ShardingSphereTable table = mock(ShardingSphereTable.class, RETURNS_DEEP_STUBS);
         when(table.getName()).thenReturn("test");
         when(table.getAllColumns()).thenReturn(Collections.singleton(new ShardingSphereColumn("id", Types.INTEGER, true, false, false, false, true, false)));
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index c6d37748013..59b0ce4c9b2 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -125,7 +125,7 @@ public class MetaDataContextManager {
         RuleMetaData changedGlobalMetaData = new RuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, metaDataContexts.getMetaData().getAllDatabases(), props));
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(
                 metaDataContexts.getMetaData().getAllDatabases(), metaDataContexts.getMetaData().getGlobalResourceMetaData(), changedGlobalMetaData, props);
-        MetaDataContexts result = new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, metaDataPersistService.getShardingSphereDataPersistService().load(metaData)));
+        MetaDataContexts result = new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, metaDataPersistService.getShardingSphereStatisticsPersistService().load(metaData)));
         switchingResource.closeStaleDataSources();
         return result;
     }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
index 4eb560c5401..3ce147b87e5 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
@@ -76,6 +76,6 @@ public final class MetaDataContexts {
      */
     public void update(final ShardingSphereMetaData metaData, final MetaDataPersistService metaDataPersistService) {
         this.metaData.set(metaData);
-        this.statistics.set(ShardingSphereStatisticsFactory.create(metaData, metaDataPersistService.getShardingSphereDataPersistService().load(metaData)));
+        this.statistics.set(ShardingSphereStatisticsFactory.create(metaData, metaDataPersistService.getShardingSphereStatisticsPersistService().load(metaData)));
     }
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
index b9eb4ed10bd..fd104dc4f25 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
@@ -98,7 +98,7 @@ public final class MetaDataContextsFactory {
                 GlobalRulesBuilder.buildRules(originalMetaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), clonedMetaData.getAllDatabases(), props));
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(
                 clonedMetaData.getAllDatabases(), originalMetaDataContexts.getMetaData().getGlobalResourceMetaData(), changedGlobalMetaData, props);
-        return new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereDataPersistService().load(metaData)));
+        return new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereStatisticsPersistService().load(metaData)));
     }
     
     /**
@@ -120,7 +120,7 @@ public final class MetaDataContextsFactory {
                 GlobalRulesBuilder.buildRules(originalMetaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), clonedMetaData.getAllDatabases(), props));
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(
                 clonedMetaData.getAllDatabases(), originalMetaDataContexts.getMetaData().getGlobalResourceMetaData(), changedGlobalMetaData, props);
-        return new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereDataPersistService().load(metaData)));
+        return new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereStatisticsPersistService().load(metaData)));
     }
     
     private ShardingSphereMetaData cloneMetaData(final ShardingSphereMetaData originalMetaData, final ShardingSphereDatabase changedDatabase) {
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
index bc4a55c83cf..09d0a29f305 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
@@ -54,7 +54,7 @@ public abstract class MetaDataContextsInitFactory {
                                             final Collection<ShardingSphereDatabase> databases, final ConfigurationProperties props, final MetaDataPersistService persistService) {
         Collection<ShardingSphereRule> globalRules = GlobalRulesBuilder.buildRules(globalRuleConfigs, databases, props);
         ShardingSphereMetaData metaData = new ShardingSphereMetaData(databases, new ResourceMetaData(globalDataSources), new RuleMetaData(globalRules), props);
-        ShardingSphereStatistics statistics = ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereDataPersistService().load(metaData));
+        ShardingSphereStatistics statistics = ShardingSphereStatisticsFactory.create(metaData, persistService.getShardingSphereStatisticsPersistService().load(metaData));
         return new MetaDataContexts(metaData, statistics);
     }
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
index 0059a3e6c98..ab0148c9fcf 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
@@ -24,8 +24,8 @@ import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.factory.init.MetaDataContextsInitFactory;
@@ -77,10 +77,10 @@ public final class LocalConfigurationMetaDataContextsInitFactory extends MetaDat
             }
             persistService.getDatabaseMetaDataFacade().getTable().persist(each.getName(), schema.getName(), schema.getAllTables());
         }));
-        for (Entry<String, ShardingSphereDatabaseData> databaseDataEntry : metaDataContexts.getStatistics().getDatabaseData().entrySet()) {
-            for (Entry<String, ShardingSphereSchemaData> schemaDataEntry : databaseDataEntry.getValue().getSchemaData().entrySet()) {
-                persistService.getShardingSphereDataPersistService().persist(
-                        metaDataContexts.getMetaData().getDatabase(databaseDataEntry.getKey()), schemaDataEntry.getKey(), schemaDataEntry.getValue());
+        for (Entry<String, DatabaseStatistics> databaseStatisticsEntry : metaDataContexts.getStatistics().getDatabaseStatisticsMap().entrySet()) {
+            for (Entry<String, SchemaStatistics> schemaStatisticsEntry : databaseStatisticsEntry.getValue().getSchemaStatisticsMap().entrySet()) {
+                persistService.getShardingSphereStatisticsPersistService().persist(
+                        metaDataContexts.getMetaData().getDatabase(databaseStatisticsEntry.getKey()), schemaStatisticsEntry.getKey(), schemaStatisticsEntry.getValue());
             }
         }
     }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ShardingSphereDatabaseDataManager.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ShardingSphereDatabaseDataManager.java
index c0c2bb94d48..1673811d219 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ShardingSphereDatabaseDataManager.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/manager/ShardingSphereDatabaseDataManager.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.mode.metadata.manager;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
-import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper;
+import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowStatisticsSwapper;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 
 import java.util.ArrayList;
@@ -38,85 +38,85 @@ public final class ShardingSphereDatabaseDataManager {
     private final MetaDataContexts metaDataContexts;
     
     /**
-     * Add ShardingSphere database data.
+     * Add database statistics.
      *
      * @param databaseName database name
      */
-    public synchronized void addShardingSphereDatabaseData(final String databaseName) {
-        if (metaDataContexts.getStatistics().containsDatabase(databaseName)) {
+    public synchronized void addDatabaseStatistics(final String databaseName) {
+        if (metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName)) {
             return;
         }
-        metaDataContexts.getStatistics().putDatabase(databaseName, new ShardingSphereDatabaseData());
+        metaDataContexts.getStatistics().putDatabaseStatistics(databaseName, new DatabaseStatistics());
     }
     
     /**
-     * Drop ShardingSphere data database.
+     * Drop database statistics.
      *
      * @param databaseName database name
      */
-    public synchronized void dropShardingSphereDatabaseData(final String databaseName) {
-        if (!metaDataContexts.getStatistics().containsDatabase(databaseName)) {
+    public synchronized void dropDatabaseStatistics(final String databaseName) {
+        if (!metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName)) {
             return;
         }
-        metaDataContexts.getStatistics().dropDatabase(databaseName);
+        metaDataContexts.getStatistics().dropDatabaseStatistics(databaseName);
     }
     
     /**
-     * Add ShardingSphere schema data.
+     * Add schema statistics.
      *
      * @param databaseName database name
      * @param schemaName schema name
      */
-    public synchronized void addShardingSphereSchemaData(final String databaseName, final String schemaName) {
-        if (metaDataContexts.getStatistics().getDatabase(databaseName).containsSchema(schemaName)) {
+    public synchronized void addSchemaStatistics(final String databaseName, final String schemaName) {
+        if (metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).containsSchemaStatistics(schemaName)) {
             return;
         }
-        metaDataContexts.getStatistics().getDatabase(databaseName).putSchema(schemaName, new ShardingSphereSchemaData());
+        metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).putSchemaStatistics(schemaName, new SchemaStatistics());
     }
     
     /**
-     * Drop ShardingSphere schema data.
+     * Drop schema statistics.
      *
      * @param databaseName database name
      * @param schemaName schema name
      */
-    public synchronized void dropShardingSphereSchemaData(final String databaseName, final String schemaName) {
-        ShardingSphereDatabaseData databaseData = metaDataContexts.getStatistics().getDatabase(databaseName);
-        if (null == databaseData || !databaseData.containsSchema(schemaName)) {
+    public synchronized void dropSchemaStatistics(final String databaseName, final String schemaName) {
+        DatabaseStatistics databaseStatistics = metaDataContexts.getStatistics().getDatabaseStatistics(databaseName);
+        if (null == databaseStatistics || !databaseStatistics.containsSchemaStatistics(schemaName)) {
             return;
         }
-        databaseData.removeSchema(schemaName);
+        databaseStatistics.removeSchemaStatistics(schemaName);
     }
     
     /**
-     * Add ShardingSphere table data.
+     * Add table statistics.
      *
      * @param databaseName database name
      * @param schemaName schema name
      * @param tableName table name
      */
-    public synchronized void addShardingSphereTableData(final String databaseName, final String schemaName, final String tableName) {
-        if (!metaDataContexts.getStatistics().containsDatabase(databaseName) || !metaDataContexts.getStatistics().getDatabase(databaseName).containsSchema(schemaName)) {
+    public synchronized void addTableStatistics(final String databaseName, final String schemaName, final String tableName) {
+        if (!metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName) || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).containsSchemaStatistics(schemaName)) {
             return;
         }
-        if (metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName)) {
+        if (metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).containsTableStatistics(tableName)) {
             return;
         }
-        metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).putTable(tableName, new ShardingSphereTableData(tableName));
+        metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).putTableStatistics(tableName, new TableStatistics(tableName));
     }
     
     /**
-     * Drop ShardingSphere table data.
+     * Drop table statistics.
      *
      * @param databaseName database name
      * @param schemaName schema name
      * @param tableName table name
      */
-    public synchronized void dropShardingSphereTableData(final String databaseName, final String schemaName, final String tableName) {
-        if (!metaDataContexts.getStatistics().containsDatabase(databaseName) || !metaDataContexts.getStatistics().getDatabase(databaseName).containsSchema(schemaName)) {
+    public synchronized void dropTableStatistics(final String databaseName, final String schemaName, final String tableName) {
+        if (!metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName) || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).containsSchemaStatistics(schemaName)) {
             return;
         }
-        metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).removeTable(tableName);
+        metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).removeTableStatistics(tableName);
     }
     
     /**
@@ -128,17 +128,17 @@ public final class ShardingSphereDatabaseDataManager {
      * @param yamlRowData yaml row data
      */
     public synchronized void alterShardingSphereRowData(final String databaseName, final String schemaName, final String tableName, final YamlShardingSphereRowData yamlRowData) {
-        if (!metaDataContexts.getStatistics().containsDatabase(databaseName) || !metaDataContexts.getStatistics().getDatabase(databaseName).containsSchema(schemaName)
-                || !metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName)) {
+        if (!metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName) || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).containsSchemaStatistics(schemaName)
+                || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).containsTableStatistics(tableName)) {
             return;
         }
         if (!metaDataContexts.getMetaData().containsDatabase(databaseName) || !metaDataContexts.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
                 || !metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName)) {
             return;
         }
-        ShardingSphereTableData tableData = metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).getTable(tableName);
+        TableStatistics tableStatistics = metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).getTableStatistics(tableName);
         List<ShardingSphereColumn> columns = new ArrayList<>(metaDataContexts.getMetaData().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getAllColumns());
-        tableData.getRows().add(new YamlShardingSphereRowDataSwapper(columns).swapToObject(yamlRowData));
+        tableStatistics.getRows().add(new YamlShardingSphereRowStatisticsSwapper(columns).swapToObject(yamlRowData));
     }
     
     /**
@@ -150,10 +150,11 @@ public final class ShardingSphereDatabaseDataManager {
      * @param uniqueKey row uniqueKey
      */
     public synchronized void deleteShardingSphereRowData(final String databaseName, final String schemaName, final String tableName, final String uniqueKey) {
-        if (!metaDataContexts.getStatistics().containsDatabase(databaseName) || !metaDataContexts.getStatistics().getDatabase(databaseName).containsSchema(schemaName)
-                || !metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName)) {
+        if (!metaDataContexts.getStatistics().containsDatabaseStatistics(databaseName) || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).containsSchemaStatistics(schemaName)
+                || !metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).containsTableStatistics(tableName)) {
             return;
         }
-        metaDataContexts.getStatistics().getDatabase(databaseName).getSchema(schemaName).getTable(tableName).getRows().removeIf(each -> uniqueKey.equals(each.getUniqueKey()));
+        metaDataContexts.getStatistics().getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).getTableStatistics(tableName).getRows()
+                .removeIf(each -> uniqueKey.equals(each.getUniqueKey()));
     }
 }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistService.java
index e01bf1a99e1..82951b9fce1 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistService.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/MetaDataPersistService.java
@@ -29,7 +29,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.manager.GenericS
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.mode.metadata.persist.data.ShardingSphereDataPersistService;
+import org.apache.shardingsphere.mode.metadata.persist.data.ShardingSphereStatisticsPersistService;
 import org.apache.shardingsphere.mode.metadata.persist.service.config.database.DataSourceUnitPersistService;
 import org.apache.shardingsphere.mode.metadata.persist.service.config.database.DatabaseRulePersistService;
 import org.apache.shardingsphere.mode.metadata.persist.service.config.global.GlobalRulePersistService;
@@ -68,7 +68,7 @@ public final class MetaDataPersistService {
     
     private final PropertiesPersistService propsService;
     
-    private final ShardingSphereDataPersistService shardingSphereDataPersistService;
+    private final ShardingSphereStatisticsPersistService shardingSphereStatisticsPersistService;
     
     public MetaDataPersistService(final PersistRepository repository) {
         this.repository = repository;
@@ -78,7 +78,7 @@ public final class MetaDataPersistService {
         databaseRulePersistService = new DatabaseRulePersistService(repository);
         globalRuleService = new GlobalRulePersistService(repository, metaDataVersionPersistService);
         propsService = new PropertiesPersistService(repository, metaDataVersionPersistService);
-        shardingSphereDataPersistService = new ShardingSphereDataPersistService(repository);
+        shardingSphereStatisticsPersistService = new ShardingSphereStatisticsPersistService(repository);
     }
     
     /**
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistService.java
similarity index 75%
rename from mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistService.java
rename to mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistService.java
index 41eafda35a0..b0dab938ecd 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistService.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistService.java
@@ -20,11 +20,11 @@ package org.apache.shardingsphere.mode.metadata.persist.data;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
-import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper;
+import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowStatisticsSwapper;
 import org.apache.shardingsphere.mode.metadata.persist.service.metadata.table.TableRowDataPersistService;
 import org.apache.shardingsphere.mode.node.path.metadata.ShardingSphereStatisticsNodePath;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -34,15 +34,15 @@ import java.util.Collection;
 import java.util.stream.Collectors;
 
 /**
- * ShardingSphere data persist service.
+ * ShardingSphere statistics persist service.
  */
-public final class ShardingSphereDataPersistService {
+public final class ShardingSphereStatisticsPersistService {
     
     private final PersistRepository repository;
     
     private final TableRowDataPersistService tableRowDataPersistService;
     
-    public ShardingSphereDataPersistService(final PersistRepository repository) {
+    public ShardingSphereStatisticsPersistService(final PersistRepository repository) {
         this.repository = repository;
         tableRowDataPersistService = new TableRowDataPersistService(repository);
     }
@@ -60,24 +60,24 @@ public final class ShardingSphereDataPersistService {
         }
         ShardingSphereStatistics result = new ShardingSphereStatistics();
         for (String each : databaseNames.stream().filter(metaData::containsDatabase).collect(Collectors.toList())) {
-            result.getDatabaseData().put(each, load(metaData.getDatabase(each)));
+            result.getDatabaseStatisticsMap().put(each, load(metaData.getDatabase(each)));
         }
         return result;
     }
     
-    private ShardingSphereDatabaseData load(final ShardingSphereDatabase database) {
-        ShardingSphereDatabaseData result = new ShardingSphereDatabaseData();
+    private DatabaseStatistics load(final ShardingSphereDatabase database) {
+        DatabaseStatistics result = new DatabaseStatistics();
         for (String each : repository.getChildrenKeys(ShardingSphereStatisticsNodePath.getSchemaRootPath(database.getName())).stream().filter(database::containsSchema).collect(Collectors.toList())) {
-            result.putSchema(each, load(database.getName(), database.getSchema(each)));
+            result.putSchemaStatistics(each, load(database.getName(), database.getSchema(each)));
         }
         return result;
     }
     
-    private ShardingSphereSchemaData load(final String databaseName, final ShardingSphereSchema schema) {
-        ShardingSphereSchemaData result = new ShardingSphereSchemaData();
+    private SchemaStatistics load(final String databaseName, final ShardingSphereSchema schema) {
+        SchemaStatistics result = new SchemaStatistics();
         for (String each : repository.getChildrenKeys(ShardingSphereStatisticsNodePath.getTableRootPath(databaseName, schema.getName())).stream().filter(schema::containsTable)
                 .collect(Collectors.toList())) {
-            result.getTableData().put(each, tableRowDataPersistService.load(databaseName, schema.getName(), schema.getTable(each)));
+            result.getTableStatisticsMap().put(each, tableRowDataPersistService.load(databaseName, schema.getName(), schema.getTable(each)));
             
         }
         return result;
@@ -88,23 +88,23 @@ public final class ShardingSphereDataPersistService {
      *
      * @param database database
      * @param schemaName schema name
-     * @param schemaData schema data
+     * @param schemaStatistics schema statistics
      */
-    public void persist(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereSchemaData schemaData) {
-        if (schemaData.getTableData().isEmpty()) {
+    public void persist(final ShardingSphereDatabase database, final String schemaName, final SchemaStatistics schemaStatistics) {
+        if (schemaStatistics.getTableStatisticsMap().isEmpty()) {
             persistSchema(database.getName(), schemaName);
         }
-        persistTableData(database, schemaName, schemaData);
+        persistTableData(database, schemaName, schemaStatistics);
     }
     
     private void persistSchema(final String databaseName, final String schemaName) {
         repository.persist(ShardingSphereStatisticsNodePath.getSchemaPath(databaseName, schemaName), "");
     }
     
-    private void persistTableData(final ShardingSphereDatabase database, final String schemaName, final ShardingSphereSchemaData schemaData) {
-        schemaData.getTableData().values().forEach(each -> {
-            YamlShardingSphereRowDataSwapper swapper =
-                    new YamlShardingSphereRowDataSwapper(new ArrayList<>(database.getSchema(schemaName).getTable(each.getName()).getAllColumns()));
+    private void persistTableData(final ShardingSphereDatabase database, final String schemaName, final SchemaStatistics schemaStatistics) {
+        schemaStatistics.getTableStatisticsMap().values().forEach(each -> {
+            YamlShardingSphereRowStatisticsSwapper swapper =
+                    new YamlShardingSphereRowStatisticsSwapper(new ArrayList<>(database.getSchema(schemaName).getTable(each.getName()).getAllColumns()));
             persistTableData(database.getName(), schemaName, each.getName(), each.getRows().stream().map(swapper::swapToYamlConfiguration).collect(Collectors.toList()));
         });
     }
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistService.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistService.java
index b4460d373de..4688e22038a 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistService.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistService.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.mode.metadata.persist.service.metadata.table;
 
 import com.google.common.base.Strings;
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
-import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper;
+import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowStatisticsSwapper;
 import org.apache.shardingsphere.mode.node.path.metadata.ShardingSphereStatisticsNodePath;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
 
@@ -68,16 +68,16 @@ public final class TableRowDataPersistService {
     }
     
     /**
-     * Load table data.
+     * Load table statistics.
      *
      * @param databaseName database name
      * @param schemaName schema name
      * @param table table
-     * @return table data
+     * @return table statistics
      */
-    public ShardingSphereTableData load(final String databaseName, final String schemaName, final ShardingSphereTable table) {
-        ShardingSphereTableData result = new ShardingSphereTableData(table.getName());
-        YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getAllColumns()));
+    public TableStatistics load(final String databaseName, final String schemaName, final ShardingSphereTable table) {
+        TableStatistics result = new TableStatistics(table.getName());
+        YamlShardingSphereRowStatisticsSwapper swapper = new YamlShardingSphereRowStatisticsSwapper(new ArrayList<>(table.getAllColumns()));
         for (String each : repository.getChildrenKeys(ShardingSphereStatisticsNodePath.getTablePath(databaseName, schemaName, table.getName()))) {
             String yamlRow = repository.query(ShardingSphereStatisticsNodePath.getTableRowPath(databaseName, schemaName, table.getName(), each));
             if (!Strings.isNullOrEmpty(yamlRow)) {
diff --git a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java
index 91df861bc78..b6415c32d21 100644
--- a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngine.java
@@ -26,14 +26,14 @@ import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowDataSwapper;
+import org.apache.shardingsphere.infra.yaml.data.swapper.YamlShardingSphereRowStatisticsSwapper;
 import org.apache.shardingsphere.mode.metadata.persist.data.AlteredShardingSphereDatabaseData;
 import org.apache.shardingsphere.mode.lock.global.GlobalLockDefinition;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -96,7 +96,7 @@ public final class ShardingSphereStatisticsRefreshEngine {
                 ShardingSphereStatistics statistics = contextManager.getMetaDataContexts().getStatistics();
                 ShardingSphereMetaData metaData = contextManager.getMetaDataContexts().getMetaData();
                 ShardingSphereStatistics changedStatistics = new ShardingSphereStatistics();
-                for (Entry<String, ShardingSphereDatabaseData> entry : statistics.getDatabaseData().entrySet()) {
+                for (Entry<String, DatabaseStatistics> entry : statistics.getDatabaseStatisticsMap().entrySet()) {
                     if (metaData.containsDatabase(entry.getKey())) {
                         collectForDatabase(entry.getKey(), entry.getValue(), metaData, changedStatistics);
                     }
@@ -108,17 +108,17 @@ public final class ShardingSphereStatisticsRefreshEngine {
         }
     }
     
-    private void collectForDatabase(final String databaseName, final ShardingSphereDatabaseData databaseData, final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
-        for (Entry<String, ShardingSphereSchemaData> entry : databaseData.getSchemaData().entrySet()) {
+    private void collectForDatabase(final String databaseName, final DatabaseStatistics databaseStatistics, final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
+        for (Entry<String, SchemaStatistics> entry : databaseStatistics.getSchemaStatisticsMap().entrySet()) {
             if (metaData.getDatabase(databaseName).containsSchema(entry.getKey())) {
                 collectForSchema(databaseName, entry.getKey(), entry.getValue(), metaData, statistics);
             }
         }
     }
     
-    private void collectForSchema(final String databaseName, final String schemaName, final ShardingSphereSchemaData schemaData,
+    private void collectForSchema(final String databaseName, final String schemaName, final SchemaStatistics schemaStatistics,
                                   final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
-        for (Entry<String, ShardingSphereTableData> entry : schemaData.getTableData().entrySet()) {
+        for (Entry<String, TableStatistics> entry : schemaStatistics.getTableStatisticsMap().entrySet()) {
             if (metaData.getDatabase(databaseName).getSchema(schemaName).containsTable(entry.getKey())) {
                 collectForTable(databaseName, schemaName, metaData.getDatabase(databaseName).getSchema(schemaName).getTable(entry.getKey()), metaData, statistics);
             }
@@ -128,75 +128,75 @@ public final class ShardingSphereStatisticsRefreshEngine {
     private void collectForTable(final String databaseName, final String schemaName, final ShardingSphereTable table,
                                  final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) {
         Optional<ShardingSphereStatisticsCollector> statisticsCollector = TypedSPILoader.findService(ShardingSphereStatisticsCollector.class, table.getName());
-        Optional<ShardingSphereTableData> tableData = Optional.empty();
+        Optional<TableStatistics> tableStatistics = Optional.empty();
         if (statisticsCollector.isPresent()) {
             try {
-                tableData = statisticsCollector.get().collect(databaseName, table, metaData);
+                tableStatistics = statisticsCollector.get().collect(databaseName, table, metaData);
                 // CHECKSTYLE:OFF
             } catch (final Exception ex) {
                 // CHECKSTYLE:ON
                 log.error(String.format("Collect %s.%s.%s data failed", databaseName, schemaName, table.getName()), ex);
             }
         }
-        ShardingSphereDatabaseData databaseData = statistics.containsDatabase(databaseName) ? statistics.getDatabase(databaseName) : new ShardingSphereDatabaseData();
-        ShardingSphereSchemaData schemaData = databaseData.containsSchema(schemaName) ? databaseData.getSchema(schemaName) : new ShardingSphereSchemaData();
-        tableData.ifPresent(optional -> schemaData.putTable(table.getName(), optional));
-        databaseData.putSchema(schemaName, schemaData);
-        statistics.putDatabase(databaseName, databaseData);
+        DatabaseStatistics databaseStatistics = statistics.containsDatabaseStatistics(databaseName) ? statistics.getDatabaseStatistics(databaseName) : new DatabaseStatistics();
+        SchemaStatistics schemaStatistics = databaseStatistics.containsSchemaStatistics(schemaName) ? databaseStatistics.getSchemaStatistics(schemaName) : new SchemaStatistics();
+        tableStatistics.ifPresent(optional -> schemaStatistics.putTableStatistics(table.getName(), optional));
+        databaseStatistics.putSchemaStatistics(schemaName, schemaStatistics);
+        statistics.putDatabaseStatistics(databaseName, databaseStatistics);
     }
     
     private void compareAndUpdate(final ShardingSphereStatistics changedStatistics) {
         ShardingSphereMetaData metaData = contextManager.getMetaDataContexts().getMetaData();
         ShardingSphereStatistics statistics = contextManager.getMetaDataContexts().getStatistics();
-        for (Entry<String, ShardingSphereDatabaseData> entry : changedStatistics.getDatabaseData().entrySet()) {
-            compareAndUpdateForDatabase(entry.getKey(), statistics.getDatabase(entry.getKey()), entry.getValue(), statistics, metaData.getDatabase(entry.getKey()));
+        for (Entry<String, DatabaseStatistics> entry : changedStatistics.getDatabaseStatisticsMap().entrySet()) {
+            compareAndUpdateForDatabase(entry.getKey(), statistics.getDatabaseStatistics(entry.getKey()), entry.getValue(), statistics, metaData.getDatabase(entry.getKey()));
         }
-        for (Entry<String, ShardingSphereDatabaseData> entry : statistics.getDatabaseData().entrySet()) {
-            if (!changedStatistics.containsDatabase(entry.getKey())) {
-                statistics.dropDatabase(entry.getKey());
-                contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereDataPersistService().delete(entry.getKey());
+        for (Entry<String, DatabaseStatistics> entry : statistics.getDatabaseStatisticsMap().entrySet()) {
+            if (!changedStatistics.containsDatabaseStatistics(entry.getKey())) {
+                statistics.dropDatabaseStatistics(entry.getKey());
+                contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereStatisticsPersistService().delete(entry.getKey());
             }
         }
     }
     
-    private void compareAndUpdateForDatabase(final String databaseName, final ShardingSphereDatabaseData databaseData, final ShardingSphereDatabaseData changedDatabaseData,
+    private void compareAndUpdateForDatabase(final String databaseName, final DatabaseStatistics databaseStatistics, final DatabaseStatistics changedDatabaseStatistics,
                                              final ShardingSphereStatistics statistics, final ShardingSphereDatabase database) {
-        for (Entry<String, ShardingSphereSchemaData> entry : changedDatabaseData.getSchemaData().entrySet()) {
-            compareAndUpdateForSchema(databaseName, entry.getKey(), databaseData.getSchema(entry.getKey()), entry.getValue(), statistics, database.getSchema(entry.getKey()));
+        for (Entry<String, SchemaStatistics> entry : changedDatabaseStatistics.getSchemaStatisticsMap().entrySet()) {
+            compareAndUpdateForSchema(databaseName, entry.getKey(), databaseStatistics.getSchemaStatistics(entry.getKey()), entry.getValue(), statistics, database.getSchema(entry.getKey()));
         }
     }
     
-    private void compareAndUpdateForSchema(final String databaseName, final String schemaName, final ShardingSphereSchemaData schemaData,
-                                           final ShardingSphereSchemaData changedSchemaData, final ShardingSphereStatistics statistics, final ShardingSphereSchema schema) {
-        for (Entry<String, ShardingSphereTableData> entry : changedSchemaData.getTableData().entrySet()) {
-            compareAndUpdateForTable(databaseName, schemaName, schemaData.getTable(entry.getKey()), entry.getValue(), statistics, schema.getTable(entry.getKey()));
+    private void compareAndUpdateForSchema(final String databaseName, final String schemaName, final SchemaStatistics schemaStatistics,
+                                           final SchemaStatistics changedSchemaStatistics, final ShardingSphereStatistics statistics, final ShardingSphereSchema schema) {
+        for (Entry<String, TableStatistics> entry : changedSchemaStatistics.getTableStatisticsMap().entrySet()) {
+            compareAndUpdateForTable(databaseName, schemaName, schemaStatistics.getTableStatistics(entry.getKey()), entry.getValue(), statistics, schema.getTable(entry.getKey()));
         }
     }
     
-    private void compareAndUpdateForTable(final String databaseName, final String schemaName, final ShardingSphereTableData tableData,
-                                          final ShardingSphereTableData changedTableData, final ShardingSphereStatistics statistics, final ShardingSphereTable table) {
-        if (!tableData.equals(changedTableData)) {
-            statistics.getDatabase(databaseName).getSchema(schemaName).putTable(changedTableData.getName(), changedTableData);
-            AlteredShardingSphereDatabaseData alteredShardingSphereDatabaseData = createAlteredShardingSphereDatabaseData(databaseName, schemaName, tableData, changedTableData, table);
-            contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereDataPersistService().update(alteredShardingSphereDatabaseData);
+    private void compareAndUpdateForTable(final String databaseName, final String schemaName, final TableStatistics tableStatistics,
+                                          final TableStatistics changedTableStatistics, final ShardingSphereStatistics statistics, final ShardingSphereTable table) {
+        if (!tableStatistics.equals(changedTableStatistics)) {
+            statistics.getDatabaseStatistics(databaseName).getSchemaStatistics(schemaName).putTableStatistics(changedTableStatistics.getName(), changedTableStatistics);
+            AlteredShardingSphereDatabaseData alteredShardingSphereDatabaseData = createAlteredShardingSphereDatabaseData(databaseName, schemaName, tableStatistics, changedTableStatistics, table);
+            contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereStatisticsPersistService().update(alteredShardingSphereDatabaseData);
         }
     }
     
-    private AlteredShardingSphereDatabaseData createAlteredShardingSphereDatabaseData(final String databaseName, final String schemaName, final ShardingSphereTableData tableData,
-                                                                                      final ShardingSphereTableData changedTableData, final ShardingSphereTable table) {
-        AlteredShardingSphereDatabaseData result = new AlteredShardingSphereDatabaseData(databaseName, schemaName, tableData.getName());
-        Map<String, ShardingSphereRowData> tableDataMap = tableData.getRows().stream().collect(Collectors.toMap(ShardingSphereRowData::getUniqueKey, Function.identity()));
-        Map<String, ShardingSphereRowData> changedTableDataMap = changedTableData.getRows().stream().collect(Collectors.toMap(ShardingSphereRowData::getUniqueKey, Function.identity()));
-        YamlShardingSphereRowDataSwapper swapper = new YamlShardingSphereRowDataSwapper(new ArrayList<>(table.getAllColumns()));
-        for (Entry<String, ShardingSphereRowData> entry : changedTableDataMap.entrySet()) {
-            if (!tableDataMap.containsKey(entry.getKey())) {
+    private AlteredShardingSphereDatabaseData createAlteredShardingSphereDatabaseData(final String databaseName, final String schemaName, final TableStatistics tableStatistics,
+                                                                                      final TableStatistics changedTableStatistics, final ShardingSphereTable table) {
+        AlteredShardingSphereDatabaseData result = new AlteredShardingSphereDatabaseData(databaseName, schemaName, tableStatistics.getName());
+        Map<String, RowStatistics> tableStatisticsMap = tableStatistics.getRows().stream().collect(Collectors.toMap(RowStatistics::getUniqueKey, Function.identity()));
+        Map<String, RowStatistics> changedTableStatisticsMap = changedTableStatistics.getRows().stream().collect(Collectors.toMap(RowStatistics::getUniqueKey, Function.identity()));
+        YamlShardingSphereRowStatisticsSwapper swapper = new YamlShardingSphereRowStatisticsSwapper(new ArrayList<>(table.getAllColumns()));
+        for (Entry<String, RowStatistics> entry : changedTableStatisticsMap.entrySet()) {
+            if (!tableStatisticsMap.containsKey(entry.getKey())) {
                 result.getAddedRows().add(swapper.swapToYamlConfiguration(entry.getValue()));
-            } else if (!tableDataMap.get(entry.getKey()).equals(entry.getValue())) {
+            } else if (!tableStatisticsMap.get(entry.getKey()).equals(entry.getValue())) {
                 result.getUpdatedRows().add(swapper.swapToYamlConfiguration(entry.getValue()));
             }
         }
-        for (Entry<String, ShardingSphereRowData> entry : tableDataMap.entrySet()) {
-            if (!changedTableDataMap.containsKey(entry.getKey())) {
+        for (Entry<String, RowStatistics> entry : tableStatisticsMap.entrySet()) {
+            if (!changedTableStatisticsMap.containsKey(entry.getKey())) {
                 result.getDeletedRows().add(swapper.swapToYamlConfiguration(entry.getValue()));
             }
         }
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/StatisticsCollectorFixture.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/StatisticsCollectorFixture.java
index a4835a895e4..b05ea79f556 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/StatisticsCollectorFixture.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/fixture/StatisticsCollectorFixture.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.mode.fixture;
 
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.RowStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
 
 import java.sql.SQLException;
@@ -33,10 +33,10 @@ import java.util.Optional;
 public final class StatisticsCollectorFixture implements ShardingSphereStatisticsCollector {
     
     @Override
-    public Optional<ShardingSphereTableData> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
-        ShardingSphereTableData shardingSphereTableData = new ShardingSphereTableData("test_table");
-        shardingSphereTableData.getRows().add(new ShardingSphereRowData(Arrays.asList("1", "2")));
-        return Optional.of(shardingSphereTableData);
+    public Optional<TableStatistics> collect(final String databaseName, final ShardingSphereTable table, final ShardingSphereMetaData metaData) throws SQLException {
+        TableStatistics tableStatistics = new TableStatistics("test_table");
+        tableStatistics.getRows().add(new RowStatistics(Arrays.asList("1", "2")));
+        return Optional.of(tableStatistics);
     }
     
     @Override
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistServiceTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistServiceTest.java
similarity index 82%
rename from mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
rename to mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistServiceTest.java
index 51727128ca6..a11a8ebc0d5 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereDataPersistServiceTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/data/ShardingSphereStatisticsPersistServiceTest.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.mode.metadata.persist.data;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
 import org.apache.shardingsphere.mode.metadata.persist.service.metadata.table.TableRowDataPersistService;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
@@ -44,9 +44,9 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
-class ShardingSphereDataPersistServiceTest {
+class ShardingSphereStatisticsPersistServiceTest {
     
-    private ShardingSphereDataPersistService persistService;
+    private ShardingSphereStatisticsPersistService persistService;
     
     @Mock
     private PersistRepository repository;
@@ -56,13 +56,13 @@ class ShardingSphereDataPersistServiceTest {
     
     @BeforeEach
     void setUp() throws ReflectiveOperationException {
-        persistService = new ShardingSphereDataPersistService(repository);
-        Plugins.getMemberAccessor().set(ShardingSphereDataPersistService.class.getDeclaredField("tableRowDataPersistService"), persistService, tableRowDataPersistService);
+        persistService = new ShardingSphereStatisticsPersistService(repository);
+        Plugins.getMemberAccessor().set(ShardingSphereStatisticsPersistService.class.getDeclaredField("tableRowDataPersistService"), persistService, tableRowDataPersistService);
     }
     
     @Test
     void assertLoadWithEmptyDatabases() {
-        assertTrue(persistService.load(mock(ShardingSphereMetaData.class)).getDatabaseData().isEmpty());
+        assertTrue(persistService.load(mock(ShardingSphereMetaData.class)).getDatabaseStatisticsMap().isEmpty());
     }
     
     @Test
@@ -70,7 +70,7 @@ class ShardingSphereDataPersistServiceTest {
         when(repository.getChildrenKeys("/statistics/databases")).thenReturn(Arrays.asList("foo_db", "bar_db"));
         when(repository.getChildrenKeys("/statistics/databases/foo_db/schemas")).thenReturn(Collections.singletonList("foo_schema"));
         when(repository.getChildrenKeys("/statistics/databases/foo_db/schemas/foo_schema/tables")).thenReturn(Collections.singletonList("foo_tbl"));
-        assertFalse(persistService.load(mockMetaData()).getDatabaseData().isEmpty());
+        assertFalse(persistService.load(mockMetaData()).getDatabaseStatisticsMap().isEmpty());
     }
     
     private ShardingSphereMetaData mockMetaData() {
@@ -90,21 +90,21 @@ class ShardingSphereDataPersistServiceTest {
     void assertPersistWithEmptyTableData() {
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
         when(database.getName()).thenReturn("foo_db");
-        persistService.persist(database, "foo_schema", mock(ShardingSphereSchemaData.class));
+        persistService.persist(database, "foo_schema", mock(SchemaStatistics.class));
         verify(repository).persist("/statistics/databases/foo_db/schemas/foo_schema", "");
     }
     
     @Test
     void assertPersist() {
-        ShardingSphereSchemaData schemaData = mock(ShardingSphereSchemaData.class, RETURNS_DEEP_STUBS);
-        when(schemaData.getTableData().isEmpty()).thenReturn(false);
-        ShardingSphereTableData tableData = mock(ShardingSphereTableData.class);
-        when(tableData.getName()).thenReturn("foo_tbl");
-        when(schemaData.getTableData().values()).thenReturn(Collections.singleton(tableData));
+        SchemaStatistics schemaStatistics = mock(SchemaStatistics.class, RETURNS_DEEP_STUBS);
+        when(schemaStatistics.getTableStatisticsMap().isEmpty()).thenReturn(false);
+        TableStatistics tableStatistics = mock(TableStatistics.class);
+        when(tableStatistics.getName()).thenReturn("foo_tbl");
+        when(schemaStatistics.getTableStatisticsMap().values()).thenReturn(Collections.singleton(tableStatistics));
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
         when(database.getName()).thenReturn("foo_db");
         when(database.getSchema("foo_schema").getTable("foo_tbl").getAllColumns()).thenReturn(Collections.singleton(mock(ShardingSphereColumn.class)));
-        persistService.persist(database, "foo_schema", schemaData);
+        persistService.persist(database, "foo_schema", schemaStatistics);
         verify(tableRowDataPersistService).persist("foo_db", "foo_schema", "foo_tbl", Collections.emptyList());
     }
     
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistServiceTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistServiceTest.java
index 0cfc44e7d8c..164facae1d5 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistServiceTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/persist/service/metadata/table/TableRowDataPersistServiceTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.mode.metadata.persist.service.metadata.table;
 
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.infra.yaml.data.pojo.YamlShardingSphereRowData;
 import org.apache.shardingsphere.mode.spi.repository.PersistRepository;
 import org.junit.jupiter.api.BeforeEach;
@@ -77,7 +77,7 @@ class TableRowDataPersistServiceTest {
         when(repository.query("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl/foo_tbl")).thenReturn("uniqueKey: foo_key" + System.lineSeparator());
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(table.getName()).thenReturn("foo_tbl");
-        ShardingSphereTableData actual = persistService.load("foo_db", "foo_schema", table);
+        TableStatistics actual = persistService.load("foo_db", "foo_schema", table);
         assertThat(actual.getName(), is("foo_tbl"));
         assertThat(actual.getRows().size(), is(1));
         assertThat(actual.getRows().iterator().next().getUniqueKey(), is("foo_key"));
@@ -89,7 +89,7 @@ class TableRowDataPersistServiceTest {
         when(repository.query("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl/foo_tbl")).thenReturn("");
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(table.getName()).thenReturn("foo_tbl");
-        ShardingSphereTableData actual = persistService.load("foo_db", "foo_schema", table);
+        TableStatistics actual = persistService.load("foo_db", "foo_schema", table);
         assertThat(actual.getName(), is("foo_tbl"));
         assertTrue(actual.getRows().isEmpty());
     }
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngineTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngineTest.java
index 02b8937a081..13de2b05da4 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngineTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/ShardingSphereStatisticsRefreshEngineTest.java
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.statistics.DatabaseStatistics;
+import org.apache.shardingsphere.infra.metadata.statistics.SchemaStatistics;
 import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import org.apache.shardingsphere.infra.metadata.statistics.TableStatistics;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
 import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
@@ -60,17 +60,17 @@ class ShardingSphereStatisticsRefreshEngineTest {
                 PropertiesBuilder.build(new Property(TemporaryConfigurationPropertyKey.PROXY_META_DATA_COLLECTOR_ENABLED.getKey(), Boolean.TRUE.toString()))));
         when(contextManager.getComputeNodeInstanceContext().getLockContext().tryLock(any(), anyLong())).thenReturn(true);
         new ShardingSphereStatisticsRefreshEngine(contextManager).refresh();
-        verify(contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereDataPersistService()).update(any());
+        verify(contextManager.getPersistServiceFacade().getMetaDataPersistService().getShardingSphereStatisticsPersistService()).update(any());
     }
     
     private ShardingSphereStatistics mockStatistics() {
         ShardingSphereStatistics result = new ShardingSphereStatistics();
-        ShardingSphereDatabaseData databaseData = new ShardingSphereDatabaseData();
-        ShardingSphereSchemaData schemaData = new ShardingSphereSchemaData();
-        databaseData.getSchemaData().put("foo_schema", schemaData);
-        ShardingSphereTableData tableData = new ShardingSphereTableData("test_table");
-        schemaData.getTableData().put("test_table", tableData);
-        result.getDatabaseData().put("foo_db", databaseData);
+        DatabaseStatistics databaseStatistics = new DatabaseStatistics();
+        SchemaStatistics schemaStatistics = new SchemaStatistics();
+        databaseStatistics.getSchemaStatisticsMap().put("foo_schema", schemaStatistics);
+        TableStatistics tableStatistics = new TableStatistics("test_table");
+        schemaStatistics.getTableStatisticsMap().put("test_table", tableStatistics);
+        result.getDatabaseStatisticsMap().put("foo_db", databaseStatistics);
         return result;
     }
     
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandler.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandler.java
index ca5fc2c6fa4..eb3c28edc62 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandler.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandler.java
@@ -86,10 +86,10 @@ public final class ShardingSphereStatisticsChangedHandler implements DataChanged
         switch (type) {
             case ADDED:
             case UPDATED:
-                databaseManager.addShardingSphereDatabaseData(databaseName);
+                databaseManager.addDatabaseStatistics(databaseName);
                 return;
             case DELETED:
-                databaseManager.dropShardingSphereDatabaseData(databaseName);
+                databaseManager.dropDatabaseStatistics(databaseName);
                 return;
             default:
         }
@@ -99,10 +99,10 @@ public final class ShardingSphereStatisticsChangedHandler implements DataChanged
         switch (type) {
             case ADDED:
             case UPDATED:
-                databaseManager.addShardingSphereSchemaData(databaseName, schemaName);
+                databaseManager.addSchemaStatistics(databaseName, schemaName);
                 return;
             case DELETED:
-                databaseManager.dropShardingSphereSchemaData(databaseName, schemaName);
+                databaseManager.dropSchemaStatistics(databaseName, schemaName);
                 return;
             default:
         }
@@ -112,10 +112,10 @@ public final class ShardingSphereStatisticsChangedHandler implements DataChanged
         switch (type) {
             case ADDED:
             case UPDATED:
-                databaseManager.addShardingSphereTableData(databaseName, schemaName, tableName);
+                databaseManager.addTableStatistics(databaseName, schemaName, tableName);
                 return;
             case DELETED:
-                databaseManager.dropShardingSphereTableData(databaseName, schemaName, tableName);
+                databaseManager.dropTableStatistics(databaseName, schemaName, tableName);
                 return;
             default:
         }
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
index d1a43208e91..4721e0b89cc 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java
@@ -183,9 +183,9 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag
     }
     
     private void afterStorageUnitsAltered(final String databaseName, final MetaDataContexts originalMetaDataContexts, final MetaDataContexts reloadMetaDataContexts) {
-        Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
-                .ifPresent(optional -> optional.getSchemaData().forEach((schemaName, schemaData) -> metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName), schemaName, schemaData)));
+        Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseStatisticsMap().get(databaseName))
+                .ifPresent(optional -> optional.getSchemaStatisticsMap().forEach((schemaName, schemaStatistics) -> metaDataPersistService.getShardingSphereStatisticsPersistService()
+                        .persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName), schemaName, schemaStatistics)));
         metaDataPersistService.persistReloadDatabaseByAlter(databaseName, reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 originalMetaDataContexts.getMetaData().getDatabase(databaseName));
     }
@@ -193,9 +193,9 @@ public final class ClusterMetaDataManagerPersistService implements MetaDataManag
     private void afterStorageUnitsDropped(final String databaseName, final MetaDataContexts originalMetaDataContexts, final MetaDataContexts reloadMetaDataContexts) {
         reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getAllSchemas().forEach(each -> metaDataPersistService.getDatabaseMetaDataFacade()
                 .getSchema().alterByRuleDropped(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(), each));
-        Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
-                .ifPresent(optional -> optional.getSchemaData().forEach((schemaName, schemaData) -> metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName), schemaName, schemaData)));
+        Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseStatisticsMap().get(databaseName))
+                .ifPresent(optional -> optional.getSchemaStatisticsMap().forEach((schemaName, schemaStatistics) -> metaDataPersistService.getShardingSphereStatisticsPersistService()
+                        .persist(originalMetaDataContexts.getMetaData().getDatabase(databaseName), schemaName, schemaStatistics)));
         metaDataPersistService.persistReloadDatabaseByDrop(databaseName, reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
                 originalMetaDataContexts.getMetaData().getDatabase(databaseName));
     }
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandlerTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandlerTest.java
index 8f492b6eba4..c5fbb7ca07e 100644
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandlerTest.java
+++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/global/ShardingSphereStatisticsChangedHandlerTest.java
@@ -53,37 +53,37 @@ class ShardingSphereStatisticsChangedHandlerTest {
     @Test
     void assertHandleWithDatabaseAdded() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db", "", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addShardingSphereDatabaseData("foo_db");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addDatabaseStatistics("foo_db");
     }
     
     @Test
     void assertHandleWithDatabaseDeleted() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db", "", Type.DELETED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropShardingSphereDatabaseData("foo_db");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropDatabaseStatistics("foo_db");
     }
     
     @Test
     void assertHandleWithSchemaAdded() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas/foo_schema", "", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addShardingSphereSchemaData("foo_db", "foo_schema");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addSchemaStatistics("foo_db", "foo_schema");
     }
     
     @Test
     void assertHandleWithSchemaDeleted() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas/foo_schema", "", Type.DELETED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropShardingSphereSchemaData("foo_db", "foo_schema");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropSchemaStatistics("foo_db", "foo_schema");
     }
     
     @Test
     void assertHandleWithTableAdded() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl", "", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addShardingSphereTableData("foo_db", "foo_schema", "foo_tbl");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).addTableStatistics("foo_db", "foo_schema", "foo_tbl");
     }
     
     @Test
     void assertHandleWithTableDeleted() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas/foo_schema/tables/foo_tbl", "", Type.DELETED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropShardingSphereTableData("foo_db", "foo_schema", "foo_tbl");
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager()).dropTableStatistics("foo_db", "foo_schema", "foo_tbl");
     }
     
     @Test
@@ -103,19 +103,19 @@ class ShardingSphereStatisticsChangedHandlerTest {
     @Test
     void assertHandleWithMissedDatabaseNameEventKey() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases", "=", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addShardingSphereDatabaseData(any());
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addDatabaseStatistics(any());
     }
     
     @Test
     void assertHandleWithMissedSchemaNameEventKey() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas", "=", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addShardingSphereSchemaData(any(), any());
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addSchemaStatistics(any(), any());
     }
     
     @Test
     void assertHandleWithMissedTableNameEventKey() {
         handler.handle(contextManager, new DataChangedEvent("/statistics/databases/foo_db/schemas/foo_schema/tables", "", Type.ADDED));
-        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addShardingSphereTableData(any(), any(), any());
+        verify(contextManager.getMetaDataContextManager().getDatabaseManager(), times(0)).addTableStatistics(any(), any(), any());
     }
     
     @Test
diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java
index c34b27ff648..e3170755ffb 100644
--- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java
+++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java
@@ -145,7 +145,7 @@ public final class PipelineContextUtils {
                 new ShardingSphereColumn("status", Types.VARCHAR, false, false, false, true, false, false)),
                 Collections.emptyList(), Collections.emptyList()));
         tables.forEach(each -> old.getMetaData().getDatabase("logic_db").getSchema("logic_db").putTable(each));
-        return new MetaDataContexts(old.getMetaData(), ShardingSphereStatisticsFactory.create(old.getMetaData(), persistService.getShardingSphereDataPersistService().load(old.getMetaData())));
+        return new MetaDataContexts(old.getMetaData(), ShardingSphereStatisticsFactory.create(old.getMetaData(), persistService.getShardingSphereStatisticsPersistService().load(old.getMetaData())));
     }
     
     /**