You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/10/22 16:13:46 UTC

[shardingsphere] branch master updated: Change SINGLE TABLE RULE & RESOURCE to STORAGE UNIT DistSQL syntax #21671 #21672 (#21682)

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

jianglongtao 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 48e7a30ee2c Change  SINGLE TABLE RULE & RESOURCE to STORAGE UNIT DistSQL syntax #21671 #21672 (#21682)
48e7a30ee2c is described below

commit 48e7a30ee2cbb7c155c6ab94b89eea5b23227ef5
Author: jiangML <10...@qq.com>
AuthorDate: Sun Oct 23 00:13:38 2022 +0800

    Change  SINGLE TABLE RULE & RESOURCE to STORAGE UNIT DistSQL syntax #21671 #21672 (#21682)
    
    * Refactor single table DistSQL syntax #21672
    
    * Fix single table related DistSQL test errors
    
    * Refactor DistSQL about resources
    
    * fix bug & add doc
    
    * update doc of single table
    
    * remove extra blank lines
    
    * fix single table bug
    
    * improve test about single table
    
    * update doc
    
    * change resource-query.md to storage-unit-query.md
---
 .../api/advice/SQLParserEngineAdviceTest.java      |  8 +-
 distsql/parser/src/main/antlr4/imports/BaseRule.g4 |  4 +
 distsql/parser/src/main/antlr4/imports/Keyword.g4  | 28 +++++++
 .../parser/src/main/antlr4/imports/RDLStatement.g4 | 32 +++-----
 .../parser/src/main/antlr4/imports/RQLStatement.g4 | 16 ++--
 .../parser/autogen/KernelDistSQLStatement.g4       | 15 ++--
 .../core/kernel/KernelDistSQLStatementVisitor.java | 83 ++++++++-----------
 ...atement.java => AlterStorageUnitStatement.java} |  2 +-
 ...ment.java => RegisterStorageUnitStatement.java} |  2 +-
 ...SetDefaultSingleTableStorageUnitStatement.java} |  2 +-
 ...nt.java => UnregisterStorageUnitStatement.java} |  4 +-
 ...howDefaultSingleTableStorageUnitStatement.java} |  4 +-
 ...atement.java => ShowStorageUnitsStatement.java} |  6 +-
 .../distsql/syntax/rdl/resource-definition.cn.md   | 94 ----------------------
 .../distsql/syntax/rdl/resource-definition.en.md   | 94 ----------------------
 .../syntax/rdl/rule-definition/single-table.cn.md  | 21 ++---
 .../syntax/rdl/rule-definition/single-table.en.md  | 22 ++---
 .../syntax/rdl/storage-unit-definition.cn.md       | 94 ++++++++++++++++++++++
 .../syntax/rdl/storage-unit-definition.en.md       | 94 ++++++++++++++++++++++
 .../syntax/rql/rule-query/single-table.cn.md       | 29 ++++---
 .../syntax/rql/rule-query/single-table.en.md       | 30 +++----
 ...source-query.cn.md => storage-unit-query.cn.md} | 16 +++-
 ...source-query.en.md => storage-unit-query.en.md} | 17 +++-
 .../transaction/utils/AutoCommitUtilsTest.java     |  4 +-
 .../distsql/rdl/RDLBackendHandlerFactory.java      | 18 ++---
 .../rdl/resource/AddResourceBackendHandler.java    | 10 +--
 .../rdl/resource/AlterResourceBackendHandler.java  | 14 ++--
 .../rdl/resource/DropResourceBackendHandler.java   |  8 +-
 ...ultSingleTableStorageUnitStatementUpdater.java} | 27 +++----
 .../rql/resource/DataSourceQueryResultSet.java     | 61 +++++++++++++-
 .../rql/rule/SingleTableRulesQueryResultSet.java   | 10 +--
 ...here.infra.distsql.update.RuleDefinitionUpdater |  2 +-
 .../handler/ProxyBackendHandlerFactoryTest.java    |  2 +-
 .../distsql/DistSQLBackendHandlerFactoryTest.java  | 18 ++---
 .../distsql/rdl/RDLBackendHandlerFactoryTest.java  | 12 +--
 .../resource/AddResourceBackendHandlerTest.java    | 14 ++--
 .../resource/AlterResourceBackendHandlerTest.java  | 14 ++--
 .../resource/DropResourceBackendHandlerTest.java   | 34 ++++----
 .../CreateDefaultSingleTableRuleUpdaterTest.java   | 27 ++++---
 .../distsql/rql/DataSourceQueryResultSetTest.java  |  6 +-
 .../rql/SingleTableRulesQueryResultSetTest.java    |  3 +-
 .../rql/UnusedDataSourceQueryResultSetTest.java    | 11 +--
 .../command/query/PostgreSQLCommandTest.java       |  4 +-
 .../cases/migration/AbstractMigrationITCase.java   |  2 +-
 .../resources/env/common/migration-command.xml     |  2 +-
 .../cases/rdl/rdl-integration-test-cases.xml       | 18 ++---
 .../rql/dataset/db/show_single_table_rules.xml     |  4 +-
 .../show_single_table_rules.xml                    |  4 +-
 .../show_single_table_rules.xml                    |  4 +-
 .../dataset/encrypt/show_single_table_rules.xml    |  4 +-
 .../show_single_table_rules.xml                    |  4 +-
 .../show_single_table_rules.xml                    |  4 +-
 .../show_single_table_rules.xml                    |  4 +-
 .../mysql/show_single_table_rules.xml              |  4 +-
 .../rql/dataset/tbl/show_single_table_rules.xml    |  4 +-
 .../cases/rql/rql-integration-test-cases.xml       |  4 +-
 .../transaction/engine/base/BaseITCase.java        |  4 +-
 .../src/test/resources/env/common/command.xml      |  4 +-
 .../statement/distsql/rdl/RDLStatementAssert.java  | 18 ++---
 .../rdl/alter/AlterResourceStatementAssert.java    |  4 +-
 .../rdl/create/AddResourceStatementAssert.java     |  4 +-
 .../rdl/create/CreateRuleStatementAssert.java      |  6 +-
 ...reateDefaultSingleTableRuleStatementAssert.java |  4 +-
 .../rdl/drop/DropResourceStatementAssert.java      |  4 +-
 .../jaxb/cases/domain/SQLParserTestCases.java      | 14 ++--
 test/parser/src/main/resources/case/rql/show.xml   |  2 +-
 .../src/main/resources/sql/supported/rdl/alter.xml | 20 ++---
 .../main/resources/sql/supported/rdl/create.xml    | 22 ++---
 .../src/main/resources/sql/supported/rdl/drop.xml  |  9 +--
 .../src/main/resources/sql/supported/rql/show.xml  |  2 +-
 70 files changed, 622 insertions(+), 573 deletions(-)

diff --git a/agent/plugins/metrics/api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLParserEngineAdviceTest.java b/agent/plugins/metrics/api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLParserEngineAdviceTest.java
index 6e15fac49ee..f93ad00dcfb 100644
--- a/agent/plugins/metrics/api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLParserEngineAdviceTest.java
+++ b/agent/plugins/metrics/api/src/test/java/org/apache/shardingsphere/agent/metrics/api/advice/SQLParserEngineAdviceTest.java
@@ -21,8 +21,8 @@ import org.apache.shardingsphere.agent.api.result.MethodInvocationResult;
 import org.apache.shardingsphere.agent.metrics.api.MetricsPool;
 import org.apache.shardingsphere.agent.metrics.api.constant.MetricIds;
 import org.apache.shardingsphere.agent.metrics.api.fixture.FixtureWrapper;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.migration.distsql.statement.ShowMigrationListStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -88,12 +88,12 @@ public final class SQLParserEngineAdviceTest extends MetricsAdviceBaseTest {
     
     @Test
     public void assertParseRQL() {
-        assertParse(MetricIds.PARSE_DIST_SQL_RQL, new ShowResourcesStatement(new DatabaseSegment(0, 0, null)));
+        assertParse(MetricIds.PARSE_DIST_SQL_RQL, new ShowStorageUnitsStatement(new DatabaseSegment(0, 0, null), null));
     }
     
     @Test
     public void assertParseRDL() {
-        assertParse(MetricIds.PARSE_DIST_SQL_RDL, new AddResourceStatement(Collections.emptyList()));
+        assertParse(MetricIds.PARSE_DIST_SQL_RDL, new RegisterStorageUnitStatement(Collections.emptyList()));
     }
     
     @Test
diff --git a/distsql/parser/src/main/antlr4/imports/BaseRule.g4 b/distsql/parser/src/main/antlr4/imports/BaseRule.g4
index e186c42ed72..9f4e84f9bbc 100644
--- a/distsql/parser/src/main/antlr4/imports/BaseRule.g4
+++ b/distsql/parser/src/main/antlr4/imports/BaseRule.g4
@@ -54,3 +54,7 @@ tableName
 resourceName
     : IDENTIFIER
     ;
+
+storageUnitName
+    : IDENTIFIER
+    ;
diff --git a/distsql/parser/src/main/antlr4/imports/Keyword.g4 b/distsql/parser/src/main/antlr4/imports/Keyword.g4
index 0228da6f749..c4c5955cee5 100644
--- a/distsql/parser/src/main/antlr4/imports/Keyword.g4
+++ b/distsql/parser/src/main/antlr4/imports/Keyword.g4
@@ -311,6 +311,22 @@ STREAM_CHANNEL
     : S T R E A M UL_ C H A N N E L
     ;
 
+STORAGE
+    : S T O R A G E
+    ;
+
+UNIT
+    : U N I T
+    ;
+
+UNITS
+    : U N I T S
+    ;
+
+RANDOM
+    : R A N D O M
+    ;
+
 DIST
     : D I S T
     ;
@@ -318,3 +334,15 @@ DIST
 WHERE
     : W H E R E
     ;
+
+USAGE_COUNT
+    : U S A G E UL_ C O U N T
+    ;
+
+REGISTER
+    : R E G I S T E R
+    ;
+
+UNREGISTER
+    : U N R E G I S T E R
+    ;
diff --git a/distsql/parser/src/main/antlr4/imports/RDLStatement.g4 b/distsql/parser/src/main/antlr4/imports/RDLStatement.g4
index 3db883e896f..c36e74fc9e4 100644
--- a/distsql/parser/src/main/antlr4/imports/RDLStatement.g4
+++ b/distsql/parser/src/main/antlr4/imports/RDLStatement.g4
@@ -19,36 +19,24 @@ grammar RDLStatement;
 
 import BaseRule;
 
-addResource
-    : ADD RESOURCE resourceDefinition (COMMA resourceDefinition)*
+registerStorageUnit
+    : REGISTER STORAGE UNIT storageUnitDefinition (COMMA storageUnitDefinition)*
     ;
 
-alterResource
-    : ALTER RESOURCE resourceDefinition (COMMA resourceDefinition)*
+alterStorageUnit
+    : ALTER STORAGE UNIT storageUnitDefinition (COMMA storageUnitDefinition)*
     ;
 
-dropResource
-    : DROP RESOURCE ifExists? resourceName (COMMA resourceName)* ignoreSingleTables?
+unregisterStorageUnit
+    : UNREGISTER STORAGE UNIT ifExists? storageUnitName (COMMA storageUnitName)* ignoreSingleTables?
     ;
 
-createDefaultSingleTableRule
-    : CREATE DEFAULT SINGLE TABLE RULE RESOURCE EQ resourceName
+setDefaultSingleTableStorageUnit
+    : SET DEFAULT SINGLE TABLE STORAGE UNIT EQ (storageUnitName | RANDOM)
     ;
 
-alterDefaultSingleTableRule
-    : ALTER DEFAULT SINGLE TABLE RULE RESOURCE EQ resourceName
-    ;
-
-dropDefaultSingleTableRule
-    : DROP  DEFAULT SINGLE TABLE RULE ifExists?
-    ;
-
-resourceDefinition
-    : resourceName LP (simpleSource | urlSource) COMMA USER EQ user (COMMA PASSWORD EQ password)? (COMMA propertiesDefinition)? RP
-    ;
-
-resourceName
-    : IDENTIFIER
+storageUnitDefinition
+    : storageUnitName LP (simpleSource | urlSource) COMMA USER EQ user (COMMA PASSWORD EQ password)? (COMMA propertiesDefinition)? RP
     ;
 
 simpleSource
diff --git a/distsql/parser/src/main/antlr4/imports/RQLStatement.g4 b/distsql/parser/src/main/antlr4/imports/RQLStatement.g4
index f13bc642825..b9dea683ef4 100644
--- a/distsql/parser/src/main/antlr4/imports/RQLStatement.g4
+++ b/distsql/parser/src/main/antlr4/imports/RQLStatement.g4
@@ -19,16 +19,12 @@ grammar RQLStatement;
 
 import BaseRule;
 
-showResources
-    : SHOW DATABASE RESOURCES (FROM databaseName)?
+showStorageUnits
+    : SHOW STORAGE UNITS (FROM databaseName)? (WHERE USAGE_COUNT EQ usageCount)?
     ;
 
-showUnusedResources
-    : SHOW UNUSED DATABASE? RESOURCES (FROM databaseName)?
-    ;
-
-showSingleTableRules
-    : SHOW SINGLE TABLE RULES (FROM databaseName)?
+showDefaultSingleTableStorageUnit
+    : SHOW DEFAULT SINGLE TABLE STORAGE UNIT (FROM databaseName)?
     ;
 
 showSingleTable
@@ -42,3 +38,7 @@ showRulesUsedResource
 countSingleTableRule
     : COUNT SINGLE_TABLE RULE (FROM databaseName)?
     ;
+
+usageCount
+    : INT
+    ;
diff --git a/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4 b/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
index 8b06cf80755..b7ba74de6cf 100644
--- a/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
+++ b/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
@@ -20,11 +20,10 @@ grammar KernelDistSQLStatement;
 import Symbol, RALStatement, RDLStatement, RQLStatement;
 
 execute
-    : (addResource
-    | alterResource
-    | dropResource
-    | showResources
-    | showUnusedResources
+    : (registerStorageUnit
+    | alterStorageUnit
+    | unregisterStorageUnit
+    | showStorageUnits
     | setDistVariable
     | showDistVariable
     | showDistVariables
@@ -42,10 +41,8 @@ execute
     | applyDistSQL
     | discardDistSQL
     | showSingleTable
-    | showSingleTableRules
-    | createDefaultSingleTableRule
-    | alterDefaultSingleTableRule
-    | dropDefaultSingleTableRule
+    | showDefaultSingleTableStorageUnit
+    | setDefaultSingleTableStorageUnit
     | refreshTableMetadata
     | showTableMetadata
     | exportDatabaseConfiguration
diff --git a/distsql/parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java b/distsql/parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
index d056ac0c8c7..108d74841a6 100644
--- a/distsql/parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
+++ b/distsql/parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
@@ -20,24 +20,19 @@ package org.apache.shardingsphere.distsql.parser.core.kernel;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementBaseVisitor;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AddResourceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlgorithmDefinitionContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterDefaultSingleTableRuleContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterInstanceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterMigrationProcessConfigurationContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterResourceContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ApplyDistSQLContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.BatchSizeContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ClearHintContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ConvertYamlConfigurationContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.CountSingleTableRuleContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.CreateDefaultSingleTableRuleContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.CreateMigrationProcessConfigurationContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DatabaseNameContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DisableInstanceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DiscardDistSQLContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DropDefaultSingleTableRuleContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DropResourceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.EnableInstanceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ExportDatabaseConfigurationContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.FromSegmentContext;
@@ -52,23 +47,25 @@ import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementPa
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RateLimiterContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ReadDefinitionContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RefreshTableMetadataContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ResourceDefinitionContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RegisterStorageUnitContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.SetDefaultSingleTableStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.SetDistVariableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShardingSizeContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDefaultSingleTableStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDistVariableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDistVariablesContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowInstanceInfoContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowInstanceListContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowMigrationProcessConfigurationContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowModeInfoContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowResourcesContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowRulesUsedResourceContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowSingleTableContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowSingleTableRulesContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowStorageUnitsContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowTableMetadataContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowUnusedResourcesContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.StorageUnitDefinitionContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.StreamChannelContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.UnlabelInstanceContext;
+import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.UnregisterStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.WorkerThreadContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.WriteDefinitionContext;
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
@@ -80,13 +77,13 @@ import org.apache.shardingsphere.distsql.parser.segment.URLBasedDataSourceSegmen
 import org.apache.shardingsphere.distsql.parser.statement.ral.hint.ClearHintStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ConvertYamlConfigurationStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ExportDatabaseConfigurationStatement;
+import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowDistVariableStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowDistVariablesStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowInstanceInfoStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowInstanceListStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowMigrationProcessConfigurationStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowModeInfoStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowTableMetadataStatement;
-import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ShowDistVariableStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.AlterInstanceStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.AlterInventoryIncrementalProcessConfigurationStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.ApplyDistSQLStatement;
@@ -100,18 +97,15 @@ import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.RefreshT
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetDistVariableStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetInstanceStatusStatement;
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlabelInstanceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterDefaultSingleTableRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateDefaultSingleTableRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropDefaultSingleTableRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.CountSingleTableRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesUsedResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowUnusedResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
@@ -127,13 +121,13 @@ import java.util.stream.Collectors;
 public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementBaseVisitor<ASTNode> implements SQLVisitor {
     
     @Override
-    public ASTNode visitAddResource(final AddResourceContext ctx) {
-        return new AddResourceStatement(ctx.resourceDefinition().stream().map(each -> (DataSourceSegment) visit(each)).collect(Collectors.toList()));
+    public ASTNode visitRegisterStorageUnit(final RegisterStorageUnitContext ctx) {
+        return new RegisterStorageUnitStatement(ctx.storageUnitDefinition().stream().map(each -> (DataSourceSegment) visit(each)).collect(Collectors.toList()));
     }
     
     @Override
-    public ASTNode visitAlterResource(final AlterResourceContext ctx) {
-        return new AlterResourceStatement(ctx.resourceDefinition().stream().map(each -> (DataSourceSegment) visit(each)).collect(Collectors.toList()));
+    public ASTNode visitAlterStorageUnit(final AlterStorageUnitContext ctx) {
+        return new AlterStorageUnitStatement(ctx.storageUnitDefinition().stream().map(each -> (DataSourceSegment) visit(each)).collect(Collectors.toList()));
     }
     
     @Override
@@ -143,16 +137,16 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
     }
     
     @Override
-    public ASTNode visitResourceDefinition(final ResourceDefinitionContext ctx) {
+    public ASTNode visitStorageUnitDefinition(final StorageUnitDefinitionContext ctx) {
         String user = getIdentifierValue(ctx.user());
         String password = null == ctx.password() ? "" : getPassword(ctx.password());
         Properties props = getProperties(ctx.propertiesDefinition());
         DataSourceSegment result = null;
         if (null != ctx.urlSource()) {
-            result = new URLBasedDataSourceSegment(getIdentifierValue(ctx.resourceName()), getIdentifierValue(ctx.urlSource().url()), user, password, props);
+            result = new URLBasedDataSourceSegment(getIdentifierValue(ctx.storageUnitName()), getIdentifierValue(ctx.urlSource().url()), user, password, props);
         }
         if (null != ctx.simpleSource()) {
-            result = new HostnameAndPortBasedDataSourceSegment(getIdentifierValue(ctx.resourceName()), getIdentifierValue(ctx.simpleSource().hostname()), ctx.simpleSource().port().getText(),
+            result = new HostnameAndPortBasedDataSourceSegment(getIdentifierValue(ctx.storageUnitName()), getIdentifierValue(ctx.simpleSource().hostname()), ctx.simpleSource().port().getText(),
                     getIdentifierValue(ctx.simpleSource().dbName()), user, password, props);
         }
         return result;
@@ -214,18 +208,8 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
     }
     
     @Override
-    public ASTNode visitCreateDefaultSingleTableRule(final CreateDefaultSingleTableRuleContext ctx) {
-        return new CreateDefaultSingleTableRuleStatement(getIdentifierValue(ctx.resourceName()));
-    }
-    
-    @Override
-    public ASTNode visitAlterDefaultSingleTableRule(final AlterDefaultSingleTableRuleContext ctx) {
-        return new AlterDefaultSingleTableRuleStatement(getIdentifierValue(ctx.resourceName()));
-    }
-    
-    @Override
-    public ASTNode visitDropDefaultSingleTableRule(final DropDefaultSingleTableRuleContext ctx) {
-        return new DropDefaultSingleTableRuleStatement(null != ctx.ifExists());
+    public ASTNode visitSetDefaultSingleTableStorageUnit(final SetDefaultSingleTableStorageUnitContext ctx) {
+        return new SetDefaultSingleTableStorageUnitStatement(null == ctx.storageUnitName() ? null : getIdentifierValue(ctx.storageUnitName()));
     }
     
     private Properties getProperties(final PropertiesDefinitionContext ctx) {
@@ -240,20 +224,17 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
     }
     
     @Override
-    public ASTNode visitDropResource(final DropResourceContext ctx) {
+    public ASTNode visitUnregisterStorageUnit(final UnregisterStorageUnitContext ctx) {
         boolean ignoreSingleTables = null != ctx.ignoreSingleTables();
-        return new DropResourceStatement(ctx.ifExists() != null,
-                ctx.resourceName().stream().map(ParseTree::getText).map(each -> new IdentifierValue(each).getValue()).collect(Collectors.toList()), ignoreSingleTables);
-    }
-    
-    @Override
-    public ASTNode visitShowResources(final ShowResourcesContext ctx) {
-        return new ShowResourcesStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+        return new UnregisterStorageUnitStatement(ctx.ifExists() != null,
+                ctx.storageUnitName().stream().map(ParseTree::getText).map(each -> new IdentifierValue(each).getValue()).collect(Collectors.toList()), ignoreSingleTables);
     }
     
     @Override
-    public ASTNode visitShowUnusedResources(final ShowUnusedResourcesContext ctx) {
-        return new ShowUnusedResourcesStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+    public ASTNode visitShowStorageUnits(final ShowStorageUnitsContext ctx) {
+        DatabaseSegment database = null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName());
+        Integer usageCount = null == ctx.usageCount() ? null : Integer.parseInt(ctx.usageCount().getText());
+        return new ShowStorageUnitsStatement(database, usageCount);
     }
     
     @Override
@@ -267,8 +248,8 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
     }
     
     @Override
-    public ASTNode visitShowSingleTableRules(final ShowSingleTableRulesContext ctx) {
-        return new ShowSingleTableRulesStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+    public ASTNode visitShowDefaultSingleTableStorageUnit(final ShowDefaultSingleTableStorageUnitContext ctx) {
+        return new ShowDefaultSingleTableStorageUnitStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
     }
     
     @Override
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterResourceStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterStorageUnitStatement.java
similarity index 93%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterResourceStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterStorageUnitStatement.java
index 924376c0c13..a3a46f1e0a0 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterResourceStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/alter/AlterStorageUnitStatement.java
@@ -29,7 +29,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class AlterResourceStatement extends ResourceDefinitionStatement {
+public final class AlterStorageUnitStatement extends ResourceDefinitionStatement {
     
     private final Collection<DataSourceSegment> dataSources;
 }
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/AddResourceStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/RegisterStorageUnitStatement.java
similarity index 93%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/AddResourceStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/RegisterStorageUnitStatement.java
index 17b214ecb5d..84e73a17c6f 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/AddResourceStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/RegisterStorageUnitStatement.java
@@ -29,7 +29,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class AddResourceStatement extends ResourceDefinitionStatement {
+public final class RegisterStorageUnitStatement extends ResourceDefinitionStatement {
     
     private final Collection<DataSourceSegment> dataSources;
 }
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/CreateDefaultSingleTableRuleStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
similarity index 92%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/CreateDefaultSingleTableRuleStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
index 31c6e62372a..1699027c641 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/CreateDefaultSingleTableRuleStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
@@ -25,7 +25,7 @@ import lombok.RequiredArgsConstructor;
  */
 @RequiredArgsConstructor
 @Getter
-public final class CreateDefaultSingleTableRuleStatement extends CreateRuleStatement {
+public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
     
     private final String defaultResource;
 }
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropResourceStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/UnregisterStorageUnitStatement.java
similarity index 87%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropResourceStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/UnregisterStorageUnitStatement.java
index f4a0ce8fa71..7a8f83de6f4 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/DropResourceStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/drop/UnregisterStorageUnitStatement.java
@@ -28,7 +28,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class DropResourceStatement extends ResourceDefinitionStatement {
+public final class UnregisterStorageUnitStatement extends ResourceDefinitionStatement {
     
     private final boolean ifExists;
     
@@ -36,7 +36,7 @@ public final class DropResourceStatement extends ResourceDefinitionStatement {
     
     private final boolean ignoreSingleTables;
     
-    public DropResourceStatement(final Collection<String> names, final boolean ignoreSingleTables) {
+    public UnregisterStorageUnitStatement(final Collection<String> names, final boolean ignoreSingleTables) {
         this.ifExists = false;
         this.names = names;
         this.ignoreSingleTables = ignoreSingleTables;
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
similarity index 85%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
index 89fc97cfb66..28f62c1c45e 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
@@ -24,9 +24,9 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseS
  * Show single table rules statement.
  */
 @Getter
-public final class ShowSingleTableRulesStatement extends ShowRulesStatement {
+public final class ShowDefaultSingleTableStorageUnitStatement extends ShowRulesStatement {
     
-    public ShowSingleTableRulesStatement(final DatabaseSegment database) {
+    public ShowDefaultSingleTableStorageUnitStatement(final DatabaseSegment database) {
         super(database);
     }
 }
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowResourcesStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
similarity index 89%
rename from distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowResourcesStatement.java
rename to distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
index 57b7e67a48f..132e7221c37 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowResourcesStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.distsql.parser.statement.rql.show;
 
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
@@ -27,11 +28,14 @@ import java.util.Optional;
 /**
  * Show resources statement.
  */
+@Getter
 @RequiredArgsConstructor
-public final class ShowResourcesStatement extends RQLStatement implements FromDatabaseAvailable {
+public final class ShowStorageUnitsStatement extends RQLStatement implements FromDatabaseAvailable {
     
     private final DatabaseSegment database;
     
+    private final Integer usageCount;
+    
     @Override
     public Optional<DatabaseSegment> getDatabase() {
         return Optional.ofNullable(database);
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.cn.md
deleted file mode 100644
index 6112c03f451..00000000000
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.cn.md
+++ /dev/null
@@ -1,94 +0,0 @@
-+++
-title = "资源定义"
-weight = 1
-+++
-
-## 语法说明
-
-```sql
-ADD RESOURCE resourceDefinition [, resourceDefinition] ...
-
-ALTER RESOURCE resourceDefinition [, resourceDefinition] ...
-    
-DROP RESOURCE resourceName [, resourceName] ... [ignore single tables]
-
-resourceDefinition:
-    simpleSource | urlSource
-
-simpleSource:
-    resourceName(HOST=hostname,PORT=port,DB=dbName,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
-
-urlSource:
-    resourceName(URL=url,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
-
-property:
-    key=value
-```
-
-### 参数解释
-
-| 名称          | 数据类型    | 说明       |
-|:-------------|:-----------|:-----------|
-| resourceName | IDENTIFIER | 资源名称    |
-| hostname     | STRING     | 数据源地址  |
-| port         | INT        | 数据源端口  |
-| dbName       | STRING     | 物理库名称  |
-| url          | STRING     | URL 地址   |
-| user         | STRING     | 用户名     |
-| password     | STRING     | 密码       |
-
-### 注意事项
-
-- 添加资源前请确认已经创建分布式数据库,并执行 `use` 命令成功选择一个数据库;
-- 确认将要添加或修改的资源是可以正常连接的, 否则将不能操作成功;
-- 不允许重复的 `resourceName`;
-- `PROPERTIES` 用于自定义连接池参数,`key` 和 `value` 均为 STRING 类型;
-- `ALTER RESOURCE` 修改资源时不允许改变该资源关联的真实数据源;
-- `ALTER RESOURCE` 修改资源时会发生连接池的切换,此操作可能对进行中的业务造成影响,请谨慎使用;
-- `DROP RESOURCE` 只会删除逻辑资源,不会删除真实的数据源;
-- 被规则引用的资源将无法被删除;
-- 若资源只被 `single table rule` 引用,且用户确认可以忽略该限制,则可以添加可选参数 `ignore single tables` 进行强制删除。
-
-## 示例
-
-```sql
-ADD RESOURCE resource_0 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db0",
-    USER="root",
-    PASSWORD="root"
-),resource_1 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db1",
-    USER="root"
-),resource_2 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db2",
-    USER="root",
-    PROPERTIES("maximumPoolSize"="10")
-),resource_3 (
-    URL="jdbc:mysql://127.0.0.1:3306/db3?serverTimezone=UTC&useSSL=false",
-    USER="root",
-    PASSWORD="root",
-    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
-);
-
-ALTER RESOURCE resource_0 (
-    HOST="127.0.0.1",
-    PORT=3309,
-    DB="db0",
-    USER="root",
-    PASSWORD="root"
-),resource_1 (
-    URL="jdbc:mysql://127.0.0.1:3309/db1?serverTimezone=UTC&useSSL=false",
-    USER="root",
-    PASSWORD="root",
-    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
-);
-
-DROP RESOURCE resource_0, resource_1;
-DROP RESOURCE resource_2, resource_3 ignore single tables;
-```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.en.md
deleted file mode 100644
index 72111c4e9ac..00000000000
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/resource-definition.en.md
+++ /dev/null
@@ -1,94 +0,0 @@
-+++
-title = "Resource Definition"
-weight = 1
-+++
-
-## Syntax
-
-```sql
-ADD RESOURCE resourceDefinition [, resourceDefinition] ...
-
-ALTER RESOURCE resourceDefinition [, resourceDefinition] ...
-
-DROP RESOURCE resourceName [, resourceName] ... [ignore single tables]
-
-resourceDefinition:
-    simpleSource | urlSource
-
-simpleSource:
-    resourceName(HOST=hostname,PORT=port,DB=dbName,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
-
-urlSource:
-    resourceName(URL=url,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
-
-property:
-    key=value
-```
-
-### Parameters Explained
-
-| Name         | DataType   | Description   |
-|:-------------|:-----------|:--------------|
-| resourceName | IDENTIFIER | Resource name |
-| hostname     | STRING     | Host or IP    |
-| port         | INT        | Port          |
-| dbName       | STRING     | DB name       |
-| url          | STRING     | URL           |
-| user         | STRING     | username      |
-| password     | STRING     | password      |
-
-### Notes
-
-- Before adding resources, please confirm that a distributed database has been created, and execute the `use` command to successfully select a database;
-- Confirm that the resource to be added or altered can be connected, otherwise the operation will not be successful;
-- Duplicate `resourceName` is not allowed;
-- `PROPERTIES` is used to customize connection pool parameters, `key` and `value` are both STRING types;
-- `ALTER RESOURCE` is not allowed to change the real data source associated with this resource;
-- `ALTER RESOURCE` will switch the connection pool. This operation may affect the ongoing business, please use it with caution;
-- `DROP RESOURCE` will only delete logical resources, not real data sources;
-- Resources referenced by rules cannot be deleted;
-- If the resource is only referenced by `single table rule`, and the user confirms that the restriction can be ignored, the optional parameter `ignore single tables` can be added to perform forced deletion.
-
-## Example
-
-```sql
-ADD RESOURCE resource_0 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db0",
-    USER="root",
-    PASSWORD="root"
-),resource_1 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db1",
-    USER="root"
-),resource_2 (
-    HOST="127.0.0.1",
-    PORT=3306,
-    DB="db2",
-    USER="root",
-    PROPERTIES("maximumPoolSize"="10")
-),resource_3 (
-    URL="jdbc:mysql://127.0.0.1:3306/db3?serverTimezone=UTC&useSSL=false",
-    USER="root",
-    PASSWORD="root",
-    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
-);
-
-ALTER RESOURCE resource_0 (
-    HOST="127.0.0.1",
-    PORT=3309,
-    DB="db0",
-    USER="root",
-    PASSWORD="root"
-),resource_1 (
-    URL="jdbc:mysql://127.0.0.1:3309/db1?serverTimezone=UTC&useSSL=false",
-    USER="root",
-    PASSWORD="root",
-    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
-);
-
-DROP RESOURCE resource_0, resource_1;
-DROP RESOURCE resource_2, resource_3 ignore single tables;
-```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.cn.md
index 1bcac1b1aa0..f238b01d4f4 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.cn.md
@@ -6,26 +6,17 @@ weight = 2
 ## 定义
 
 ```sql
-CREATE DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+SET DEFAULT SINGLE TABLE storageUnitDefinition
 
-ALTER DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
-
-DROP DEFAULT SINGLE TABLE RULE
-
-singleTableRuleDefinition:
-    RESOURCE = resourceName
+storageUnitDefinition:
+    STORAGE UNIT = storageUnitName | RANDOM
 ```
-- `RESOURCE` 需使用 RDL 管理的数据源资源。
+- `STORAGE UNIT` 需使用 RDL 管理的存储单元。RANDOM 关键字代表随机存储。
 
 
 ## 示例
-
-### Single Table Rule
-
 ```sql
-CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0
-
-ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_1
+SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0
 
-DROP DEFAULT SINGLE TABLE RULE
+SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM
 ```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.en.md
index ed2e2399140..04ed501cfe4 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rule-definition/single-table.en.md
@@ -6,26 +6,16 @@ weight = 2
 ## Definition
 
 ```sql
-CREATE DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+SET DEFAULT SINGLE TABLE storageUnitDefinition
 
-ALTER DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
-
-DROP DEFAULT SINGLE TABLE RULE
-
-singleTableRuleDefinition:
-    RESOURCE = resourceName
+storageUnitDefinition:
+    STORAGE UNIT = storageUnitName | RANDOM
 ```
-- `RESOURCE` needs to use data source resource managed by RDL
-
+- `STORAGE UNIT` needs to use storage unit managed by RDL. The RANDOM keyword stands for random storage.
 
 ## Example
-
-### Single Table Rule
-
 ```sql
-CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0
-
-ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_1
+SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0
 
-DROP DEFAULT SINGLE TABLE RULE
+SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM
 ```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.cn.md
new file mode 100644
index 00000000000..03c82e1009c
--- /dev/null
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.cn.md
@@ -0,0 +1,94 @@
++++
+title = "存储单元定义"
+weight = 1
++++
+
+## 语法说明
+
+```sql
+REGISTER STORAGE UNIT storageUnitDefinition [, storageUnitDefinition] ...
+
+ALTER STORAGE UNIT storageUnitDefinition [, storageUnitDefinition] ...
+    
+UNREGISTER STORAGE UNIT storageUnitName [, storageUnitName] ... [ignore single tables]
+
+storageUnitDefinition:
+    simpleSource | urlSource
+
+simpleSource:
+    storageUnitName(HOST=hostname,PORT=port,DB=dbName,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
+
+urlSource:
+    storageUnitName(URL=url,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
+
+property:
+    key=value
+```
+
+### 参数解释
+
+| 名称                 | 数据类型    | 说明     |
+|:-------------------|:-----------|:-------|
+| storageUnitName    | IDENTIFIER | 存储单元名称 |
+| hostname           | STRING     | 数据源地址  |
+| port               | INT        | 数据源端口  |
+| dbName             | STRING     | 物理库名称  |
+| url                | STRING     | URL 地址 |
+| user               | STRING     | 用户名    |
+| password           | STRING     | 密码     |
+
+### 注意事项
+
+- 添加存储单元前请确认已经创建分布式数据库,并执行 `use` 命令成功选择一个数据库;
+- 确认将要添加或修改的存储单元是可以正常连接的, 否则将不能操作成功;
+- 不允许重复的 `storageUnitName`;
+- `PROPERTIES` 用于自定义连接池参数,`key` 和 `value` 均为 STRING 类型;
+- `ALTER STORAGE UNIT` 修改存储单元时不允许改变该存储单元关联的真实数据源;
+- `ALTER STORAGE UNIT` 修改存储单元时会发生连接池的切换,此操作可能对进行中的业务造成影响,请谨慎使用;
+- `UNREGISTER STORAGE UNIT` 只会删除逻辑存储单元,不会删除真实的数据源;
+- 被规则引用的存储单元将无法被删除;
+- 若存储单元只被 `single table rule` 引用,且用户确认可以忽略该限制,则可以添加可选参数 `ignore single tables` 进行强制删除。
+
+## 示例
+
+```sql
+REGISTER STORAGE UNIT su_0 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db0",
+    USER="root",
+    PASSWORD="root"
+),su_1 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db1",
+    USER="root"
+),su_2 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db2",
+    USER="root",
+    PROPERTIES("maximumPoolSize"="10")
+),su_3 (
+    URL="jdbc:mysql://127.0.0.1:3306/db3?serverTimezone=UTC&useSSL=false",
+    USER="root",
+    PASSWORD="root",
+    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
+);
+
+ALTER STORAGE UNIT su_0 (
+    HOST="127.0.0.1",
+    PORT=3309,
+    DB="db0",
+    USER="root",
+    PASSWORD="root"
+),su_1 (
+    URL="jdbc:mysql://127.0.0.1:3309/db1?serverTimezone=UTC&useSSL=false",
+    USER="root",
+    PASSWORD="root",
+    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
+);
+
+UNREGISTER STORAGE UNIT su_0, su_1;
+UNREGISTER STORAGE UNIT su_2, su_3 ignore single tables;
+```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.en.md
new file mode 100644
index 00000000000..363304cfb88
--- /dev/null
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition.en.md
@@ -0,0 +1,94 @@
++++
+title = "Storage Unit Definition"
+weight = 1
++++
+
+## Syntax
+
+```sql
+REGISTER STORAGE UNIT storageUnitDefinition [, storageUnitDefinition] ...
+
+ALTER STORAGE UNIT storageUnitDefinition [, storageUnitDefinition] ...
+
+UNREGISTER STORAGE UNIT storageUnitName [, storageUnitName] ... [ignore single tables]
+
+storageUnitDefinition:
+    simpleSource | urlSource
+
+simpleSource:
+    storageUnitName(HOST=hostname,PORT=port,DB=dbName,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
+
+urlSource:
+    storageUnitName(URL=url,USER=user [,PASSWORD=password] [,PROPERTIES(property [,property]) ...])
+
+property:
+    key=value
+```
+
+### Parameters Explained
+
+| Name             | DataType   | Description       |
+|:-----------------|:-----------|:------------------|
+| storageUnitName  | IDENTIFIER | Storage unit name |
+| hostname         | STRING     | Host or IP        |
+| port             | INT        | Port              |
+| dbName           | STRING     | DB name           |
+| url              | STRING     | URL               |
+| user             | STRING     | username          |
+| password         | STRING     | password          |
+
+### Notes
+
+- Before adding storage unit, please confirm that a distributed database has been created, and execute the `use` command to successfully select a database;
+- Confirm that the storage unit to be added or altered can be connected, otherwise the operation will not be successful;
+- Duplicate `storageUnitName` is not allowed;
+- `PROPERTIES` is used to customize connection pool parameters, `key` and `value` are both STRING types;
+- `ALTER RESOURCE` is not allowed to change the real data source associated with this storage unit;
+- `ALTER RESOURCE` will switch the connection pool. This operation may affect the ongoing business, please use it with caution;
+- `DROP RESOURCE` will only delete logical storage unit, not real data sources;
+- Storage unit referenced by rules cannot be deleted;
+- If the storage unit is only referenced by `single table rule`, and the user confirms that the restriction can be ignored, the optional parameter `ignore single tables` can be added to perform forced deletion.
+
+## Example
+
+```sql
+REGISTER STORAGE UNIT su_0 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db0",
+    USER="root",
+    PASSWORD="root"
+),su_1 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db1",
+    USER="root"
+),su_2 (
+    HOST="127.0.0.1",
+    PORT=3306,
+    DB="db2",
+    USER="root",
+    PROPERTIES("maximumPoolSize"="10")
+),su_3 (
+    URL="jdbc:mysql://127.0.0.1:3306/db3?serverTimezone=UTC&useSSL=false",
+    USER="root",
+    PASSWORD="root",
+    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
+);
+
+ALTER STORAGE UNIT su_0 (
+    HOST="127.0.0.1",
+    PORT=3309,
+    DB="db0",
+    USER="root",
+    PASSWORD="root"
+),su_1 (
+    URL="jdbc:mysql://127.0.0.1:3309/db1?serverTimezone=UTC&useSSL=false",
+    USER="root",
+    PASSWORD="root",
+    PROPERTIES("maximumPoolSize"="10","idleTimeout"="30000")
+);
+
+UNREGISTER STORAGE UNIT su_0, su_1;
+UNREGISTER STORAGE UNIT su_2, su_3 ignore single tables;
+```
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.cn.md
index 2db39631759..e6cacbccab4 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.cn.md
@@ -6,9 +6,9 @@ weight = 2
 ## 语法说明
 
 ```sql
-SHOW SINGLE TABLE (table | RULES) [FROM databaseName]
-
-SHOW SINGLE TABLES
+SHOW DEFAULT SINGLE TABLE STORAGE UNIT [FROM databaseName]
+    
+SHOW SINGLE (TABLES | table) [FROM databaseName]
 
 COUNT SINGLE_TABLE RULE [FROM databaseName]
 
@@ -18,12 +18,11 @@ table:
 
 ## 返回值说明
 
-### Single Table Rule
+### Single Table Storage Unit
 
-| 列            | 说明          |
-| ------------- | ------------ |
-| name          | 规则名称      |
-| resource_name | 数据源名称    |
+| 列                  | 说明      |
+|--------------------|---------|
+| storage_unit_name  | 存储单元名称  |
 
 ### Single Table
 
@@ -42,15 +41,15 @@ table:
 
 ## 示例
 
-*SHOW SINGLE TABLES RULES*
+*SHOW DEFAULT SINGLE TABLE STORAGE UNIT*
 
 ```sql
-sql> SHOW SINGLE TABLES RULES;
-+---------+---------------+
-| name    | resource_name |
-+---------+---------------+
-| default | ds_1          |
-+---------+---------------+
+sql> SHOW DEFAULT SINGLE TABLE STORAGE UNIT;
++-------------------+
+| storage_unit_name |
++-------------------+
+|  ds_0             |
++-------------------+
 1 row in set (0.01 sec)
 ```
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.en.md
index 4436f4e3844..87a511ab368 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/single-table.en.md
@@ -6,9 +6,9 @@ weight = 2
 ## Syntax
 
 ```sql
-SHOW SINGLE TABLE (table | RULES) [FROM databaseName]
-
-SHOW SINGLE TABLES
+SHOW DEFAULT SINGLE TABLE STORAGE UNIT [FROM databaseName]
+    
+SHOW SINGLE (TABLES | table) [FROM databaseName]
 
 COUNT SINGLE_TABLE RULE [FROM databaseName]
 
@@ -18,12 +18,12 @@ table:
 
 ## Return Value Description
 
-### Single Table Rule
+### Single Table Storage Unit
+
+| Column             | Description       |
+|--------------------|-------------------|
+| storage_unit_name  | Storage unit name |
 
-| Column        | Description      |
-| ------------- | ---------------- |
-| name          | Rule name        |
-| resource_name | Data source name |
 
 ### Single Table
 
@@ -42,15 +42,15 @@ table:
 
 ## Example
 
-*SHOW SINGLE TABLES RULES*
+*SHOW DEFAULT SINGLE TABLE STORAGE UNIT*
 
 ```sql
-sql>  SHOW SINGLE TABLES RULES;
-+---------+---------------+
-| name    | resource_name |
-+---------+---------------+
-| default | ds_1          |
-+---------+---------------+
+sql> SHOW DEFAULT SINGLE TABLE STORAGE UNIT;
++-------------------+
+| storage_unit_name |
++-------------------+
+|  ds_0             |
++-------------------+
 1 row in set (0.01 sec)
 ```
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.cn.md
similarity index 50%
rename from docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.cn.md
rename to docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.cn.md
index 22ec5c0bf3e..fdb853db99c 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.cn.md
@@ -1,12 +1,12 @@
 +++
-title = "资源查询"
+title = "存储单元查询"
 weight = 1
 +++
 
 ## 语法说明
 
 ```sql
-SHOW DATABASE RESOURCES [FROM databaseName]
+SHOW STORAGE UNITS [ [FROM databaseName] | [WHERE USAGE_COUNT = usageCount] ]
 ```
 
 ## 返回值说明
@@ -23,7 +23,17 @@ SHOW DATABASE RESOURCES [FROM databaseName]
 ## 示例
 
 ```sql
-mysql> SHOW DATABASE RESOURCES;
+mysql> SHOW STORAGE UNITS;
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| name | type  | host      | port | db   | connection_timeout_milliseconds | idle_timeout_milliseconds | max_lifetime_milliseconds | max_pool_size | min_pool_size | read_only | other_attributes                                                                                                                                                                                                                                                                                                            [...]
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| ds_0 | MySQL | 127.0.0.1 | 3306 | db_0 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
+| ds_1 | MySQL | 127.0.0.1 | 3306 | db_1 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+2 rows in set (0.84 sec)
+```
+```sql
+mysql> SHOW STORAGE UNITS FROM sharding_db;
 +------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
 | name | type  | host      | port | db   | connection_timeout_milliseconds | idle_timeout_milliseconds | max_lifetime_milliseconds | max_pool_size | min_pool_size | read_only | other_attributes                                                                                                                                                                                                                                                                                                            [...]
 +------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.en.md
similarity index 51%
rename from docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.en.md
rename to docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.en.md
index 48e42448753..9901ad1e98c 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/resource-query.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/storage-unit-query.en.md
@@ -1,12 +1,12 @@
 +++
-title = "Resource Query"
+title = "Storage Unit Query"
 weight = 1
 +++
 
 ## Syntax
 
 ```sql
-SHOW DATABASE RESOURCES [FROM databaseName]
+SHOW STORAGE UNITS [ [FROM databaseName] | [WHERE USAGE_COUNT = usageCount] ]
 ```
 
 ## Return Value Description
@@ -23,12 +23,21 @@ SHOW DATABASE RESOURCES [FROM databaseName]
 ## Example
 
 ```sql
-mysql> SHOW DATABASE RESOURCES;
+mysql> SHOW STORAGE UNITS;
 +------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
 | name | type  | host      | port | db   | connection_timeout_milliseconds | idle_timeout_milliseconds | max_lifetime_milliseconds | max_pool_size | min_pool_size | read_only | other_attributes                                                                                                                                                                                                                                                                                                            [...]
 +------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
 | ds_0 | MySQL | 127.0.0.1 | 3306 | db_0 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
 | ds_1 | MySQL | 127.0.0.1 | 3306 | db_1 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
 +------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
-2 rows in set (0.84 sec)
 ```
+```sql
+mysql> SHOW STORAGE UNITS FROM sharding_db;
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| name | type  | host      | port | db   | connection_timeout_milliseconds | idle_timeout_milliseconds | max_lifetime_milliseconds | max_pool_size | min_pool_size | read_only | other_attributes                                                                                                                                                                                                                                                                                                            [...]
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| ds_0 | MySQL | 127.0.0.1 | 3306 | db_0 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
+| ds_1 | MySQL | 127.0.0.1 | 3306 | db_1 | 30000                           | 60000                     | 1800000                   | 50             | 1             | false     | {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"8192","tinyInt1isBit":"false [...]
++------+-------+-----------+------+------+---------------------------------+---------------------------+---------------------------+---------------+---------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+2 rows in set (0.84 sec)
+```
\ No newline at end of file
diff --git a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/utils/AutoCommitUtilsTest.java b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/utils/AutoCommitUtilsTest.java
index fd6c384f7e9..b292d013884 100644
--- a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/utils/AutoCommitUtilsTest.java
+++ b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/utils/AutoCommitUtilsTest.java
@@ -21,7 +21,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.util.LinkedList;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableNameSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
@@ -49,6 +49,6 @@ public final class AutoCommitUtilsTest {
     
     @Test
     public void assertNeedOpenTransactionForOtherStatement() {
-        assertFalse(AutoCommitUtils.needOpenTransaction(new AddResourceStatement(new LinkedList<>())));
+        assertFalse(AutoCommitUtils.needOpenTransaction(new RegisterStorageUnitStatement(new LinkedList<>())));
     }
 }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
index e0ede2cd153..06413c31903 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
@@ -21,9 +21,9 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.RDLStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.RuleDefinitionStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AddResourceBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterResourceBackendHandler;
@@ -45,14 +45,14 @@ public final class RDLBackendHandlerFactory {
      * @return RDL backend handler
      */
     public static ProxyBackendHandler newInstance(final RDLStatement sqlStatement, final ConnectionSession connectionSession) {
-        if (sqlStatement instanceof AddResourceStatement) {
-            return new AddResourceBackendHandler((AddResourceStatement) sqlStatement, connectionSession);
+        if (sqlStatement instanceof RegisterStorageUnitStatement) {
+            return new AddResourceBackendHandler((RegisterStorageUnitStatement) sqlStatement, connectionSession);
         }
-        if (sqlStatement instanceof AlterResourceStatement) {
-            return new AlterResourceBackendHandler((AlterResourceStatement) sqlStatement, connectionSession);
+        if (sqlStatement instanceof AlterStorageUnitStatement) {
+            return new AlterResourceBackendHandler((AlterStorageUnitStatement) sqlStatement, connectionSession);
         }
-        if (sqlStatement instanceof DropResourceStatement) {
-            return new DropResourceBackendHandler((DropResourceStatement) sqlStatement, connectionSession);
+        if (sqlStatement instanceof UnregisterStorageUnitStatement) {
+            return new DropResourceBackendHandler((UnregisterStorageUnitStatement) sqlStatement, connectionSession);
         }
         return new RuleDefinitionBackendHandler<>((RuleDefinitionStatement) sqlStatement, connectionSession);
     }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
index 7e17ba3442c..a46e798ecaa 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesValidator;
@@ -45,20 +45,20 @@ import java.util.Map;
  * Add resource backend handler.
  */
 @Slf4j
-public final class AddResourceBackendHandler extends DatabaseRequiredBackendHandler<AddResourceStatement> {
+public final class AddResourceBackendHandler extends DatabaseRequiredBackendHandler<RegisterStorageUnitStatement> {
     
     private final DatabaseType databaseType;
     
     private final DataSourcePropertiesValidator validator;
     
-    public AddResourceBackendHandler(final AddResourceStatement sqlStatement, final ConnectionSession connectionSession) {
+    public AddResourceBackendHandler(final RegisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
         databaseType = connectionSession.getDatabaseType();
         validator = new DataSourcePropertiesValidator();
     }
     
     @Override
-    public ResponseHeader execute(final String databaseName, final AddResourceStatement sqlStatement) {
+    public ResponseHeader execute(final String databaseName, final RegisterStorageUnitStatement sqlStatement) {
         checkSQLStatement(databaseName, sqlStatement);
         Map<String, DataSourceProperties> dataSourcePropsMap = ResourceSegmentsConverter.convert(databaseType, sqlStatement.getDataSources());
         DatabaseType storeType = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getDatabaseType();
@@ -72,7 +72,7 @@ public final class AddResourceBackendHandler extends DatabaseRequiredBackendHand
         return new UpdateResponseHeader(sqlStatement);
     }
     
-    private void checkSQLStatement(final String databaseName, final AddResourceStatement sqlStatement) {
+    private void checkSQLStatement(final String databaseName, final RegisterStorageUnitStatement sqlStatement) {
         Collection<String> dataSourceNames = new ArrayList<>(sqlStatement.getDataSources().size());
         Collection<String> duplicateDataSourceNames = new HashSet<>(sqlStatement.getDataSources().size(), 1);
         for (DataSourceSegment each : sqlStatement.getDataSources()) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
index 2708a44fb8c..6081e10bb7a 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
@@ -21,7 +21,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.HostnameAndPortBasedDataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.URLBasedDataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
 import org.apache.shardingsphere.infra.database.metadata.url.JdbcUrl;
 import org.apache.shardingsphere.infra.database.metadata.url.StandardJdbcUrlParser;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
@@ -52,20 +52,20 @@ import java.util.stream.Collectors;
  * Alter resource backend handler.
  */
 @Slf4j
-public final class AlterResourceBackendHandler extends DatabaseRequiredBackendHandler<AlterResourceStatement> {
+public final class AlterResourceBackendHandler extends DatabaseRequiredBackendHandler<AlterStorageUnitStatement> {
     
     private final DatabaseType databaseType;
     
     private final DataSourcePropertiesValidator validator;
     
-    public AlterResourceBackendHandler(final AlterResourceStatement sqlStatement, final ConnectionSession connectionSession) {
+    public AlterResourceBackendHandler(final AlterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
         databaseType = connectionSession.getDatabaseType();
         validator = new DataSourcePropertiesValidator();
     }
     
     @Override
-    public ResponseHeader execute(final String databaseName, final AlterResourceStatement sqlStatement) {
+    public ResponseHeader execute(final String databaseName, final AlterStorageUnitStatement sqlStatement) {
         checkSQLStatement(databaseName, sqlStatement);
         Map<String, DataSourceProperties> dataSourcePropsMap = ResourceSegmentsConverter.convert(databaseType, sqlStatement.getDataSources());
         validator.validate(dataSourcePropsMap, databaseType);
@@ -78,21 +78,21 @@ public final class AlterResourceBackendHandler extends DatabaseRequiredBackendHa
         return new UpdateResponseHeader(sqlStatement);
     }
     
-    private void checkSQLStatement(final String databaseName, final AlterResourceStatement sqlStatement) {
+    private void checkSQLStatement(final String databaseName, final AlterStorageUnitStatement sqlStatement) {
         Collection<String> toBeAlteredResourceNames = getToBeAlteredResourceNames(sqlStatement);
         checkToBeAlteredDuplicateResourceNames(toBeAlteredResourceNames);
         checkResourceNameExisted(databaseName, toBeAlteredResourceNames);
         checkDatabase(databaseName, sqlStatement);
     }
     
-    private void checkDatabase(final String databaseName, final AlterResourceStatement sqlStatement) {
+    private void checkDatabase(final String databaseName, final AlterStorageUnitStatement sqlStatement) {
         Map<String, DataSource> resources = ProxyContext.getInstance().getDatabase(databaseName).getResourceMetaData().getDataSources();
         Collection<String> invalid = sqlStatement.getDataSources().stream().collect(Collectors.toMap(DataSourceSegment::getName, each -> each)).entrySet().stream()
                 .filter(each -> !isIdenticalDatabase(each.getValue(), resources.get(each.getKey()))).map(Entry::getKey).collect(Collectors.toSet());
         ShardingSpherePreconditions.checkState(invalid.isEmpty(), () -> new InvalidResourcesException(Collections.singleton(String.format("Cannot alter the database of %s", invalid))));
     }
     
-    private Collection<String> getToBeAlteredResourceNames(final AlterResourceStatement sqlStatement) {
+    private Collection<String> getToBeAlteredResourceNames(final AlterStorageUnitStatement sqlStatement) {
         return sqlStatement.getDataSources().stream().map(DataSourceSegment::getName).collect(Collectors.toList());
     }
     
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java
index df02d1b9d8a..5e40d077da0 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.Multimap;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.distsql.exception.resource.InvalidResourcesException;
 import org.apache.shardingsphere.infra.distsql.exception.resource.MissingRequiredResourcesException;
@@ -49,14 +49,14 @@ import java.util.stream.Collectors;
  * Drop resource backend handler.
  */
 @Slf4j
-public final class DropResourceBackendHandler extends DatabaseRequiredBackendHandler<DropResourceStatement> {
+public final class DropResourceBackendHandler extends DatabaseRequiredBackendHandler<UnregisterStorageUnitStatement> {
     
-    public DropResourceBackendHandler(final DropResourceStatement sqlStatement, final ConnectionSession connectionSession) {
+    public DropResourceBackendHandler(final UnregisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
     }
     
     @Override
-    public ResponseHeader execute(final String databaseName, final DropResourceStatement sqlStatement) {
+    public ResponseHeader execute(final String databaseName, final UnregisterStorageUnitStatement sqlStatement) {
         Collection<String> toBeDroppedResourceNames = sqlStatement.getNames();
         check(databaseName, toBeDroppedResourceNames, sqlStatement.isIgnoreSingleTables(), sqlStatement.isIfExists());
         try {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleStatementUpdater.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
similarity index 63%
rename from proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleStatementUpdater.java
rename to proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
index da83e8c4999..e564df0154c 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleStatementUpdater.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
@@ -17,9 +17,9 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
 
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateDefaultSingleTableRuleStatement;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.distsql.exception.resource.MissingRequiredResourcesException;
-import org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
 import org.apache.shardingsphere.infra.distsql.update.RuleDefinitionCreateUpdater;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
@@ -31,28 +31,23 @@ import java.util.Collections;
 /**
  * Create default single table rule statement updater.
  */
-public final class CreateDefaultSingleTableRuleStatementUpdater implements RuleDefinitionCreateUpdater<CreateDefaultSingleTableRuleStatement, SingleTableRuleConfiguration> {
+public final class SetDefaultSingleTableStorageUnitStatementUpdater implements RuleDefinitionCreateUpdater<SetDefaultSingleTableStorageUnitStatement, SingleTableRuleConfiguration> {
     
     @Override
-    public void checkSQLStatement(final ShardingSphereDatabase database, final CreateDefaultSingleTableRuleStatement sqlStatement, final SingleTableRuleConfiguration currentRuleConfig) {
+    public void checkSQLStatement(final ShardingSphereDatabase database, final SetDefaultSingleTableStorageUnitStatement sqlStatement, final SingleTableRuleConfiguration currentRuleConfig) {
         checkResourceExist(database, sqlStatement);
-        checkDefaultResourceDuplicate(database.getName(), currentRuleConfig);
     }
     
-    private void checkResourceExist(final ShardingSphereDatabase database, final CreateDefaultSingleTableRuleStatement sqlStatement) {
-        Collection<String> resourceNames = database.getResourceMetaData().getDataSources().keySet();
-        ShardingSpherePreconditions.checkState(resourceNames.contains(sqlStatement.getDefaultResource()),
-                () -> new MissingRequiredResourcesException(database.getName(), Collections.singleton(sqlStatement.getDefaultResource())));
-    }
-    
-    private void checkDefaultResourceDuplicate(final String databaseName, final SingleTableRuleConfiguration currentRuleConfig) {
-        if (null != currentRuleConfig) {
-            ShardingSpherePreconditions.checkState(!currentRuleConfig.getDefaultDataSource().isPresent(), () -> new DuplicateRuleException("default single table rule", databaseName));
+    private void checkResourceExist(final ShardingSphereDatabase database, final SetDefaultSingleTableStorageUnitStatement sqlStatement) {
+        if (StringUtils.isNotBlank(sqlStatement.getDefaultResource())) {
+            Collection<String> resourceNames = database.getResourceMetaData().getDataSources().keySet();
+            ShardingSpherePreconditions.checkState(resourceNames.contains(sqlStatement.getDefaultResource()),
+                    () -> new MissingRequiredResourcesException(database.getName(), Collections.singleton(sqlStatement.getDefaultResource())));
         }
     }
     
     @Override
-    public SingleTableRuleConfiguration buildToBeCreatedRuleConfiguration(final CreateDefaultSingleTableRuleStatement sqlStatement) {
+    public SingleTableRuleConfiguration buildToBeCreatedRuleConfiguration(final SetDefaultSingleTableStorageUnitStatement sqlStatement) {
         SingleTableRuleConfiguration result = new SingleTableRuleConfiguration();
         result.setDefaultDataSource(sqlStatement.getDefaultResource());
         return result;
@@ -70,6 +65,6 @@ public final class CreateDefaultSingleTableRuleStatementUpdater implements RuleD
     
     @Override
     public String getType() {
-        return CreateDefaultSingleTableRuleStatement.class.getName();
+        return SetDefaultSingleTableStorageUnitStatement.class.getName();
     }
 }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
index c9d5b9eb027..65007bc3942 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
@@ -17,24 +17,34 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource;
 
+import com.google.common.collect.LinkedListMultimap;
+import com.google.common.collect.Multimap;
 import com.google.gson.Gson;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
+import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
 import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
+import org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import javax.sql.DataSource;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * Query result set for show data source.
@@ -63,12 +73,55 @@ public final class DataSourceQueryResultSet implements DatabaseDistSQLResultSet
     public void init(final ShardingSphereDatabase database, final SQLStatement sqlStatement) {
         resourceMetaData = database.getResourceMetaData();
         dataSourcePropsMap = new LinkedHashMap<>(database.getResourceMetaData().getDataSources().size(), 1);
-        for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
-            dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
+        Integer usageCount = ((ShowStorageUnitsStatement) sqlStatement).getUsageCount();
+        if (null == usageCount) {
+            for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
+                dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
+            }
+        } else {
+            Multimap<String, String> inUsedMultiMap = getInUsedResources(database.getRuleMetaData());
+            for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
+                Integer currentUsageCount = inUsedMultiMap.containsKey(entry.getKey()) ? inUsedMultiMap.get(entry.getKey()).size() : 0;
+                if (currentUsageCount != usageCount) {
+                    continue;
+                }
+                dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
+            }
         }
         dataSourceNames = dataSourcePropsMap.keySet().iterator();
     }
     
+    private Multimap<String, String> getInUsedResources(final ShardingSphereRuleMetaData ruleMetaData) {
+        Multimap<String, String> result = LinkedListMultimap.create();
+        for (ShardingSphereRule each : ruleMetaData.getRules()) {
+            if (each instanceof DataSourceContainedRule) {
+                Collection<String> inUsedResourceNames = getInUsedResourceNames((DataSourceContainedRule) each);
+                inUsedResourceNames.forEach(eachResource -> result.put(eachResource, each.getType()));
+            }
+            if (each instanceof DataNodeContainedRule) {
+                Collection<String> inUsedResourceNames = getInUsedResourceNames((DataNodeContainedRule) each);
+                inUsedResourceNames.forEach(eachResource -> result.put(eachResource, each.getType()));
+            }
+        }
+        return result;
+    }
+    
+    private Collection<String> getInUsedResourceNames(final DataSourceContainedRule rule) {
+        Set<String> result = new HashSet<>();
+        for (Collection<String> each : rule.getDataSourceMapper().values()) {
+            result.addAll(each);
+        }
+        return result;
+    }
+    
+    private Collection<String> getInUsedResourceNames(final DataNodeContainedRule rule) {
+        Set<String> result = new HashSet<>();
+        for (Collection<DataNode> each : rule.getAllDataNodes().values()) {
+            result.addAll(each.stream().map(DataNode::getDataSourceName).collect(Collectors.toSet()));
+        }
+        return result;
+    }
+    
     @Override
     public Collection<String> getColumnNames() {
         return Arrays.asList("name", "type", "host", "port", "db", "connection_timeout_milliseconds", "idle_timeout_milliseconds",
@@ -112,6 +165,6 @@ public final class DataSourceQueryResultSet implements DatabaseDistSQLResultSet
     
     @Override
     public String getType() {
-        return ShowResourcesStatement.class.getName();
+        return ShowStorageUnitsStatement.class.getName();
     }
 }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/SingleTableRulesQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/SingleTableRulesQueryResultSet.java
index 5d7164e184e..09240c8b643 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/SingleTableRulesQueryResultSet.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/SingleTableRulesQueryResultSet.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
 
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.singletable.rule.SingleTableRule;
@@ -38,12 +38,12 @@ public final class SingleTableRulesQueryResultSet implements DatabaseDistSQLResu
     @Override
     public void init(final ShardingSphereDatabase database, final SQLStatement sqlStatement) {
         SingleTableRule rule = database.getRuleMetaData().getSingleRule(SingleTableRule.class);
-        rule.getConfiguration().getDefaultDataSource().ifPresent(optional -> data = Collections.singleton(optional).iterator());
+        data = Collections.singleton(rule.getConfiguration().getDefaultDataSource().orElse("RANDOM")).iterator();
     }
     
     @Override
     public Collection<String> getColumnNames() {
-        return Arrays.asList("name", "resource_name");
+        return Arrays.asList("storage_unit_name");
     }
     
     @Override
@@ -53,11 +53,11 @@ public final class SingleTableRulesQueryResultSet implements DatabaseDistSQLResu
     
     @Override
     public Collection<Object> getRowData() {
-        return Arrays.asList("default", data.next());
+        return Arrays.asList(data.next());
     }
     
     @Override
     public String getType() {
-        return ShowSingleTableRulesStatement.class.getName();
+        return ShowDefaultSingleTableStorageUnitStatement.class.getName();
     }
 }
diff --git a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
index ba9ff24ed67..9b6bd62ab84 100644
--- a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
+++ b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.update.RuleDefinitionUpdater
@@ -15,7 +15,7 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.CreateDefaultSingleTableRuleStatementUpdater
+org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.SetDefaultSingleTableStorageUnitStatementUpdater
 org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.AlterDefaultSingleTableRuleStatementUpdater
 org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.DropDefaultSingleTableRuleStatementUpdater
 
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index 4e88f8fb252..f55fe70e9fe 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -259,7 +259,7 @@ public final class ProxyBackendHandlerFactoryTest extends ProxyContextRestorer {
     @Test
     public void assertUnsupportedRQLStatementInTransaction() throws SQLException {
         when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
-        String sql = "SHOW SINGLE TABLE RULES";
+        String sql = "SHOW DEFAULT SINGLE TABLE STORAGE UNIT";
         ProxyBackendHandler actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession);
         assertThat(actual, instanceOf(RQLBackendHandler.class));
     }
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index e5951f0a61d..8e9b5baabd6 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql;
 
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowUnusedResourcesStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
@@ -100,7 +100,7 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
     @Test
     public void assertExecuteDataSourcesContext() throws SQLException {
         setContextManager(true);
-        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AddResourceStatement.class), connectionSession).execute();
+        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), connectionSession).execute();
         assertThat(response, instanceOf(UpdateResponseHeader.class));
     }
     
@@ -116,14 +116,14 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
     @Test
     public void assertExecuteAddResourceContext() throws SQLException {
         setContextManager(true);
-        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AddResourceStatement.class), connectionSession).execute();
+        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), connectionSession).execute();
         assertThat(response, instanceOf(UpdateResponseHeader.class));
     }
     
     @Test
     public void assertExecuteAlterResourceContext() throws SQLException {
         setContextManager(true);
-        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AlterResourceStatement.class), connectionSession).execute();
+        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), connectionSession).execute();
         assertThat(response, instanceOf(UpdateResponseHeader.class));
     }
     
@@ -194,7 +194,7 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
     @Test
     public void assertExecuteDropResourceContext() throws SQLException {
         setContextManager(true);
-        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(DropResourceStatement.class), connectionSession).execute();
+        ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), connectionSession).execute();
         assertThat(response, instanceOf(UpdateResponseHeader.class));
     }
     
@@ -222,7 +222,7 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
     @Test
     public void assertExecuteShowResourceContext() throws SQLException {
         setContextManager(true);
-        ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowResourcesStatement.class), connectionSession).execute();
+        ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowStorageUnitsStatement.class), connectionSession).execute();
         assertThat(response, instanceOf(QueryResponseHeader.class));
     }
     
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
index 2786c22aeb5..d5190365fae 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
@@ -18,9 +18,9 @@
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl;
 
 import org.apache.shardingsphere.distsql.parser.statement.rdl.RuleDefinitionStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AddResourceBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterResourceBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.DropResourceBackendHandler;
@@ -36,17 +36,17 @@ public final class RDLBackendHandlerFactoryTest {
     
     @Test
     public void assertNewInstanceWithAddResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(AddResourceStatement.class), mock(ConnectionSession.class)), instanceOf(AddResourceBackendHandler.class));
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(AddResourceBackendHandler.class));
     }
     
     @Test
     public void assertNewInstanceWithAlterResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterResourceStatement.class), mock(ConnectionSession.class)), instanceOf(AlterResourceBackendHandler.class));
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(AlterResourceBackendHandler.class));
     }
     
     @Test
     public void assertNewInstanceWithDropResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(DropResourceStatement.class), mock(ConnectionSession.class)), instanceOf(DropResourceBackendHandler.class));
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(DropResourceBackendHandler.class));
     }
     
     @Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
index 03a5e526aac..12f3459370f 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.HostnameAndPortBasedDataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.URLBasedDataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesValidator;
 import org.apache.shardingsphere.infra.distsql.exception.resource.DuplicateResourceException;
@@ -59,7 +59,7 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
     private DataSourcePropertiesValidator validator;
     
     @Mock
-    private AddResourceStatement addResourceStatement;
+    private RegisterStorageUnitStatement registerStorageUnitStatement;
     
     @Mock
     private ConnectionSession connectionSession;
@@ -80,7 +80,7 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
         when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
         when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
         when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
-        addResourceBackendHandler = new AddResourceBackendHandler(addResourceStatement, connectionSession);
+        addResourceBackendHandler = new AddResourceBackendHandler(registerStorageUnitStatement, connectionSession);
         Field field = addResourceBackendHandler.getClass().getDeclaredField("validator");
         field.setAccessible(true);
         field.set(addResourceBackendHandler, validator);
@@ -109,14 +109,14 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
         addResourceBackendHandler.execute("test_db", createAlterResourceStatementWithDuplicateResourceNames());
     }
     
-    private AddResourceStatement createAddResourceStatement() {
-        return new AddResourceStatement(Collections.singleton(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/test0", "root", "", new Properties())));
+    private RegisterStorageUnitStatement createAddResourceStatement() {
+        return new RegisterStorageUnitStatement(Collections.singleton(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/test0", "root", "", new Properties())));
     }
     
-    private AddResourceStatement createAlterResourceStatementWithDuplicateResourceNames() {
+    private RegisterStorageUnitStatement createAlterResourceStatementWithDuplicateResourceNames() {
         Collection<DataSourceSegment> result = new LinkedList<>();
         result.add(new HostnameAndPortBasedDataSourceSegment("ds_0", "127.0.0.1", "3306", "ds_0", "root", "", new Properties()));
         result.add(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/ds_1", "root", "", new Properties()));
-        return new AddResourceStatement(result);
+        return new RegisterStorageUnitStatement(result);
     }
 }
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
index a4a8476694d..fb341f0402b 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
@@ -21,7 +21,7 @@ import com.zaxxer.hikari.HikariDataSource;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.HostnameAndPortBasedDataSourceSegment;
 import org.apache.shardingsphere.distsql.parser.segment.URLBasedDataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesValidator;
 import org.apache.shardingsphere.infra.distsql.exception.resource.DuplicateResourceException;
@@ -63,7 +63,7 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
     private DataSourcePropertiesValidator validator;
     
     @Mock
-    private AlterResourceStatement alterResourceStatement;
+    private AlterStorageUnitStatement alterStorageUnitStatement;
     
     @Mock
     private ConnectionSession connectionSession;
@@ -87,7 +87,7 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
         when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
         when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
         when(connectionSession.getDatabaseType()).thenReturn(new MySQLDatabaseType());
-        alterResourceBackendHandler = new AlterResourceBackendHandler(alterResourceStatement, connectionSession);
+        alterResourceBackendHandler = new AlterResourceBackendHandler(alterStorageUnitStatement, connectionSession);
         Field field = alterResourceBackendHandler.getClass().getDeclaredField("validator");
         field.setAccessible(true);
         field.set(alterResourceBackendHandler, validator);
@@ -130,15 +130,15 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
         assertThat(responseHeader, instanceOf(UpdateResponseHeader.class));
     }
     
-    private AlterResourceStatement createAlterResourceStatement(final String resourceName) {
-        return new AlterResourceStatement(Collections.singleton(new URLBasedDataSourceSegment(resourceName, "jdbc:mysql://127.0.0.1:3306/ds_0", "root", "", new Properties())));
+    private AlterStorageUnitStatement createAlterResourceStatement(final String resourceName) {
+        return new AlterStorageUnitStatement(Collections.singleton(new URLBasedDataSourceSegment(resourceName, "jdbc:mysql://127.0.0.1:3306/ds_0", "root", "", new Properties())));
     }
     
-    private AlterResourceStatement createAlterResourceStatementWithDuplicateResourceNames() {
+    private AlterStorageUnitStatement createAlterResourceStatementWithDuplicateResourceNames() {
         Collection<DataSourceSegment> result = new LinkedList<>();
         result.add(new HostnameAndPortBasedDataSourceSegment("ds_0", "127.0.0.1", "3306", "ds_0", "root", "", new Properties()));
         result.add(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/ds_1", "root", "", new Properties()));
-        return new AlterResourceStatement(result);
+        return new AlterStorageUnitStatement(result);
     }
     
     private HikariDataSource mockHikariDataSource(final String database) {
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java
index 336b51a1c17..ec6965c3e37 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource;
 
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import org.apache.shardingsphere.infra.distsql.exception.resource.MissingRequiredResourcesException;
@@ -54,7 +54,7 @@ import static org.mockito.Mockito.when;
 public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
     
     @Mock
-    private DropResourceStatement dropResourceStatement;
+    private UnregisterStorageUnitStatement unregisterStorageUnitStatement;
     
     @Mock
     private ConnectionSession connectionSession;
@@ -93,7 +93,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
-        dropResourceBackendHandler = new DropResourceBackendHandler(dropResourceStatement, connectionSession);
+        dropResourceBackendHandler = new DropResourceBackendHandler(unregisterStorageUnitStatement, connectionSession);
     }
     
     @Test
@@ -102,14 +102,14 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        DropResourceStatement dropResourceStatement = new DropResourceStatement(Collections.singleton("foo_ds"), false);
-        assertThat(dropResourceBackendHandler.execute("test", dropResourceStatement), instanceOf(UpdateResponseHeader.class));
-        verify(contextManager).dropResources("test", dropResourceStatement.getNames());
+        UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false);
+        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test(expected = MissingRequiredResourcesException.class)
     public void assertResourceNameNotExistedExecute() {
-        dropResourceBackendHandler.execute("test", new DropResourceStatement(Collections.singleton("foo_ds"), false));
+        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test(expected = ResourceInUsedException.class)
@@ -120,7 +120,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        dropResourceBackendHandler.execute("test", new DropResourceStatement(Collections.singleton("foo_ds"), false));
+        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test(expected = ResourceInUsedException.class)
@@ -133,7 +133,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        dropResourceBackendHandler.execute("test", new DropResourceStatement(Collections.singleton("foo_ds"), false));
+        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test
@@ -146,16 +146,16 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        DropResourceStatement dropResourceStatement = new DropResourceStatement(Collections.singleton("foo_ds"), true);
-        assertThat(dropResourceBackendHandler.execute("test", dropResourceStatement), instanceOf(UpdateResponseHeader.class));
-        verify(contextManager).dropResources("test", dropResourceStatement.getNames());
+        UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), true);
+        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test
     public void assertExecuteWithIfExists() throws SQLException {
-        DropResourceStatement dropResourceStatement = new DropResourceStatement(true, Collections.singleton("foo_ds"), true);
-        assertThat(dropResourceBackendHandler.execute("test", dropResourceStatement), instanceOf(UpdateResponseHeader.class));
-        verify(contextManager).dropResources("test", dropResourceStatement.getNames());
+        UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true);
+        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test(expected = DistSQLException.class)
@@ -164,7 +164,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(shadowRule.getType()).thenReturn("ShadowRule");
         when(shadowRule.getDataSourceMapper()).thenReturn(Collections.singletonMap("", Collections.singleton("foo_ds")));
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        DropResourceStatement dropResourceStatement = new DropResourceStatement(true, Collections.singleton("foo_ds"), true);
-        dropResourceBackendHandler.execute("test", dropResourceStatement);
+        UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true);
+        dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement);
     }
 }
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleUpdaterTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleUpdaterTest.java
index 7e36cc7e9a0..414c42c7ea6 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleUpdaterTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/CreateDefaultSingleTableRuleUpdaterTest.java
@@ -17,9 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
 
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateDefaultSingleTableRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.distsql.exception.resource.MissingRequiredResourcesException;
-import org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
@@ -31,17 +30,17 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.Collections;
-import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public final class CreateDefaultSingleTableRuleUpdaterTest {
     
-    private final CreateDefaultSingleTableRuleStatementUpdater updater = new CreateDefaultSingleTableRuleStatementUpdater();
+    private final SetDefaultSingleTableStorageUnitStatementUpdater updater = new SetDefaultSingleTableStorageUnitStatementUpdater();
     
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private ShardingSphereDatabase database;
@@ -57,28 +56,30 @@ public final class CreateDefaultSingleTableRuleUpdaterTest {
     
     @Test(expected = MissingRequiredResourcesException.class)
     public void assertCheckWithInvalidResource() {
-        updater.checkSQLStatement(database, new CreateDefaultSingleTableRuleStatement("ds_1"), currentConfig);
-    }
-    
-    @Test(expected = DuplicateRuleException.class)
-    public void assertCheckWithDuplicateResource() {
-        when(currentConfig.getDefaultDataSource()).thenReturn(Optional.of("single_table"));
-        updater.checkSQLStatement(database, new CreateDefaultSingleTableRuleStatement("ds_0"), currentConfig);
+        updater.checkSQLStatement(database, new SetDefaultSingleTableStorageUnitStatement("ds_1"), currentConfig);
     }
     
     @Test
     public void assertBuild() {
-        SingleTableRuleConfiguration toBeCreatedRuleConfig = updater.buildToBeCreatedRuleConfiguration(new CreateDefaultSingleTableRuleStatement("ds_0"));
+        SingleTableRuleConfiguration toBeCreatedRuleConfig = updater.buildToBeCreatedRuleConfiguration(new SetDefaultSingleTableStorageUnitStatement("ds_0"));
         assertTrue(toBeCreatedRuleConfig.getDefaultDataSource().isPresent());
         assertThat(toBeCreatedRuleConfig.getDefaultDataSource().get(), is("ds_0"));
     }
     
     @Test
     public void assertUpdate() {
-        SingleTableRuleConfiguration toBeCreatedRuleConfig = updater.buildToBeCreatedRuleConfiguration(new CreateDefaultSingleTableRuleStatement("ds_0"));
+        SingleTableRuleConfiguration toBeCreatedRuleConfig = updater.buildToBeCreatedRuleConfiguration(new SetDefaultSingleTableStorageUnitStatement("ds_0"));
         SingleTableRuleConfiguration currentConfig = new SingleTableRuleConfiguration();
         updater.updateCurrentRuleConfiguration(currentConfig, toBeCreatedRuleConfig);
         assertTrue(currentConfig.getDefaultDataSource().isPresent());
         assertThat(currentConfig.getDefaultDataSource().get(), is("ds_0"));
     }
+    
+    @Test
+    public void assertRandom() {
+        SingleTableRuleConfiguration toBeCreatedRuleConfig = updater.buildToBeCreatedRuleConfiguration(new SetDefaultSingleTableStorageUnitStatement(null));
+        SingleTableRuleConfiguration currentConfig = new SingleTableRuleConfiguration();
+        updater.updateCurrentRuleConfiguration(currentConfig, toBeCreatedRuleConfig);
+        assertFalse(currentConfig.getDefaultDataSource().isPresent());
+    }
 }
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java
index e6cd79255d5..9917b6e188f 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java
@@ -17,11 +17,12 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
 
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.DataSourceQueryResultSet;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.junit.Before;
 import org.junit.Test;
@@ -63,7 +64,8 @@ public final class DataSourceQueryResultSetTest {
     @Test
     public void assertGetRowData() {
         DatabaseDistSQLResultSet resultSet = new DataSourceQueryResultSet();
-        resultSet.init(database, mock(ShowResourcesStatement.class));
+        ShowStorageUnitsStatement showStorageUnitsStatement = new ShowStorageUnitsStatement(mock(DatabaseSegment.class), null);
+        resultSet.init(database, showStorageUnitsStatement);
         Collection<Object> actual = resultSet.getRowData();
         assertThat(actual.size(), is(12));
         Iterator<Object> rowData = actual.iterator();
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/SingleTableRulesQueryResultSetTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/SingleTableRulesQueryResultSetTest.java
index 6c9bb567725..ba6c1212b9b 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/SingleTableRulesQueryResultSetTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/SingleTableRulesQueryResultSetTest.java
@@ -41,9 +41,8 @@ public final class SingleTableRulesQueryResultSetTest {
         DatabaseDistSQLResultSet resultSet = new SingleTableRulesQueryResultSet();
         resultSet.init(mockDatabase(), mock(ShowSingleTableStatement.class));
         Collection<Object> actual = resultSet.getRowData();
-        assertThat(actual.size(), is(2));
+        assertThat(actual.size(), is(1));
         Iterator<Object> rowData = actual.iterator();
-        assertThat(rowData.next(), is("default"));
         assertThat(rowData.next(), is("foo_ds"));
     }
     
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java
index e99a74ff9e4..162553863f3 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java
@@ -17,18 +17,18 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
 
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowUnusedResourcesStatement;
-import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.UnusedDataSourceQueryResultSet;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.DataSourceQueryResultSet;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.junit.Before;
 import org.junit.Test;
@@ -102,8 +102,9 @@ public final class UnusedDataSourceQueryResultSetTest {
     
     @Test
     public void assertGetRowData() {
-        DatabaseDistSQLResultSet resultSet = new UnusedDataSourceQueryResultSet();
-        resultSet.init(database, mock(ShowUnusedResourcesStatement.class));
+        DataSourceQueryResultSet resultSet = new DataSourceQueryResultSet();
+        ShowStorageUnitsStatement showStorageUnitsStatement = new ShowStorageUnitsStatement(mock(DatabaseSegment.class), 0);
+        resultSet.init(database, showStorageUnitsStatement);
         Collection<Object> actual = resultSet.getRowData();
         assertThat(actual.size(), is(12));
         Iterator<Object> rowData = actual.iterator();
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommandTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommandTest.java
index 48b0243384b..e834606f42e 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommandTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/PostgreSQLCommandTest.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.proxy.frontend.postgresql.command.query;
 
 import org.apache.shardingsphere.distsql.parser.statement.DistSQLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.AnalyzeTableStatement;
@@ -180,7 +180,7 @@ public final class PostgreSQLCommandTest {
     
     @Test
     public void assertValueOfCreateShardingTableRuleOrCreateDataSourcesStatement() {
-        assertThat(PostgreSQLCommand.valueOf(AddResourceStatement.class).orElse(null), is(PostgreSQLCommand.SUCCESS));
+        assertThat(PostgreSQLCommand.valueOf(RegisterStorageUnitStatement.class).orElse(null), is(PostgreSQLCommand.SUCCESS));
         assertThat(PostgreSQLCommand.valueOf(CreateShardingTableRuleStatement.class).orElse(null), is(PostgreSQLCommand.SUCCESS));
         assertThat(PostgreSQLCommand.valueOf(DistSQLStatement.class).orElse(null), is(PostgreSQLCommand.SUCCESS));
         assertThat(PostgreSQLCommand.SUCCESS.getTag(), is("SUCCESS"));
diff --git a/test/integration-test/scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/migration/AbstractMigrationITCase.java b/test/integration-test/scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/migration/AbstractMigrationITCase.java
index 1e9c7edb3a6..59aa10f91d0 100644
--- a/test/integration-test/scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/migration/AbstractMigrationITCase.java
+++ b/test/integration-test/scaling/src/test/java/org/apache/shardingsphere/integration/data/pipeline/cases/migration/AbstractMigrationITCase.java
@@ -87,7 +87,7 @@ public abstract class AbstractMigrationITCase extends BaseITCase {
                 .replace("${ds3}", appendBatchInsertParam(getActualJdbcUrlTemplate(DS_3, true)))
                 .replace("${ds4}", appendBatchInsertParam(getActualJdbcUrlTemplate(DS_4, true)));
         addResource(addTargetResource);
-        List<Map<String, Object>> resources = queryForListWithLog("SHOW DATABASE RESOURCES from sharding_db");
+        List<Map<String, Object>> resources = queryForListWithLog("SHOW STORAGE UNITS from sharding_db");
         assertThat(resources.size(), is(3));
     }
     
diff --git a/test/integration-test/scaling/src/test/resources/env/common/migration-command.xml b/test/integration-test/scaling/src/test/resources/env/common/migration-command.xml
index d60833a6c74..69a4fe6a207 100644
--- a/test/integration-test/scaling/src/test/resources/env/common/migration-command.xml
+++ b/test/integration-test/scaling/src/test/resources/env/common/migration-command.xml
@@ -42,7 +42,7 @@
     </add-migration-source-resource-template>
     
     <add-migration-target-resource-template>
-        ADD RESOURCE ds_2 (
+        REGISTER STORAGE UNIT ds_2 (
         URL="${ds2}",
         USER="${user}",
         PASSWORD="${password}"
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml b/test/integration-test/test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
index 623f4bb376e..ac8cd02ac24 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rdl/rdl-integration-test-cases.xml
@@ -16,17 +16,17 @@
   -->
 <integration-test-cases>
     <!-- TODO FIX HOST CANNOT CONNECT -->
-<!--    <test-case sql="ADD RESOURCE ds_0 (URL='jdbc:mysql://mysql.rdl.empty_rules.host:3306/rdl_ds_0?serverTimezone=UTC&amp;useSSL=false', USER='test_user',PASSWORD='Test@123');" db-types="MySQL">-->
+<!--    <test-case sql="REGISTER STORAGE UNIT ds_0 (URL='jdbc:mysql://mysql.rdl.empty_rules.host:3306/rdl_ds_0?serverTimezone=UTC&amp;useSSL=false', USER='test_user',PASSWORD='Test@123');" db-types="MySQL">-->
 <!--        <assertion expected-data-file="add_resource.xml">-->
 <!--            <assertion-sql sql="SHOW DATABASE RESOURCES" />-->
 <!--        </assertion>-->
 <!--    </test-case>-->
-<!--    <test-case sql="ALTER RESOURCE ds_2 (URL='jdbc:mysql://mysql.rdl.empty_rules.host:3306/rdl_ds_2?serverTimezone=UTC&amp;useSSL=false', USER='test_user',PASSWORD='Test@123',PROPERTIES('idleTimeout'='30000'));" db-types="MySQL">-->
+<!--    <test-case sql="ALTER STORAGE UNIT ds_2 (URL='jdbc:mysql://mysql.rdl.empty_rules.host:3306/rdl_ds_2?serverTimezone=UTC&amp;useSSL=false', USER='test_user',PASSWORD='Test@123',PROPERTIES('idleTimeout'='30000'));" db-types="MySQL">-->
 <!--        <assertion expected-data-file="alter_resource.xml">-->
 <!--            <assertion-sql sql="SHOW DATABASE RESOURCES" />-->
 <!--        </assertion>-->
 <!--    </test-case>-->
-<!--    <test-case sql="DROP RESOURCE ds_2;" db-types="MySQL, PostgreSQL">-->
+<!--    <test-case sql="UNREGISTER STORAGE UNIT ds_2;" db-types="MySQL, PostgreSQL">-->
 <!--        <assertion expected-data-file="drop_resource.xml">-->
 <!--            <assertion-sql sql="SHOW DATABASE RESOURCES" />-->
 <!--        </assertion>-->
@@ -99,25 +99,25 @@
         <assertion expected-data-file="create_single_table_rules.xml">
             <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
             CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_1;"></initial-sql>
+            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;"></initial-sql>
             <assertion-sql sql="SHOW SINGLE TABLES ;" />
-            <destroy-sql sql="DROP TABLE temp;DROP DEFAULT SINGLE TABLE RULE;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;"/>
+            <destroy-sql sql="DROP TABLE temp;SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;"/>
         </assertion>
     </test-case>
     <test-case sql="CREATE TABLE temp_alter (country_id INT PRIMARY KEY, country_name VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);" db-types="MySQL, PostgreSQL">
         <assertion expected-data-file="alter_single_table_rules.xml">
             <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
             CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_1;ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_0;" />
+            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;" />
             <assertion-sql sql="SHOW SINGLE TABLES;" />
-            <destroy-sql sql="DROP TABLE temp_alter;DROP DEFAULT SINGLE TABLE RULE;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;"/>
+            <destroy-sql sql="DROP TABLE temp_alter;SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;"/>
         </assertion>
     </test-case>
-    <test-case sql="DROP DEFAULT SINGLE TABLE RULE" db-types="MySQL, PostgreSQL">
+    <test-case sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM" db-types="MySQL, PostgreSQL">
         <assertion expected-data-file="drop_single_table_rules.xml">
             <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
             CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0;" />
+            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;" />
             <assertion-sql sql="SHOW SINGLE TABLES;" />
             <destroy-sql sql="DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;"/>
         </assertion>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/db/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/db/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/db/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/db/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt_and_readwrite_splitting/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt_and_readwrite_splitting/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt_and_readwrite_splitting/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/encrypt_and_readwrite_splitting/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/readwrite_splitting/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_and_encrypt/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/sharding_governance/mysql/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/tbl/show_single_table_rules.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/tbl/show_single_table_rules.xml
index af8c90693af..03cf9467141 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/tbl/show_single_table_rules.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/dataset/tbl/show_single_table_rules.xml
@@ -17,7 +17,7 @@
 
 <dataset>
     <metadata>
-        <column name="name" />
-        <column name="resource_name" />
+        <column name="storage_unit_name" />
     </metadata>
+    <row values="RANDOM" />
 </dataset>
diff --git a/test/integration-test/test-suite/src/test/resources/cases/rql/rql-integration-test-cases.xml b/test/integration-test/test-suite/src/test/resources/cases/rql/rql-integration-test-cases.xml
index af3c6d19b98..de94df71259 100644
--- a/test/integration-test/test-suite/src/test/resources/cases/rql/rql-integration-test-cases.xml
+++ b/test/integration-test/test-suite/src/test/resources/cases/rql/rql-integration-test-cases.xml
@@ -15,7 +15,7 @@
   ~ limitations under the License.
   -->
 <integration-test-cases>
-    <test-case sql="SHOW DATABASE RESOURCES" scenario-types="db,tbl,readwrite_splitting,encrypt,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt,sharding_and_encrypt,encrypt_and_readwrite_splitting">
+    <test-case sql="SHOW STORAGE UNITS" scenario-types="db,tbl,readwrite_splitting,encrypt,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt,sharding_and_encrypt,encrypt_and_readwrite_splitting">
         <assertion expected-data-file="show_resources.xml" />
     </test-case>
     
@@ -89,7 +89,7 @@
         <assertion expected-data-file="show_sharding_broadcast_rules.xml" />
     </test-case>
     
-    <test-case sql="SHOW SINGLE TABLE RULES" scenario-types="db,tbl,readwrite_splitting,encrypt,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt,sharding_and_encrypt,encrypt_and_readwrite_splitting">
+    <test-case sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT" scenario-types="db,tbl,readwrite_splitting,encrypt,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt,sharding_and_encrypt,encrypt_and_readwrite_splitting">
         <assertion expected-data-file="show_single_table_rules.xml" />
     </test-case>
     
diff --git a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseITCase.java b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseITCase.java
index 43692409966..e39a88e6bc4 100644
--- a/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseITCase.java
+++ b/test/integration-test/transaction/src/test/java/org/apache/shardingsphere/integration/transaction/engine/base/BaseITCase.java
@@ -338,7 +338,7 @@ public abstract class BaseITCase {
                 addResources(connection);
             }
         }
-        int resourceCount = countWithLog("SHOW DATABASE RESOURCES FROM sharding_db");
+        int resourceCount = countWithLog("SHOW STORAGE UNITS FROM sharding_db");
         assertThat(resourceCount, is(2));
     }
     
@@ -373,7 +373,7 @@ public abstract class BaseITCase {
                 .replace("${password}", ENV.getActualDataSourcePassword(databaseType))
                 .replace("${ds2}", getActualJdbcUrlTemplate(databaseName));
         executeWithLog(connection, addSourceResource);
-        int resourceCount = countWithLog("SHOW DATABASE RESOURCES FROM sharding_db");
+        int resourceCount = countWithLog("SHOW STORAGE UNITS FROM sharding_db");
         Thread.sleep(5000L);
         assertThat(resourceCount, is(3));
     }
diff --git a/test/integration-test/transaction/src/test/resources/env/common/command.xml b/test/integration-test/transaction/src/test/resources/env/common/command.xml
index 4850545f09f..7fa705bd099 100644
--- a/test/integration-test/transaction/src/test/resources/env/common/command.xml
+++ b/test/integration-test/transaction/src/test/resources/env/common/command.xml
@@ -106,7 +106,7 @@
     </alter-xa-transaction-rule>
 
     <source-add-resource-template>
-        ADD RESOURCE ds_0 (
+        REGISTER STORAGE UNIT ds_0 (
         URL="${ds0}",
         USER="${user}",
         PASSWORD="${password}"
@@ -118,7 +118,7 @@
     </source-add-resource-template>
 
     <source-add-new-resource-template>
-        ADD RESOURCE ds_2 (
+        REGISTER STORAGE UNIT ds_2 (
             URL="${ds2}",
             USER="${user}",
             PASSWORD="${password}"
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
index 5d35ffa3698..38db1bcbf53 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
@@ -21,11 +21,11 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.AlterDatabaseDiscoveryRuleStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.RDLStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropRuleStatement;
 import org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
 import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
@@ -82,14 +82,14 @@ public final class RDLStatementAssert {
             AlterShardingTableRuleStatementAssert.assertIs(assertContext, (AlterShardingTableRuleStatement) actual, expected);
         } else if (actual instanceof CreateRuleStatement) {
             CreateRuleStatementAssert.assertIs(assertContext, (CreateRuleStatement) actual, expected);
-        } else if (actual instanceof AddResourceStatement) {
-            AddResourceStatementAssert.assertIs(assertContext, (AddResourceStatement) actual, (AddResourceStatementTestCase) expected);
-        } else if (actual instanceof AlterResourceStatement) {
-            AlterResourceStatementAssert.assertIs(assertContext, (AlterResourceStatement) actual, (AlterResourceStatementTestCase) expected);
+        } else if (actual instanceof RegisterStorageUnitStatement) {
+            AddResourceStatementAssert.assertIs(assertContext, (RegisterStorageUnitStatement) actual, (AddResourceStatementTestCase) expected);
+        } else if (actual instanceof AlterStorageUnitStatement) {
+            AlterResourceStatementAssert.assertIs(assertContext, (AlterStorageUnitStatement) actual, (AlterResourceStatementTestCase) expected);
         } else if (actual instanceof AlterRuleStatement) {
             AlterRuleStatementAssert.assertIs(assertContext, (AlterRuleStatement) actual, expected);
-        } else if (actual instanceof DropResourceStatement) {
-            DropResourceStatementAssert.assertIs(assertContext, (DropResourceStatement) actual, (DropResourceStatementTestCase) expected);
+        } else if (actual instanceof UnregisterStorageUnitStatement) {
+            DropResourceStatementAssert.assertIs(assertContext, (UnregisterStorageUnitStatement) actual, (DropResourceStatementTestCase) expected);
         } else if (actual instanceof DropRuleStatement) {
             DropRuleStatementAssert.assertIs(assertContext, (DropRuleStatement) actual, expected);
         }
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java
index 8f02f483371..e77b4d73ba6 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.DataSourceAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedDataSource;
@@ -47,7 +47,7 @@ public final class AlterResourceStatementAssert {
      * @param actual actual add resource statement
      * @param expected expected add resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final AlterResourceStatement actual, final AlterResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final AlterStorageUnitStatement actual, final AlterResourceStatementTestCase expected) {
         if (null == expected) {
             assertNull(assertContext.getText("Actual statement should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java
index dab0b895cd2..8700ac93e8e 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.AddResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.DataSourceAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedDataSource;
@@ -47,7 +47,7 @@ public final class AddResourceStatementAssert {
      * @param actual actual add resource statement
      * @param expected expected add resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final AddResourceStatement actual, final AddResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final RegisterStorageUnitStatement actual, final AddResourceStatementTestCase expected) {
         if (null == expected) {
             assertNull(assertContext.getText("Actual statement should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/CreateRuleStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/CreateRuleStatementAssert.java
index 8e989a6b9aa..37ae7da6a18 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/CreateRuleStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/CreateRuleStatementAssert.java
@@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryHeartbeatStatement;
 import org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryRuleStatement;
 import org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryTypeStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateDefaultSingleTableRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateRuleStatement;
 import org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
 import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
@@ -110,8 +110,8 @@ public final class CreateRuleStatementAssert {
             CreateDefaultShardingStrategyStatementAssert.assertIs(assertContext, (CreateDefaultShardingStrategyStatement) actual, (CreateDefaultShardingStrategyStatementTestCase) expected);
         } else if (actual instanceof CreateDefaultShadowAlgorithmStatement) {
             CreateDefaultShadowAlgorithmStatementAssert.assertIs(assertContext, (CreateDefaultShadowAlgorithmStatement) actual, (CreateDefaultShadowAlgorithmStatementTestCase) expected);
-        } else if (actual instanceof CreateDefaultSingleTableRuleStatement) {
-            CreateDefaultSingleTableRuleStatementAssert.assertIs(assertContext, (CreateDefaultSingleTableRuleStatement) actual, (CreateDefaultSingleTableRuleStatementTestCase) expected);
+        } else if (actual instanceof SetDefaultSingleTableStorageUnitStatement) {
+            CreateDefaultSingleTableRuleStatementAssert.assertIs(assertContext, (SetDefaultSingleTableStorageUnitStatement) actual, (CreateDefaultSingleTableRuleStatementTestCase) expected);
         } else if (actual instanceof CreateShardingKeyGeneratorStatement) {
             CreateShardingKeyGeneratorStatementAssert.assertIs(assertContext, (CreateShardingKeyGeneratorStatement) actual, (CreateShardingKeyGeneratorStatementTestCase) expected);
         } else if (actual instanceof CreateShardingAuditorStatement) {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultSingleTableRuleStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultSingleTableRuleStatementAssert.java
index 5bdff875c63..1e586216b79 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultSingleTableRuleStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateDefaultSingleTableRuleStatementAssert.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateDefaultSingleTableRuleStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateDefaultSingleTableRuleStatementTestCase;
 
@@ -41,7 +41,7 @@ public final class CreateDefaultSingleTableRuleStatementAssert {
      * @param actual actual create default single table rule statement
      * @param expected expected create default single table rule statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final CreateDefaultSingleTableRuleStatement actual,
+    public static void assertIs(final SQLCaseAssertContext assertContext, final SetDefaultSingleTableStorageUnitStatement actual,
                                 final CreateDefaultSingleTableRuleStatementTestCase expected) {
         if (null == expected) {
             assertNull(assertContext.getText("Actual statement should not exist."), actual);
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java
index c5b7d88d3ea..c73c992bce3 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropResourceStatementTestCase;
 
@@ -40,7 +40,7 @@ public final class DropResourceStatementAssert {
      * @param actual actual drop resource statement
      * @param expected expected drop resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final DropResourceStatement actual, final DropResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final UnregisterStorageUnitStatement actual, final DropResourceStatementTestCase expected) {
         if (null == expected.getDataSources()) {
             assertNull(assertContext.getText("Actual resource should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index c36e23e2c11..90a6a0ef106 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -295,11 +295,12 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.LabelInstanceStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.PrepareDistSQLStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.RefreshTableMetadataStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetDistVariableStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetReadwriteSplittingHintStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetShardingHintDatabaseValueStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.SetDistVariableStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowDistVariablesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowAuthorityRuleStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowDistVariableStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowDistVariablesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowInstanceInfoStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowInstanceListStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowMigrationListStatementTestCase;
@@ -312,7 +313,6 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowTableMetadataStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowTrafficRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowTransactionRuleStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.ShowDistVariableStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.UnlabelInstanceStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.AddMigrationSourceResourceStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.CheckMigrationStatementTestCase;
@@ -321,8 +321,8 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.DropPipelineProcessConfigurationStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.MigrateTableStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.RollbackMigrationStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.ShowMigrationCheckStatusStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.ShowMigrationCheckAlgorithmsStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.ShowMigrationCheckStatusStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.ShowMigrationSourceResourcesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.ShowMigrationStatusStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.ral.migration.StartMigrationStatementTestCase;
@@ -332,7 +332,6 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDatabaseDiscoveryHeartbeatStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDatabaseDiscoveryTypeStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDefaultShardingStrategyStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDefaultSingleTableRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterReadwriteSplittingRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterResourceStatementTestCase;
@@ -368,7 +367,6 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDataBaseDiscoveryRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDataBaseDiscoveryTypeStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDefaultShardingStrategyStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDefaultSingleTableRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropReadwriteSplittingRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropResourceStatementTestCase;
@@ -1242,10 +1240,10 @@ public final class SQLParserTestCases {
     private final List<CreateDefaultSingleTableRuleStatementTestCase> createDefaultSingleTableRuleTestCases = new LinkedList<>();
     
     @XmlElement(name = "alter-default-single-table")
-    private final List<AlterDefaultSingleTableRuleStatementTestCase> alterDefaultSingleTableRuleTestCases = new LinkedList<>();
+    private final List<CreateDefaultSingleTableRuleStatementTestCase> alterDefaultSingleTableRuleTestCases = new LinkedList<>();
     
     @XmlElement(name = "drop-default-single-table")
-    private final List<DropDefaultSingleTableRuleStatementTestCase> dropDefaultSingleTableRuleTestCases = new LinkedList<>();
+    private final List<CreateDefaultSingleTableRuleStatementTestCase> dropDefaultSingleTableRuleTestCases = new LinkedList<>();
     
     @XmlElement(name = "show-open-tables")
     private final List<ShowOpenTablesStatementTestCase> showOpenTablesTestCases = new LinkedList<>();
diff --git a/test/parser/src/main/resources/case/rql/show.xml b/test/parser/src/main/resources/case/rql/show.xml
index 45f490ef1c3..c475745a9dc 100644
--- a/test/parser/src/main/resources/case/rql/show.xml
+++ b/test/parser/src/main/resources/case/rql/show.xml
@@ -88,7 +88,7 @@
     </show-single-table>
     
     <show-single-table-rules sql-case-id="show-single-table-rules">
-        <database name="single_table_db" start-index="29" stop-index="43" />
+        <database name="single_table_db" start-index="44" stop-index="58" />
     </show-single-table-rules>
     
     <show-sharding-table-nodes sql-case-id="show-sharding-table-nodes" table="t_order">
diff --git a/test/parser/src/main/resources/sql/supported/rdl/alter.xml b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
index 0c86069fe14..70ba9646995 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/alter.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
@@ -17,15 +17,15 @@
   -->
 
 <sql-cases>
-    <distsql-case id="alter-resource-simple-single-without-password" value="ALTER RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
-    <distsql-case id="alter-resource-simple-single-with-password" value="ALTER RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-simple-multiple" value="ALTER RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-url-single-without-password" value="ALTER RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
-    <distsql-case id="alter-resource-url-single-with-password" value="ALTER RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-url-multiple" value="ALTER RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-single-with-properties" value="ALTER RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
-    <distsql-case id="alter-resource-url-single-with-empty-properties" value="ALTER RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
-    <distsql-case id="alter-resource-url-single-with-properties" value="ALTER RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
+    <distsql-case id="alter-resource-simple-single-without-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="alter-resource-simple-single-with-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-resource-simple-multiple" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-resource-url-single-without-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
+    <distsql-case id="alter-resource-url-single-with-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-resource-url-multiple" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-resource-single-with-properties" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
+    <distsql-case id="alter-resource-url-single-with-empty-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
+    <distsql-case id="alter-resource-url-single-with-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
     <distsql-case id="alter-sharding-auto-table-rule" value="ALTER SHARDING TABLE RULE t_order (RESOURCES(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id, TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="alter-sharding-auto-table-rule-with-inline-expression" value="ALTER SHARDING TABLE RULE t_order (RESOURCES('ms_group_${0..1}'), SHARDING_COLUMN=order_id, TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="alter-sharding-binding-table-rules" value="ALTER SHARDING BINDING TABLE RULES (t_order,t_order_item), (t_1,t_2)" />
@@ -43,7 +43,7 @@
     <distsql-case id="alter-sharding-table-rule" value="ALTER SHARDING TABLE RULE t_order (DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column = order_id,sharding_algorithm = database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column = user_id,sharding_algorithm = table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="alter-sharding-table-rule-complex" value="ALTER SHARDING TABLE RULE t_order (DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns = order_id,user_id, sharding_algorithm = database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column = user_id,sharding_algorithm = table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="alter-sharding-algorithm" value="ALTER SHARDING ALGORITHM algorithm_name(TYPE(NAME='inline',PROPERTIES('algorithm-expression' = 't_order_${order_id % 2}')))" />
-    <distsql-case id="alter-default-single-table" value="ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_0" />
+    <distsql-case id="alter-default-single-table" value="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0" />
     <distsql-case id="alter-sharding-key-generator" value="ALTER SHARDING KEY GENERATOR uuid_key_generator(TYPE(NAME='uuid'))" />
     <distsql-case id="alter-sharding-auditor" value="ALTER SHARDING AUDITOR sharding_key_required_auditor(TYPE(NAME='DML_SHARDING_CONDITIONS'))" />
     <distsql-case id="alter-default-sharding-strategy" value="ALTER DEFAULT SHARDING TABLE STRATEGY(TYPE='standard', SHARDING_COLUMN=order_id, SHARDING_ALGORITHM=algorithms_name)" />
diff --git a/test/parser/src/main/resources/sql/supported/rdl/create.xml b/test/parser/src/main/resources/sql/supported/rdl/create.xml
index 5026d0015a2..f345e9d7c90 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/create.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/create.xml
@@ -17,15 +17,15 @@
   -->
 
 <sql-cases>
-    <distsql-case id="add-resource-simple-single-without-password" value="ADD RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
-    <distsql-case id="add-resource-simple-single-with-password" value="ADD RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-simple-multiple" value="ADD RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-url-single-without-password" value="ADD RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
-    <distsql-case id="add-resource-url-single-with-password" value="ADD RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-url-multiple" value="ADD RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-single-with-properties" value="ADD RESOURCE ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
-    <distsql-case id="add-resource-url-single-with-empty-properties" value="ADD RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
-    <distsql-case id="add-resource-url-single-with-properties" value="ADD RESOURCE ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
+    <distsql-case id="add-resource-simple-single-without-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="add-resource-simple-single-with-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="add-resource-simple-multiple" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="add-resource-url-single-without-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
+    <distsql-case id="add-resource-url-single-with-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="add-resource-url-multiple" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="add-resource-single-with-properties" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
+    <distsql-case id="add-resource-url-single-with-empty-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
+    <distsql-case id="add-resource-url-single-with-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
     <distsql-case id="create-sharding-auto-table-rule" value="CREATE SHARDING TABLE RULE t_order (RESOURCES(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-sharding-auto-table-rule-with-inline-expression" value="CREATE SHARDING TABLE RULE t_order (RESOURCES('ms_group_${0..1}'), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-sharding-binding-table-rule" value="CREATE SHARDING BINDING TABLE RULES (t_order,t_order_item), (t_1,t_2)" />
@@ -49,9 +49,9 @@
     <distsql-case id="create-sharding-table-rule-complex" value="CREATE SHARDING TABLE RULE t_order (DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='complex',sharding_columns = order_id,user_id,sharding_algorithm = database_inline),TABLE_STRATEGY(TYPE='standard',sharding_column = user_id,sharding_algorithm = table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake'))),t_order_item (DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column = o [...]
     <distsql-case id="create-sharding-table-rule-with-auto-create-algorithm" value="CREATE SHARDING TABLE RULE t_order (DATANODES('ms_group_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column = order_id,sharding_algorithm (TYPE(NAME='inline',PROPERTIES('algorithm-expression'='ms_group_${order_id% 2}')))),TABLE_STRATEGY(TYPE='standard',sharding_column = user_id,sharding_algorithm = table_inline),KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-shadow-algorithm" value="CREATE SHADOW ALGORITHM (simple_hint_algorithm, TYPE(NAME='HINT', PROPERTIES('shadow'='true', 'foo'='bar')))" />
-    <distsql-case id="create-default-single-table" value="CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0" />
+    <distsql-case id="create-default-single-table" value="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0" />
 
-    <distsql-case id="add-resource-with-quota" value="ADD RESOURCE `ds_0`(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="add-resource-with-quota" value="REGISTER STORAGE UNIT `ds_0`(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
     <distsql-case id="create-sharding-auto-table-rule-with-quota" value="CREATE SHARDING TABLE RULE `t_order` (RESOURCES(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-sharding-binding-table-rule-with-quota" value="CREATE SHARDING BINDING TABLE RULES (`t_order`,`t_order_item`), (t_1,t_2)" />
     <distsql-case id="create-sharding-broadcast-table-rule-with-quota" value="CREATE SHARDING BROADCAST TABLE RULES(`t_1`,`t_2`)" />
diff --git a/test/parser/src/main/resources/sql/supported/rdl/drop.xml b/test/parser/src/main/resources/sql/supported/rdl/drop.xml
index d47e084c09e..f7467f123f2 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/drop.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/drop.xml
@@ -17,9 +17,9 @@
   -->
 
 <sql-cases>
-    <distsql-case id="drop-resource" value="DROP RESOURCE ds_0,ds_1" />
-    <distsql-case id="drop-resource-if-exists" value="DROP RESOURCE IF EXISTS ds_0,ds_1" />
-    <distsql-case id="drop-resource-ignore-single-tables" value="DROP RESOURCE ds_0,ds_1 ignore single tables;" />
+    <distsql-case id="drop-resource" value="UNREGISTER STORAGE UNIT ds_0,ds_1" />
+    <distsql-case id="drop-resource-if-exists" value="UNREGISTER STORAGE UNIT IF EXISTS ds_0,ds_1" />
+    <distsql-case id="drop-resource-ignore-single-tables" value="UNREGISTER STORAGE UNIT ds_0,ds_1 ignore single tables;" />
     <distsql-case id="drop-sharding-table-rule" value="DROP SHARDING TABLE RULE t_order,t_order_item" />
     <distsql-case id="drop-sharding-table-rule-if-exists" value="DROP SHARDING TABLE RULE IF EXISTS t_order,t_order_item" />
     <distsql-case id="drop-sharding-binding-table-rules" value="DROP SHARDING BINDING TABLE RULES" />
@@ -43,8 +43,7 @@
     <distsql-case id="drop-shadow-algorithm" value="DROP SHADOW algorithm shadow_algorithm_1,shadow_algorithm_2" />
     <distsql-case id="drop-default-shadow-algorithm-if-exists" value="DROP DEFAULT SHADOW ALGORITHM IF EXISTS" />
     <distsql-case id="drop-shadow-algorithm-if-exists" value="DROP SHADOW ALGORITHM IF EXISTS shadow_algorithm_1,shadow_algorithm_2" />
-    <distsql-case id="drop-default-single-table" value="DROP DEFAULT SINGLE TABLE RULE" />
-    <distsql-case id="drop-default-single-table-if-exists" value="DROP DEFAULT SINGLE TABLE RULE IF EXISTS" />
+    <distsql-case id="drop-default-single-table" value="SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM" />
     <distsql-case id="drop-sharding-key-generator" value="DROP SHARDING KEY GENERATOR uuid_key_generator" />
     <distsql-case id="drop-sharding-key-generator-if-exists" value="DROP SHARDING KEY GENERATOR IF EXISTS uuid_key_generator" />
     <distsql-case id="drop-sharding-auditor" value="DROP SHARDING AUDITOR sharding_key_required_auditor" />
diff --git a/test/parser/src/main/resources/sql/supported/rql/show.xml b/test/parser/src/main/resources/sql/supported/rql/show.xml
index c13b0f26838..ece43ff08bb 100644
--- a/test/parser/src/main/resources/sql/supported/rql/show.xml
+++ b/test/parser/src/main/resources/sql/supported/rql/show.xml
@@ -34,7 +34,7 @@
     <distsql-case id="show-shadow-table-rules" value="SHOW SHADOW TABLE RULES FROM shadow_db" />
     <distsql-case id="show-shadow-algorithms" value="SHOW SHADOW ALGORITHMS FROM shadow_db" />
     <distsql-case id="show-single-table" value="SHOW SINGLE TABLE t_order FROM single_table_db" />
-    <distsql-case id="show-single-table-rules" value="SHOW SINGLE TABLE RULES FROM single_table_db" />
+    <distsql-case id="show-single-table-rules" value="SHOW DEFAULT SINGLE TABLE STORAGE UNIT FROM single_table_db" />
     <distsql-case id="show-sharding-table-nodes" value="SHOW SHARDING TABLE NODES t_order FROM sharding_db" />
     <distsql-case id="show-sharding-key-generators" value="SHOW SHARDING KEY GENERATORS FROM sharding_db" />
     <distsql-case id="show-default-sharding-strategy" value="SHOW DEFAULT SHARDING STRATEGY FROM sharding_db" />