You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/03/17 08:35:24 UTC

[iotdb] branch master updated: [IOTDB-2675] Rename MManager to SchemaEngine and SGMManager to SchemaRegion (#5265)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2058744  [IOTDB-2675] Rename MManager to SchemaEngine and SGMManager to SchemaRegion (#5265)
2058744 is described below

commit 2058744d739f6d39690cd6ffb264f2dd2bea6fd6
Author: Marcos_Zyk <38...@users.noreply.github.com>
AuthorDate: Thu Mar 17 16:34:20 2022 +0800

    [IOTDB-2675] Rename MManager to SchemaEngine and SGMManager to SchemaRegion (#5265)
---
 .../org/apache/iotdb/cluster/ClusterIoTDB.java     |   8 +-
 .../iotdb/cluster/coordinator/Coordinator.java     |  10 +-
 .../cluster/log/applier/AsyncDataLogApplier.java   |   8 +-
 .../iotdb/cluster/log/applier/DataLogApplier.java  |   6 +-
 .../log/manage/MetaSingleSnapshotLogManager.java   |   2 +-
 .../log/manage/PartitionedSnapshotLogManager.java  |   4 +-
 .../cluster/log/snapshot/MetaSimpleSnapshot.java   |   4 +-
 .../{CMManager.java => CSchemaEngine.java}         |  20 +-
 .../apache/iotdb/cluster/metadata/MetaPuller.java  |  10 +-
 .../iotdb/cluster/partition/PartitionTable.java    |   4 +-
 .../cluster/query/ClusterPhysicalGenerator.java    |   8 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |  22 +-
 .../iotdb/cluster/query/ClusterPlanRouter.java     |  16 +-
 .../iotdb/cluster/query/LocalQueryExecutor.java    |  31 +-
 .../iotdb/cluster/query/filter/SlotSgFilter.java   |   2 +-
 .../cluster/query/reader/ClusterTimeGenerator.java |   4 +-
 .../cluster/server/member/DataGroupMember.java     |   6 +-
 .../cluster/server/member/MetaGroupMember.java     |   2 +-
 .../cluster/server/service/DataAsyncService.java   |  14 +-
 .../cluster/server/service/DataSyncService.java    |  12 +-
 .../iotdb/cluster/utils/ClusterQueryUtils.java     |   2 +-
 .../apache/iotdb/cluster/utils/ClusterUtils.java   |   4 +-
 .../log/applier/AsyncDataLogApplierTest.java       |   6 +-
 .../cluster/log/applier/DataLogApplierTest.java    |  12 +-
 .../cluster/log/applier/MetaLogApplierTest.java    |   6 +-
 .../iotdb/cluster/log/catchup/CatchUpTaskTest.java |   4 +-
 .../cluster/log/snapshot/DataSnapshotTest.java     |   2 +-
 .../cluster/log/snapshot/FileSnapshotTest.java     |   8 +-
 .../log/snapshot/MetaSimpleSnapshotTest.java       |   4 +-
 .../log/snapshot/PartitionedSnapshotTest.java      |   5 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |   2 +-
 ...agerWhiteBox.java => SchemaEngineWhiteBox.java} |  20 +-
 .../cluster/partition/SlotPartitionTableTest.java  |  28 +-
 .../cluster/query/ClusterPlanExecutorTest.java     |   2 +-
 .../clusterinfo/ClusterInfoServiceImplTest.java    |   4 +-
 .../iotdb/cluster/server/member/BaseMember.java    |  10 +-
 .../cluster/server/member/DataGroupMemberTest.java |   4 +-
 .../cluster/server/member/MetaGroupMemberTest.java |  22 +-
 docs/zh/UserGuide/Reference/Config-Manual.md       |   2 +-
 .../iotdb/db/integration/IoTDBArithmeticIT.java    |  18 +-
 .../iotdb/db/integration/IoTDBCheckConfigIT.java   |   4 +-
 .../apache/iotdb/db/integration/IoTDBLastIT.java   |  14 +-
 .../iotdb/db/integration/IoTDBMetadataFetchIT.java |   2 +-
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   |  12 +-
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    |  18 +-
 .../iotdb/db/integration/IoTDBSimpleQueryIT.java   |   8 +-
 .../db/integration/IoTDBTriggerExecutionIT.java    |  26 +-
 .../db/integration/IoTDBTriggerManagementIT.java   |   8 +-
 .../iotdb/db/integration/IoTDBUDFManagementIT.java |   6 +-
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |   4 +-
 .../resources/conf/iotdb-engine.properties         |   8 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  18 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   4 +-
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  20 +-
 .../db/engine/compaction/CompactionUtils.java      |   4 +-
 .../inner/utils/InnerSpaceCompactionUtils.java     |   2 +-
 .../engine/cq/ContinuousQuerySchemaCheckTask.java  |   2 +-
 .../storagegroup/VirtualStorageGroupProcessor.java |  14 +-
 .../service/TriggerRegistrationService.java        |   2 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |   6 +-
 .../IStorageGroupSchemaManager.java                |  42 +-
 .../metadata/{MManager.java => SchemaEngine.java}  | 222 ++---
 .../SGMManager.java => SchemaRegion.java}          |  12 +-
 .../StorageGroupSchemaManager.java                 |  57 +-
 .../db/metadata/idtable/IDTableHashmapImpl.java    |  11 +-
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   2 +-
 .../idtable/entry/InsertMeasurementMNode.java      |   2 +-
 .../db/metadata/lastCache/LastCacheManager.java    |   6 +-
 .../iotdb/db/metadata/logfile/MLogReader.java      |   2 +-
 .../iotdb/db/metadata/logfile/MLogTxtReader.java   |   2 +-
 .../db/metadata/mnode/IStorageGroupMNode.java      |   6 +-
 .../db/metadata/mnode/StorageGroupEntityMNode.java |  16 +-
 .../iotdb/db/metadata/mnode/StorageGroupMNode.java |  16 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSG.java      |  22 +-
 .../iotdb/db/metadata/mtree/MTreeBelowSG.java      |   2 +-
 .../mtree/traverser/collector/MNodeCollector.java  |   2 +-
 .../db/metadata/upgrade/MetadataUpgrader.java      |  62 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  90 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   4 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |   2 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   2 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |   2 +-
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |   4 +-
 .../iotdb/db/query/dataset/ShowDevicesDataSet.java |   2 +-
 .../db/query/dataset/ShowTimeseriesDataSet.java    |   2 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |  16 +-
 .../java/org/apache/iotdb/db/service/IoTDB.java    |  14 +-
 .../db/service/thrift/impl/TSServiceImpl.java      |  20 +-
 .../db/sync/receiver/transfer/SyncServiceImpl.java |   2 +-
 .../db/sync/sender/manage/SyncFileManager.java     |   2 +-
 .../db/tools/virtualsg/DeviceMappingViewer.java    |  11 +-
 .../apache/iotdb/db/utils/EnvironmentUtils.java    |   4 +-
 .../org/apache/iotdb/db/utils/SchemaTestUtils.java |   2 +-
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |   4 +-
 .../iotdb/db/writelog/recover/LogReplayer.java     |   4 +-
 .../iotdb/db/engine/MetadataManagerHelper.java     |  48 +-
 .../iotdb/db/engine/cache/ChunkCacheTest.java      |   8 +-
 .../engine/compaction/AbstractCompactionTest.java  |  10 +-
 .../engine/compaction/CompactionSchedulerTest.java |  64 +-
 .../compaction/TestUtilsForAlignedSeries.java      |   6 +-
 .../compaction/cross/CrossSpaceCompactionTest.java |   8 +-
 .../db/engine/compaction/cross/MergeTest.java      |   8 +-
 .../inner/AbstractInnerSpaceCompactionTest.java    |   8 +-
 .../inner/InnerCompactionMoreDataTest.java         |   4 +-
 .../compaction/inner/InnerCompactionTest.java      |   8 +-
 .../compaction/inner/InnerSeqCompactionTest.java   |   8 +-
 .../InnerSpaceCompactionUtilsAlignedTest.java      |   4 +-
 .../InnerSpaceCompactionUtilsNoAlignedTest.java    |   6 +-
 .../compaction/inner/InnerUnseqCompactionTest.java |   8 +-
 .../inner/sizetiered/SizeTieredCompactionTest.java |   8 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |  12 +-
 .../engine/modification/DeletionFileNodeTest.java  |   4 +-
 .../db/engine/modification/DeletionQueryTest.java  |   4 +-
 .../storagegroup/FileNodeManagerBenchmark.java     |   8 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |  16 +-
 ...ncedTest.java => SchemaEngineAdvancedTest.java} |  72 +-
 ...erBasicTest.java => SchemaEngineBasicTest.java} | 924 +++++++++++----------
 ...proveTest.java => SchemaEngineImproveTest.java} |  36 +-
 .../org/apache/iotdb/db/metadata/TemplateTest.java | 112 +--
 .../iotdb/db/metadata/idtable/IDTableTest.java     |  66 +-
 .../db/metadata/idtable/InsertWithIDTableTest.java |  18 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSGTest.java  |   4 +-
 .../iotdb/db/metadata/mtree/MTreeBelowSGTest.java  |   4 +-
 .../db/metadata/upgrade/MetadataUpgradeTest.java   |  22 +-
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |  34 +-
 .../iotdb/db/qp/logical/LogicalPlanSmallTest.java  |   4 +-
 .../iotdb/db/qp/physical/ConcatOptimizerTest.java  |  18 +-
 .../iotdb/db/qp/physical/InsertRowPlanTest.java    |  12 +-
 .../iotdb/db/qp/physical/InsertTabletPlanTest.java |  10 +-
 .../iotdb/db/qp/physical/PhysicalPlanTest.java     |  12 +-
 .../iotdb/db/qp/physical/SerializationTest.java    |  14 +-
 .../dataset/EngineDataSetWithValueFilterTest.java  |   2 +-
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |  14 +-
 .../query/dataset/groupby/GroupByDataSetTest.java  |   2 +-
 .../dataset/groupby/GroupByFillDataSetTest.java    |   2 +-
 .../dataset/groupby/GroupByLevelDataSetTest.java   |   2 +-
 .../query/reader/series/SeriesReaderTestUtil.java  |   8 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |   8 +-
 .../db/sync/receiver/load/FileLoaderTest.java      |  12 +-
 .../recover/SyncReceiverLogAnalyzerTest.java       |  12 +-
 .../db/sync/sender/manage/SyncFileManagerTest.java |   2 +-
 .../sender/recover/SyncSenderLogAnalyzerTest.java  |   2 +-
 .../org/apache/iotdb/db/tools/MLogParserTest.java  |  26 +-
 .../org/apache/iotdb/db/utils/SchemaUtilsTest.java |   8 +-
 .../apache/iotdb/db/writelog/PerformanceTest.java  |  10 +-
 .../db/writelog/recover/DeviceStringTest.java      |  12 +-
 .../iotdb/db/writelog/recover/LogReplayerTest.java |   4 +-
 .../recover/RecoverResourceFromReaderTest.java     |   8 +-
 .../db/writelog/recover/SeqTsFileRecoverTest.java  |   8 +-
 .../writelog/recover/UnseqTsFileRecoverTest.java   |   8 +-
 .../apache/iotdb/spark/db/EnvironmentUtils.java    |   4 +-
 151 files changed, 1509 insertions(+), 1468 deletions(-)

diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
index 8c02355..d67f9e1 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/ClusterIoTDB.java
@@ -32,7 +32,7 @@ import org.apache.iotdb.cluster.config.ClusterDescriptor;
 import org.apache.iotdb.cluster.coordinator.Coordinator;
 import org.apache.iotdb.cluster.exception.ConfigInconsistentException;
 import org.apache.iotdb.cluster.exception.StartUpCheckFailureException;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.metadata.MetaPuller;
 import org.apache.iotdb.cluster.partition.slot.SlotPartitionTable;
 import org.apache.iotdb.cluster.partition.slot.SlotStrategy;
@@ -159,9 +159,9 @@ public class ClusterIoTDB implements ClusterIoTDBMBean {
             IoTDBDescriptor.getInstance().getConfig().isRpcThriftCompressionEnable());
     metaGroupMember = new MetaGroupMember(protocolFactory, thisNode, coordinator);
     IoTDB.setClusterMode();
-    IoTDB.setMetaManager(CMManager.getInstance());
-    ((CMManager) IoTDB.metaManager).setMetaGroupMember(metaGroupMember);
-    ((CMManager) IoTDB.metaManager).setCoordinator(coordinator);
+    IoTDB.setSchemaEngine(CSchemaEngine.getInstance());
+    ((CSchemaEngine) IoTDB.schemaEngine).setMetaGroupMember(metaGroupMember);
+    ((CSchemaEngine) IoTDB.schemaEngine).setCoordinator(coordinator);
     MetaPuller.getInstance().init(metaGroupMember);
     // set coordinator for serviceProvider construction
     try {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java b/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
index 43faa86..9a55222 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
@@ -29,7 +29,7 @@ import org.apache.iotdb.cluster.exception.CheckConsistencyException;
 import org.apache.iotdb.cluster.exception.UnknownLogTypeException;
 import org.apache.iotdb.cluster.exception.UnsupportedPlanException;
 import org.apache.iotdb.cluster.log.Log;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.query.ClusterPlanRouter;
 import org.apache.iotdb.cluster.rpc.thrift.Node;
@@ -178,7 +178,7 @@ public class Coordinator {
         // them to full paths so the executor nodes will not need to query the metadata holders,
         // eliminating the risk that when they are querying the metadata holders, the timeseries
         // has already been deleted
-        ((CMManager) IoTDB.metaManager).convertToFullPaths(plan);
+        ((CSchemaEngine) IoTDB.schemaEngine).convertToFullPaths(plan);
       } else {
         // function convertToFullPaths has already sync leader
         metaGroupMember.syncLeaderWithConsistencyCheck(true);
@@ -209,12 +209,12 @@ public class Coordinator {
       throws MetadataException, CheckConsistencyException {
     if (plan instanceof SetTemplatePlan) {
       try {
-        IoTDB.metaManager.getBelongedStorageGroup(
+        IoTDB.schemaEngine.getBelongedStorageGroup(
             new PartialPath(((SetTemplatePlan) plan).getPrefixPath()));
       } catch (IllegalPathException e) {
         // the plan has been checked
       } catch (StorageGroupNotSetException e) {
-        ((CMManager) IoTDB.metaManager).createSchema(plan);
+        ((CSchemaEngine) IoTDB.schemaEngine).createSchema(plan);
       }
     }
   }
@@ -255,7 +255,7 @@ public class Coordinator {
 
         logger.debug("{}: No associated storage group found for {}, auto-creating", name, plan);
         try {
-          ((CMManager) IoTDB.metaManager).createSchema(plan);
+          ((CSchemaEngine) IoTDB.schemaEngine).createSchema(plan);
           return processPartitionedPlan(plan);
         } catch (MetadataException | CheckConsistencyException e) {
           logger.error(
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplier.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplier.java
index 3a4e686..15291ab 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplier.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplier.java
@@ -154,16 +154,16 @@ public class AsyncDataLogApplier implements LogApplier {
     PartialPath sgPath = null;
     if (plan instanceof InsertMultiTabletPlan) {
       PartialPath deviceId = ((InsertMultiTabletPlan) plan).getFirstDeviceId();
-      sgPath = IoTDB.metaManager.getBelongedStorageGroup(deviceId);
+      sgPath = IoTDB.schemaEngine.getBelongedStorageGroup(deviceId);
     } else if (plan instanceof InsertRowsPlan) {
       PartialPath path = ((InsertRowsPlan) plan).getFirstDeviceId();
-      sgPath = IoTDB.metaManager.getBelongedStorageGroup(path);
+      sgPath = IoTDB.schemaEngine.getBelongedStorageGroup(path);
     } else if (plan instanceof InsertPlan) {
       PartialPath deviceId = ((InsertPlan) plan).getDevicePath();
-      sgPath = IoTDB.metaManager.getBelongedStorageGroup(deviceId);
+      sgPath = IoTDB.schemaEngine.getBelongedStorageGroup(deviceId);
     } else if (plan instanceof CreateTimeSeriesPlan) {
       PartialPath path = ((CreateTimeSeriesPlan) plan).getPath();
-      sgPath = IoTDB.metaManager.getBelongedStorageGroup(path);
+      sgPath = IoTDB.schemaEngine.getBelongedStorageGroup(path);
     }
     return sgPath;
   }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
index 7e0e033..f765bfa 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
@@ -128,7 +128,7 @@ public class DataLogApplier extends BaseApplier {
     boolean hasSync = false;
     for (InsertTabletPlan insertTabletPlan : plan.getInsertTabletPlanList()) {
       try {
-        IoTDB.metaManager.getBelongedStorageGroup(insertTabletPlan.getDevicePath());
+        IoTDB.schemaEngine.getBelongedStorageGroup(insertTabletPlan.getDevicePath());
       } catch (StorageGroupNotSetException e) {
         try {
           if (!hasSync) {
@@ -150,7 +150,7 @@ public class DataLogApplier extends BaseApplier {
     boolean hasSync = false;
     for (InsertRowPlan insertRowPlan : plan.getInsertRowPlanList()) {
       try {
-        IoTDB.metaManager.getBelongedStorageGroup(insertRowPlan.getDevicePath());
+        IoTDB.schemaEngine.getBelongedStorageGroup(insertRowPlan.getDevicePath());
       } catch (StorageGroupNotSetException e) {
         try {
           if (!hasSync) {
@@ -170,7 +170,7 @@ public class DataLogApplier extends BaseApplier {
   private void applyInsert(InsertPlan plan)
       throws StorageGroupNotSetException, QueryProcessException, StorageEngineException {
     try {
-      IoTDB.metaManager.getBelongedStorageGroup(plan.getDevicePath());
+      IoTDB.schemaEngine.getBelongedStorageGroup(plan.getDevicePath());
     } catch (StorageGroupNotSetException e) {
       // the sg may not exist because the node does not catch up with the leader, retry after
       // synchronization
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/MetaSingleSnapshotLogManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/MetaSingleSnapshotLogManager.java
index 97198b9..1d81755 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/MetaSingleSnapshotLogManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/MetaSingleSnapshotLogManager.java
@@ -63,7 +63,7 @@ public class MetaSingleSnapshotLogManager extends RaftLogManager {
     // TODO-cluster https://issues.apache.org/jira/browse/IOTDB-820
     super.takeSnapshot();
     synchronized (this) {
-      storageGroupTTLMap = IoTDB.metaManager.getStorageGroupsTTL();
+      storageGroupTTLMap = IoTDB.schemaEngine.getStorageGroupsTTL();
       try {
         IAuthorizer authorizer = BasicAuthorizer.getInstance();
         userMap = authorizer.getAllUsers();
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/PartitionedSnapshotLogManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/PartitionedSnapshotLogManager.java
index bc16376..e749f36 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/PartitionedSnapshotLogManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/manage/PartitionedSnapshotLogManager.java
@@ -116,7 +116,7 @@ public abstract class PartitionedSnapshotLogManager<T extends Snapshot> extends
 
   void collectTimeseriesSchemas(List<Integer> requiredSlots) {
     slotTimeseries.clear();
-    List<PartialPath> allSgPaths = IoTDB.metaManager.getAllStorageGroupPaths();
+    List<PartialPath> allSgPaths = IoTDB.schemaEngine.getAllStorageGroupPaths();
 
     Set<Integer> requiredSlotsSet = new HashSet<Integer>(requiredSlots);
     for (PartialPath sgPath : allSgPaths) {
@@ -130,7 +130,7 @@ public abstract class PartitionedSnapshotLogManager<T extends Snapshot> extends
       }
       Collection<TimeseriesSchema> schemas =
           slotTimeseries.computeIfAbsent(slot, s -> new HashSet<>());
-      IoTDB.metaManager.collectTimeseriesSchema(sgPath, schemas);
+      IoTDB.schemaEngine.collectTimeseriesSchema(sgPath, schemas);
       logger.debug("{}: {} timeseries are snapshot in slot {}", getName(), schemas.size(), slot);
     }
   }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java
index 1cc376e..5a1011e 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshot.java
@@ -226,7 +226,7 @@ public class MetaSimpleSnapshot extends Snapshot {
           for (Map.Entry<PartialPath, Long> entry : snapshot.getStorageGroupTTLMap().entrySet()) {
             PartialPath sgPath = entry.getKey();
             try {
-              IoTDB.metaManager.setStorageGroup(sgPath);
+              IoTDB.schemaEngine.setStorageGroup(sgPath);
             } catch (StorageGroupAlreadySetException e) {
               // ignore
             } catch (MetadataException e) {
@@ -239,7 +239,7 @@ public class MetaSimpleSnapshot extends Snapshot {
 
             // 2. register ttl in the snapshot
             try {
-              IoTDB.metaManager.setTTL(sgPath, entry.getValue());
+              IoTDB.schemaEngine.setTTL(sgPath, entry.getValue());
               StorageEngine.getInstance().setTTL(sgPath, entry.getValue());
             } catch (MetadataException | IOException e) {
               logger.error(
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CSchemaEngine.java
similarity index 99%
rename from cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
rename to cluster/src/main/java/org/apache/iotdb/cluster/metadata/CSchemaEngine.java
index 28e6819..86674c7 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CSchemaEngine.java
@@ -47,7 +47,7 @@ import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.lastCache.LastCacheManager;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
@@ -127,9 +127,9 @@ import static org.apache.iotdb.cluster.query.ClusterPlanExecutor.waitForThreadPo
 import static org.apache.iotdb.db.utils.EncodingInferenceUtils.getDefaultEncoding;
 
 @SuppressWarnings("java:S1135") // ignore todos
-public class CMManager extends MManager {
+public class CSchemaEngine extends SchemaEngine {
 
-  private static final Logger logger = LoggerFactory.getLogger(CMManager.class);
+  private static final Logger logger = LoggerFactory.getLogger(CSchemaEngine.class);
 
   private ReentrantReadWriteLock cacheLock = new ReentrantReadWriteLock();
   // only cache the series who is writing, we need not to cache series who is reading
@@ -139,20 +139,20 @@ public class CMManager extends MManager {
   private MetaGroupMember metaGroupMember;
   private Coordinator coordinator;
 
-  private CMManager() {
+  private CSchemaEngine() {
     super();
     metaPuller = MetaPuller.getInstance();
     int remoteCacheSize = config.getmRemoteSchemaCacheSize();
     mRemoteMetaCache = new RemoteMetaCache(remoteCacheSize);
   }
 
-  private static class MManagerHolder {
+  private static class CSchemaEngineHolder {
 
-    private MManagerHolder() {
+    private CSchemaEngineHolder() {
       // allowed to do nothing
     }
 
-    private static final CMManager INSTANCE = new CMManager();
+    private static final CSchemaEngine INSTANCE = new CSchemaEngine();
   }
 
   /**
@@ -160,8 +160,8 @@ public class CMManager extends MManager {
    *
    * @return
    */
-  public static CMManager getInstance() {
-    return CMManager.MManagerHolder.INSTANCE;
+  public static CSchemaEngine getInstance() {
+    return CSchemaEngineHolder.INSTANCE;
   }
 
   /**
@@ -569,7 +569,7 @@ public class CMManager extends MManager {
         if (ready[i]) {
           continue;
         }
-        if (IoTDB.metaManager.isStorageGroup(storageGroups.get(i))) {
+        if (IoTDB.schemaEngine.isStorageGroup(storageGroups.get(i))) {
           ready[i] = true;
         } else {
           allReady = false;
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/MetaPuller.java b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/MetaPuller.java
index 31d8e8d..aa11d14 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/MetaPuller.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/MetaPuller.java
@@ -149,7 +149,7 @@ public class MetaPuller {
       }
       int preSize = results.size();
       for (PartialPath prefixPath : prefixPaths) {
-        IoTDB.metaManager.collectMeasurementSchema(prefixPath, results);
+        IoTDB.schemaEngine.collectMeasurementSchema(prefixPath, results);
       }
       if (logger.isDebugEnabled()) {
         logger.debug(
@@ -266,7 +266,7 @@ public class MetaPuller {
 
   /**
    * Pull the all timeseries schemas of given prefixPaths from remote nodes. All prefixPaths must
-   * contain a storage group. The pulled schemas will be cache in CMManager.
+   * contain a storage group. The pulled schemas will be cache in CSchemaEngine.
    *
    * @param ignoredGroup do not pull schema from the group to avoid backward dependency. If a user
    *     send an insert request before registering schemas, then this method may pull schemas from
@@ -319,7 +319,7 @@ public class MetaPuller {
    * Pull timeseries schemas of "prefixPaths" from "partitionGroup". If this node is a member of
    * "partitionGroup", synchronize with the group leader and collect local schemas. Otherwise pull
    * schemas from one node in the group. If "timeseriesSchemas" is null, the pulled schemas will be
-   * cached in CMManager.
+   * cached in CSchemaEngine.
    */
   public void pullTimeSeriesSchemas(
       PartitionGroup partitionGroup,
@@ -352,8 +352,8 @@ public class MetaPuller {
   }
 
   /**
-   * send the PullSchemaRequest to "node" and cache the results in CMManager or add the results to
-   * "timeseriesSchemas" if they are successfully returned.
+   * send the PullSchemaRequest to "node" and cache the results in CSchemaEngine or add the results
+   * to "timeseriesSchemas" if they are successfully returned.
    *
    * @return true if the pull succeeded, false otherwise
    */
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java b/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
index 2767d4e..79edd8b 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/partition/PartitionTable.java
@@ -124,7 +124,7 @@ public interface PartitionTable {
    */
   default PartitionGroup partitionByPathTime(PartialPath path, long timestamp)
       throws MetadataException {
-    PartialPath storageGroup = IoTDB.metaManager.getBelongedStorageGroup(path);
+    PartialPath storageGroup = IoTDB.schemaEngine.getBelongedStorageGroup(path);
     return this.route(storageGroup.getFullPath(), timestamp);
   }
 
@@ -138,7 +138,7 @@ public interface PartitionTable {
     long partitionInterval = StorageEngine.getTimePartitionInterval();
 
     MultiKeyMap<Long, PartitionGroup> timeRangeMapRaftGroup = new MultiKeyMap<>();
-    PartialPath storageGroup = IoTDB.metaManager.getBelongedStorageGroup(path);
+    PartialPath storageGroup = IoTDB.schemaEngine.getBelongedStorageGroup(path);
     startTime = StorageEngine.convertMilliWithPrecision(startTime);
     endTime = StorageEngine.convertMilliWithPrecision(endTime);
     while (startTime <= endTime) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPhysicalGenerator.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPhysicalGenerator.java
index 67ea518..c588480 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPhysicalGenerator.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPhysicalGenerator.java
@@ -20,7 +20,7 @@
 package org.apache.iotdb.cluster.query;
 
 import org.apache.iotdb.cluster.config.ClusterDescriptor;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -50,8 +50,8 @@ public class ClusterPhysicalGenerator extends PhysicalGenerator {
 
   private static final Logger logger = LoggerFactory.getLogger(ClusterPhysicalGenerator.class);
 
-  private CMManager getCMManager() {
-    return ((CMManager) IoTDB.metaManager);
+  private CSchemaEngine getCSchemaEngine() {
+    return ((CSchemaEngine) IoTDB.schemaEngine);
   }
 
   @Override
@@ -64,7 +64,7 @@ public class ClusterPhysicalGenerator extends PhysicalGenerator {
     // update storage groups before parsing query plans
     if (operator instanceof QueryOperator) {
       try {
-        getCMManager().syncMetaLeader();
+        getCSchemaEngine().syncMetaLeader();
       } catch (MetadataException e) {
         throw new QueryProcessException(e);
       }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
index f3707da..f4944bf 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanExecutor.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.cluster.client.sync.SyncDataClient;
 import org.apache.iotdb.cluster.config.ClusterConstant;
 import org.apache.iotdb.cluster.config.ClusterDescriptor;
 import org.apache.iotdb.cluster.exception.CheckConsistencyException;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.partition.slot.SlotPartitionTable;
 import org.apache.iotdb.cluster.query.filter.SlotSgFilter;
@@ -123,7 +123,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
   @Override
   @TestOnly
   protected List<MeasurementPath> getPathsName(PartialPath path) throws MetadataException {
-    return ((CMManager) IoTDB.metaManager).getMatchedPaths(path);
+    return ((CSchemaEngine) IoTDB.schemaEngine).getMatchedPaths(path);
   }
 
   @Override
@@ -142,7 +142,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
     } catch (CheckConsistencyException e) {
       throw new MetadataException(e);
     }
-    Map<String, List<PartialPath>> sgPathMap = IoTDB.metaManager.groupPathByStorageGroup(path);
+    Map<String, List<PartialPath>> sgPathMap = IoTDB.schemaEngine.groupPathByStorageGroup(path);
     if (sgPathMap.isEmpty()) {
       throw new PathNotExistException(path.getFullPath());
     }
@@ -235,7 +235,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
   }
 
   private int getLocalDeviceCount(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getDevicesNum(path);
+    return IoTDB.schemaEngine.getDevicesNum(path);
   }
 
   private int getRemoteDeviceCount(PartitionGroup partitionGroup, List<String> pathsToCount)
@@ -331,7 +331,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
       wildcardPath = wildcardPath.concatNode(IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD);
     }
     Map<String, List<PartialPath>> sgPathMap =
-        IoTDB.metaManager.groupPathByStorageGroup(wildcardPath);
+        IoTDB.schemaEngine.groupPathByStorageGroup(wildcardPath);
     if (sgPathMap.isEmpty()) {
       return 0;
     }
@@ -459,9 +459,9 @@ public class ClusterPlanExecutor extends PlanExecutor {
   private int getLocalPathCount(PartialPath path, int level) throws MetadataException {
     int localResult;
     if (level == -1) {
-      localResult = IoTDB.metaManager.getAllTimeseriesCount(path);
+      localResult = IoTDB.schemaEngine.getAllTimeseriesCount(path);
     } else {
-      localResult = IoTDB.metaManager.getNodesCountInGivenLevel(path, level);
+      localResult = IoTDB.schemaEngine.getNodesCountInGivenLevel(path, level);
     }
     return localResult;
   }
@@ -569,7 +569,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
     DataGroupMember localDataMember = metaGroupMember.getLocalDataMember(group.getHeader());
     localDataMember.syncLeaderWithConsistencyCheck(false);
     try {
-      return IoTDB.metaManager.getNodesListInGivenLevel(
+      return IoTDB.schemaEngine.getNodesListInGivenLevel(
           schemaPattern,
           level,
           new SlotSgFilter(
@@ -678,7 +678,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
         metaGroupMember.getLocalDataMember(group.getHeader(), group.getRaftId());
     localDataMember.syncLeaderWithConsistencyCheck(false);
     try {
-      return IoTDB.metaManager.getChildNodeNameInNextLevel(path);
+      return IoTDB.schemaEngine.getChildNodeNameInNextLevel(path);
     } catch (MetadataException e) {
       logger.error("Cannot not get next children nodes of {} from {} locally", path, group);
       return Collections.emptySet();
@@ -803,7 +803,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
     DataGroupMember localDataMember = metaGroupMember.getLocalDataMember(group.getHeader());
     localDataMember.syncLeaderWithConsistencyCheck(false);
     try {
-      return IoTDB.metaManager.getChildNodePathInNextLevel(path);
+      return IoTDB.schemaEngine.getChildNodePathInNextLevel(path);
     } catch (MetadataException e) {
       logger.error("Cannot not get next children of {} from {} locally", path, group);
       return Collections.emptySet();
@@ -868,7 +868,7 @@ public class ClusterPlanExecutor extends PlanExecutor {
     } catch (CheckConsistencyException e) {
       logger.warn("Failed to check consistency.", e);
     }
-    return IoTDB.metaManager.getAllStorageGroupNodes();
+    return IoTDB.schemaEngine.getAllStorageGroupNodes();
   }
 
   @Override
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanRouter.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanRouter.java
index 8c1de4f..88819c0 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanRouter.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterPlanRouter.java
@@ -31,7 +31,7 @@ import org.apache.iotdb.cluster.utils.PartitionUtils;
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertMultiTabletPlan;
@@ -71,8 +71,8 @@ public class ClusterPlanRouter {
     this.partitionTable = partitionTable;
   }
 
-  private MManager getMManager() {
-    return IoTDB.metaManager;
+  private SchemaEngine SchemaEngine() {
+    return IoTDB.schemaEngine;
   }
 
   @TestOnly
@@ -108,7 +108,7 @@ public class ClusterPlanRouter {
   private PartitionGroup routePlan(ShowChildPathsPlan plan) {
     try {
       return partitionTable.route(
-          getMManager().getBelongedStorageGroup(plan.getPath()).getFullPath(), 0);
+          SchemaEngine().getBelongedStorageGroup(plan.getPath()).getFullPath(), 0);
     } catch (MetadataException e) {
       // the path is too short to have no a storage group name, e.g., "root"
       // so we can do it locally.
@@ -218,7 +218,7 @@ public class ClusterPlanRouter {
         InsertTabletPlan tmpPlan = (InsertTabletPlan) entry.getKey();
         PartitionGroup tmpPg = entry.getValue();
         // 1.1 the sg that the plan(actually calculated based on device) belongs to
-        PartialPath tmpSgPath = IoTDB.metaManager.getBelongedStorageGroup(tmpPlan.getDevicePath());
+        PartialPath tmpSgPath = IoTDB.schemaEngine.getBelongedStorageGroup(tmpPlan.getDevicePath());
         Map<PartialPath, InsertMultiTabletPlan> sgPathPlanMap = pgSgPathPlanMap.get(tmpPg);
         if (sgPathPlanMap == null) {
           // 2.1 construct the InsertMultiTabletPlan
@@ -279,7 +279,7 @@ public class ClusterPlanRouter {
     Map<PartitionGroup, InsertRowsPlan> groupPlanMap = new HashMap<>();
     for (int i = 0; i < insertRowsPlan.getInsertRowPlanList().size(); i++) {
       InsertRowPlan rowPlan = insertRowsPlan.getInsertRowPlanList().get(i);
-      PartialPath storageGroup = getMManager().getBelongedStorageGroup(rowPlan.getDevicePath());
+      PartialPath storageGroup = SchemaEngine().getBelongedStorageGroup(rowPlan.getDevicePath());
       PartitionGroup group = partitionTable.route(storageGroup.getFullPath(), rowPlan.getTime());
       if (groupPlanMap.containsKey(group)) {
         InsertRowsPlan tmpPlan = groupPlanMap.get(group);
@@ -300,7 +300,7 @@ public class ClusterPlanRouter {
   @SuppressWarnings("SuspiciousSystemArraycopy")
   private Map<PhysicalPlan, PartitionGroup> splitAndRoutePlan(InsertTabletPlan plan)
       throws MetadataException {
-    PartialPath storageGroup = getMManager().getBelongedStorageGroup(plan.getDevicePath());
+    PartialPath storageGroup = SchemaEngine().getBelongedStorageGroup(plan.getDevicePath());
     Map<PhysicalPlan, PartitionGroup> result = new HashMap<>();
     long[] times = plan.getTimes();
     if (times.length == 0) {
@@ -481,7 +481,7 @@ public class ClusterPlanRouter {
     Map<PhysicalPlan, PartitionGroup> result = new HashMap<>();
     Map<PartitionGroup, List<InsertRowPlan>> groupPlanMap = new HashMap<>();
     Map<PartitionGroup, List<Integer>> groupPlanIndexMap = new HashMap<>();
-    PartialPath storageGroup = getMManager().getBelongedStorageGroup(plan.getDevicePath());
+    PartialPath storageGroup = SchemaEngine().getBelongedStorageGroup(plan.getDevicePath());
     for (int i = 0; i < plan.getRowPlans().length; i++) {
       InsertRowPlan p = plan.getRowPlans()[i];
       PartitionGroup group = partitionTable.route(storageGroup.getFullPath(), p.getTime());
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
index f1a33d9..dfbad17 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.cluster.query;
 
 import org.apache.iotdb.cluster.exception.CheckConsistencyException;
 import org.apache.iotdb.cluster.exception.ReaderNotFoundException;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.metadata.MetaPuller;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.partition.slot.SlotPartitionTable;
@@ -111,8 +111,8 @@ public class LocalQueryExecutor {
     this.queryManager = dataGroupMember.getQueryManager();
   }
 
-  private CMManager getCMManager() {
-    return ((CMManager) IoTDB.metaManager);
+  private CSchemaEngine getCSchemaEngine() {
+    return ((CSchemaEngine) IoTDB.schemaEngine);
   }
 
   /** Return the data of the reader whose id is "readerId", using timestamps in "timeBuffer". */
@@ -225,7 +225,7 @@ public class LocalQueryExecutor {
     // The request is routed to this node since this node contains the data and
     // metadata of the designated timeseries. Because of which, the following metadata access will
     // not trigger an RPC.
-    path.setMeasurementSchema(IoTDB.metaManager.getSeriesSchema(path));
+    path.setMeasurementSchema(IoTDB.schemaEngine.getSeriesSchema(path));
     TSDataType dataType = TSDataType.values()[request.getDataTypeOrdinal()];
     Filter timeFilter = null;
     Filter valueFilter = null;
@@ -313,7 +313,7 @@ public class LocalQueryExecutor {
       // The request is routed to this node since this node contains the data and
       // metadata of the designated timeseries. Because of which, the following metadata access will
       // not trigger an RPC.
-      path.setMeasurementSchema(IoTDB.metaManager.getSeriesSchema(path));
+      path.setMeasurementSchema(IoTDB.schemaEngine.getSeriesSchema(path));
       paths.add(path);
       dataTypes.add(TSDataType.values()[request.getDataTypeOrdinal().get(i)]);
     }
@@ -485,7 +485,8 @@ public class LocalQueryExecutor {
             .computeIfAbsent(slotPreviousHolderMap.get(slot), s -> new ArrayList<>())
             .add(new PartialPath(prefixPath));
       } else {
-        getCMManager().collectMeasurementSchema(new PartialPath(prefixPath), measurementSchemas);
+        getCSchemaEngine()
+            .collectMeasurementSchema(new PartialPath(prefixPath), measurementSchemas);
       }
     }
 
@@ -523,7 +524,7 @@ public class LocalQueryExecutor {
             .computeIfAbsent(slotPreviousHolderMap.get(slot), s -> new ArrayList<>())
             .add(prefixPath);
       } else {
-        getCMManager().collectTimeseriesSchema(new PartialPath(prefixPath), timeseriesSchemas);
+        getCSchemaEngine().collectTimeseriesSchema(new PartialPath(prefixPath), timeseriesSchemas);
       }
     }
 
@@ -559,7 +560,7 @@ public class LocalQueryExecutor {
     // The request is routed to this node since this node contains the data and
     // metadata of the designated timeseries. Because of which, the following metadata access will
     // not trigger an RPC.
-    path.setMeasurementSchema(IoTDB.metaManager.getSeriesSchema(path));
+    path.setMeasurementSchema(IoTDB.schemaEngine.getSeriesSchema(path));
     TSDataType dataType = TSDataType.values()[request.dataTypeOrdinal];
     Set<String> deviceMeasurements = request.getDeviceMeasurements();
 
@@ -610,7 +611,7 @@ public class LocalQueryExecutor {
     List<ShowTimeSeriesResult> allTimeseriesSchema;
     RemoteQueryContext queryContext =
         queryManager.getQueryContext(request.getRequester(), request.getQueryId());
-    allTimeseriesSchema = getCMManager().showLocalTimeseries(plan, queryContext);
+    allTimeseriesSchema = getCSchemaEngine().showLocalTimeseries(plan, queryContext);
 
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     try (DataOutputStream dataOutputStream = new DataOutputStream(outputStream)) {
@@ -626,7 +627,7 @@ public class LocalQueryExecutor {
       throws CheckConsistencyException, IOException, MetadataException {
     dataGroupMember.syncLeaderWithConsistencyCheck(false);
     ShowDevicesPlan plan = (ShowDevicesPlan) PhysicalPlan.Factory.create(planBuffer);
-    List<ShowDevicesResult> allDevicesResult = getCMManager().getLocalDevices(plan);
+    List<ShowDevicesResult> allDevicesResult = getCSchemaEngine().getLocalDevices(plan);
 
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     try (DataOutputStream dataOutputStream = new DataOutputStream(outputStream)) {
@@ -767,7 +768,7 @@ public class LocalQueryExecutor {
     for (String seriesPath : timeseriesList) {
       try {
         List<MeasurementPath> path =
-            getCMManager().getMeasurementPaths(new PartialPath(seriesPath));
+            getCSchemaEngine().getMeasurementPaths(new PartialPath(seriesPath));
         if (path.size() != 1) {
           throw new MetadataException(
               String.format("Timeseries number of the name [%s] is not 1.", seriesPath));
@@ -1007,9 +1008,9 @@ public class LocalQueryExecutor {
     int count = 0;
     for (String s : pathsToQuery) {
       if (level == -1) {
-        count += getCMManager().getAllTimeseriesCount(new PartialPath(s));
+        count += getCSchemaEngine().getAllTimeseriesCount(new PartialPath(s));
       } else {
-        count += getCMManager().getNodesCountInGivenLevel(new PartialPath(s), level);
+        count += getCSchemaEngine().getNodesCountInGivenLevel(new PartialPath(s), level);
       }
     }
     return count;
@@ -1021,7 +1022,7 @@ public class LocalQueryExecutor {
 
     int count = 0;
     for (String s : pathsToQuery) {
-      count += getCMManager().getDevicesNum(new PartialPath(s));
+      count += getCSchemaEngine().getDevicesNum(new PartialPath(s));
     }
     return count;
   }
@@ -1038,7 +1039,7 @@ public class LocalQueryExecutor {
     for (String path : request.getPaths()) {
       PartialPath partialPath = new PartialPath(path);
       seriesPaths.add(
-          new MeasurementPath(partialPath, IoTDB.metaManager.getSeriesSchema(partialPath)));
+          new MeasurementPath(partialPath, IoTDB.schemaEngine.getSeriesSchema(partialPath)));
     }
     List<TSDataType> dataTypes = new ArrayList<>(request.dataTypeOrdinals.size());
     for (Integer dataTypeOrdinal : request.dataTypeOrdinals) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/filter/SlotSgFilter.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/filter/SlotSgFilter.java
index e510dbc..d336822 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/filter/SlotSgFilter.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/filter/SlotSgFilter.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.cluster.query.filter;
 
 import org.apache.iotdb.cluster.config.ClusterConstant;
 import org.apache.iotdb.cluster.partition.slot.SlotPartitionTable;
-import org.apache.iotdb.db.metadata.MManager.StorageGroupFilter;
+import org.apache.iotdb.db.metadata.SchemaEngine.StorageGroupFilter;
 
 import java.util.List;
 
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
index 08ae23b..500d43e 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
@@ -111,7 +111,7 @@ public class ClusterTimeGenerator extends ServerTimeGenerator {
     TSDataType dataType;
     ManagedSeriesReader mergeReader;
     try {
-      dataType = IoTDB.metaManager.getSeriesType(path);
+      dataType = IoTDB.schemaEngine.getSeriesType(path);
       mergeReader =
           readerFactory.getSeriesReader(
               path,
@@ -173,7 +173,7 @@ public class ClusterTimeGenerator extends ServerTimeGenerator {
     PartialPath path = (PartialPath) expression.getSeriesPath();
     TSDataType dataType;
     try {
-      dataType = IoTDB.metaManager.getSeriesType(path);
+      dataType = IoTDB.schemaEngine.getSeriesType(path);
 
       List<PartitionGroup> partitionGroups = metaGroupMember.routeFilter(null, path);
       for (PartitionGroup partitionGroup : partitionGroups) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
index 5682c15..b2775e5 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
@@ -42,7 +42,7 @@ import org.apache.iotdb.cluster.log.snapshot.FileSnapshot;
 import org.apache.iotdb.cluster.log.snapshot.PartitionedSnapshot;
 import org.apache.iotdb.cluster.log.snapshot.PullSnapshotTask;
 import org.apache.iotdb.cluster.log.snapshot.PullSnapshotTaskDescriptor;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.partition.NodeAdditionResult;
 import org.apache.iotdb.cluster.partition.NodeRemovalResult;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
@@ -876,7 +876,7 @@ public class DataGroupMember extends RaftMember implements DataGroupMemberMBean
       plan.getPlanFromFailed();
     }
 
-    return ((CMManager) IoTDB.metaManager).createTimeseries(plan);
+    return ((CSchemaEngine) IoTDB.schemaEngine).createTimeseries(plan);
   }
 
   /**
@@ -889,7 +889,7 @@ public class DataGroupMember extends RaftMember implements DataGroupMemberMBean
     }
 
     Set<Integer> slotSet = new HashSet<>(slots);
-    List<PartialPath> allStorageGroupNames = IoTDB.metaManager.getAllStorageGroupPaths();
+    List<PartialPath> allStorageGroupNames = IoTDB.schemaEngine.getAllStorageGroupPaths();
     TimePartitionFilter filter =
         (storageGroupName, timePartitionId) -> {
           int slot =
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
index 9691c25..1946128 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
@@ -1430,7 +1430,7 @@ public class MetaGroupMember extends RaftMember implements IService, MetaGroupMe
     List<PartitionGroup> partitionGroups = new ArrayList<>();
     PartialPath storageGroupName;
     try {
-      storageGroupName = IoTDB.metaManager.getBelongedStorageGroup(path);
+      storageGroupName = IoTDB.schemaEngine.getBelongedStorageGroup(path);
     } catch (MetadataException e) {
       throw new StorageEngineException(e);
     }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataAsyncService.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataAsyncService.java
index 594f983..11f026f 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataAsyncService.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataAsyncService.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.cluster.config.ClusterConstant;
 import org.apache.iotdb.cluster.exception.CheckConsistencyException;
 import org.apache.iotdb.cluster.exception.LeaderUnknownException;
 import org.apache.iotdb.cluster.exception.ReaderNotFoundException;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.rpc.thrift.GetAggrResultRequest;
 import org.apache.iotdb.cluster.rpc.thrift.GetAllPathsResult;
 import org.apache.iotdb.cluster.rpc.thrift.GroupByRequest;
@@ -297,7 +297,7 @@ public class DataAsyncService extends BaseAsyncService implements TSDataService.
       AsyncMethodCallback<GetAllPathsResult> resultHandler) {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      resultHandler.onComplete(((CMManager) IoTDB.metaManager).getAllPaths(paths, withAlias));
+      resultHandler.onComplete(((CSchemaEngine) IoTDB.schemaEngine).getAllPaths(paths, withAlias));
     } catch (MetadataException | CheckConsistencyException e) {
       resultHandler.onError(e);
     }
@@ -311,7 +311,8 @@ public class DataAsyncService extends BaseAsyncService implements TSDataService.
       AsyncMethodCallback<Set<String>> resultHandler) {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      resultHandler.onComplete(((CMManager) IoTDB.metaManager).getAllDevices(path, isPrefixMatch));
+      resultHandler.onComplete(
+          ((CSchemaEngine) IoTDB.schemaEngine).getAllDevices(path, isPrefixMatch));
     } catch (MetadataException | CheckConsistencyException e) {
       resultHandler.onError(e);
     }
@@ -335,7 +336,7 @@ public class DataAsyncService extends BaseAsyncService implements TSDataService.
       AsyncMethodCallback<List<String>> resultHandler) {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      resultHandler.onComplete(((CMManager) IoTDB.metaManager).getNodeList(path, nodeLevel));
+      resultHandler.onComplete(((CSchemaEngine) IoTDB.schemaEngine).getNodeList(path, nodeLevel));
     } catch (CheckConsistencyException | MetadataException e) {
       resultHandler.onError(e);
     }
@@ -346,7 +347,7 @@ public class DataAsyncService extends BaseAsyncService implements TSDataService.
       RaftNode header, String path, AsyncMethodCallback<Set<String>> resultHandler) {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      resultHandler.onComplete(((CMManager) IoTDB.metaManager).getChildNodeInNextLevel(path));
+      resultHandler.onComplete(((CSchemaEngine) IoTDB.schemaEngine).getChildNodeInNextLevel(path));
     } catch (CheckConsistencyException | MetadataException e) {
       resultHandler.onError(e);
     }
@@ -357,7 +358,8 @@ public class DataAsyncService extends BaseAsyncService implements TSDataService.
       RaftNode header, String path, AsyncMethodCallback<Set<String>> resultHandler) {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      resultHandler.onComplete(((CMManager) IoTDB.metaManager).getChildNodePathInNextLevel(path));
+      resultHandler.onComplete(
+          ((CSchemaEngine) IoTDB.schemaEngine).getChildNodePathInNextLevel(path));
     } catch (CheckConsistencyException | MetadataException e) {
       resultHandler.onError(e);
     }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataSyncService.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataSyncService.java
index 0777241..61e478a 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataSyncService.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/service/DataSyncService.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.cluster.config.ClusterConstant;
 import org.apache.iotdb.cluster.exception.CheckConsistencyException;
 import org.apache.iotdb.cluster.exception.LeaderUnknownException;
 import org.apache.iotdb.cluster.exception.ReaderNotFoundException;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.rpc.thrift.GetAggrResultRequest;
 import org.apache.iotdb.cluster.rpc.thrift.GetAllPathsResult;
 import org.apache.iotdb.cluster.rpc.thrift.GroupByRequest;
@@ -287,7 +287,7 @@ public class DataSyncService extends BaseSyncService implements TSDataService.If
       throws TException {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      return ((CMManager) IoTDB.metaManager).getAllPaths(paths, withAlias);
+      return ((CSchemaEngine) IoTDB.schemaEngine).getAllPaths(paths, withAlias);
     } catch (MetadataException | CheckConsistencyException e) {
       throw new TException(e);
     }
@@ -298,7 +298,7 @@ public class DataSyncService extends BaseSyncService implements TSDataService.If
       throws TException {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      return ((CMManager) IoTDB.metaManager).getAllDevices(path, isPrefixMatch);
+      return ((CSchemaEngine) IoTDB.schemaEngine).getAllDevices(path, isPrefixMatch);
     } catch (MetadataException | CheckConsistencyException e) {
       throw new TException(e);
     }
@@ -317,7 +317,7 @@ public class DataSyncService extends BaseSyncService implements TSDataService.If
   public List<String> getNodeList(RaftNode header, String path, int nodeLevel) throws TException {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      return ((CMManager) IoTDB.metaManager).getNodeList(path, nodeLevel);
+      return ((CSchemaEngine) IoTDB.schemaEngine).getNodeList(path, nodeLevel);
     } catch (CheckConsistencyException | MetadataException e) {
       throw new TException(e);
     }
@@ -327,7 +327,7 @@ public class DataSyncService extends BaseSyncService implements TSDataService.If
   public Set<String> getChildNodeInNextLevel(RaftNode header, String path) throws TException {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      return ((CMManager) IoTDB.metaManager).getChildNodeInNextLevel(path);
+      return ((CSchemaEngine) IoTDB.schemaEngine).getChildNodeInNextLevel(path);
     } catch (CheckConsistencyException | MetadataException e) {
       throw new TException(e);
     }
@@ -337,7 +337,7 @@ public class DataSyncService extends BaseSyncService implements TSDataService.If
   public Set<String> getChildNodePathInNextLevel(RaftNode header, String path) throws TException {
     try {
       dataGroupMember.syncLeaderWithConsistencyCheck(false);
-      return ((CMManager) IoTDB.metaManager).getChildNodePathInNextLevel(path);
+      return ((CSchemaEngine) IoTDB.schemaEngine).getChildNodePathInNextLevel(path);
     } catch (CheckConsistencyException | MetadataException e) {
       throw new TException(e);
     }
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterQueryUtils.java b/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterQueryUtils.java
index c33f504..4ad2332 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterQueryUtils.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterQueryUtils.java
@@ -44,7 +44,7 @@ public class ClusterQueryUtils {
   }
 
   public static void checkPathExistence(PartialPath path) throws QueryProcessException {
-    if (!IoTDB.metaManager.isPathExist(path)) {
+    if (!IoTDB.schemaEngine.isPathExist(path)) {
       try {
         MetaPuller.getInstance().pullTimeSeriesSchemas(Collections.singletonList(path), null);
       } catch (MetadataException e) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterUtils.java b/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterUtils.java
index f631958..55cb8ac 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterUtils.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/utils/ClusterUtils.java
@@ -323,7 +323,7 @@ public class ClusterUtils {
       PartialPath prefixPath, MetaGroupMember metaGroupMember) throws MetadataException {
     int slot;
     try {
-      PartialPath storageGroup = IoTDB.metaManager.getBelongedStorageGroup(prefixPath);
+      PartialPath storageGroup = IoTDB.schemaEngine.getBelongedStorageGroup(prefixPath);
       slot =
           SlotPartitionTable.getSlotStrategy()
               .calculateSlotByPartitionNum(storageGroup.getFullPath(), 0, ClusterConstant.SLOT_NUM);
@@ -335,7 +335,7 @@ public class ClusterUtils {
       } catch (CheckConsistencyException checkConsistencyException) {
         throw new MetadataException(checkConsistencyException.getMessage());
       }
-      PartialPath storageGroup = IoTDB.metaManager.getBelongedStorageGroup(prefixPath);
+      PartialPath storageGroup = IoTDB.schemaEngine.getBelongedStorageGroup(prefixPath);
       slot =
           SlotPartitionTable.getSlotStrategy()
               .calculateSlotByPartitionNum(storageGroup.getFullPath(), 0, ClusterConstant.SLOT_NUM);
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplierTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplierTest.java
index c1fec06..c2af836 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplierTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/AsyncDataLogApplierTest.java
@@ -52,15 +52,15 @@ public class AsyncDataLogApplierTest {
   public void setUp() throws Exception {
     logsToApply = new ArrayList<>();
     appliedLogs = new ConcurrentSkipListSet<>();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     for (int i = 0; i < 10; i++) {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
     }
   }
 
   @After
   public void tearDown() throws IOException {
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
   }
 
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
index 55fb316..51690d1 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/DataLogApplierTest.java
@@ -31,7 +31,7 @@ import org.apache.iotdb.cluster.common.TestUtils;
 import org.apache.iotdb.cluster.coordinator.Coordinator;
 import org.apache.iotdb.cluster.log.logtypes.CloseFileLog;
 import org.apache.iotdb.cluster.log.logtypes.PhysicalPlanLog;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.metadata.MetaPuller;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.partition.slot.SlotPartitionTable;
@@ -113,7 +113,7 @@ public class DataLogApplierTest extends IoTDBTest {
         public boolean syncLeader(RaftMember.CheckConsistency checkConsistency) {
           try {
             // for testApplyCreateMultiTimeseiresWithPulling()
-            IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg2"));
+            IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg2"));
           } catch (StorageGroupAlreadySetException e) {
             logger.warn("[may ignore me in tests] {}", e.getMessage(), e);
           } catch (MetadataException e) {
@@ -158,7 +158,7 @@ public class DataLogApplierTest extends IoTDBTest {
   public void setUp()
       throws org.apache.iotdb.db.exception.StartupException, QueryProcessException,
           IllegalPathException {
-    IoTDB.setMetaManager(CMManager.getInstance());
+    IoTDB.setSchemaEngine(CSchemaEngine.getInstance());
     testMetaGroupMember.setCoordinator(new Coordinator());
     MetaPuller.getInstance().init(testMetaGroupMember);
     super.setUp();
@@ -276,7 +276,7 @@ public class DataLogApplierTest extends IoTDBTest {
               public void returnSyncClient(
                   RaftService.Client client, Node node, ClientCategory category) {}
             });
-    ((CMManager) IoTDB.metaManager).setMetaGroupMember(testMetaGroupMember);
+    ((CSchemaEngine) IoTDB.schemaEngine).setMetaGroupMember(testMetaGroupMember);
     testDataGroupMember.setMetaGroupMember(testMetaGroupMember);
     applier = new DataLogApplier(testMetaGroupMember, testDataGroupMember);
   }
@@ -439,7 +439,7 @@ public class DataLogApplierTest extends IoTDBTest {
 
   @Test
   public void testApplyCreateMultiTimeseiresWithPulling() throws MetadataException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg1"));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg1"));
     CreateMultiTimeSeriesPlan multiTimeSeriesPlan = new CreateMultiTimeSeriesPlan();
     multiTimeSeriesPlan.setIndexes(Collections.emptyList());
     multiTimeSeriesPlan.setPaths(
@@ -455,7 +455,7 @@ public class DataLogApplierTest extends IoTDBTest {
     PhysicalPlanLog log = new PhysicalPlanLog(multiTimeSeriesPlan);
     // the applier should sync meta leader to get root.sg2 and report no error
     applier.apply(log);
-    assertTrue(IoTDB.metaManager.getAllStorageGroupPaths().contains(new PartialPath("root.sg2")));
+    assertTrue(IoTDB.schemaEngine.getAllStorageGroupPaths().contains(new PartialPath("root.sg2")));
     assertNull(log.getException());
   }
 
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/MetaLogApplierTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/MetaLogApplierTest.java
index c9bbcbf..f0c5e67 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/MetaLogApplierTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/applier/MetaLogApplierTest.java
@@ -113,7 +113,7 @@ public class MetaLogApplierTest extends IoTDBTest {
     physicalPlanLog.setPlan(setStorageGroupPlan);
 
     applier.apply(physicalPlanLog);
-    assertTrue(IoTDB.metaManager.isPathExist(new PartialPath("root.applyMeta")));
+    assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath("root.applyMeta")));
 
     CreateTimeSeriesPlan createTimeSeriesPlan =
         new CreateTimeSeriesPlan(
@@ -127,9 +127,9 @@ public class MetaLogApplierTest extends IoTDBTest {
             null);
     physicalPlanLog.setPlan(createTimeSeriesPlan);
     applier.apply(physicalPlanLog);
-    assertTrue(IoTDB.metaManager.isPathExist(new PartialPath("root.applyMeta.s1")));
+    assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath("root.applyMeta.s1")));
     assertEquals(
         TSDataType.DOUBLE,
-        IoTDB.metaManager.getSeriesType(new PartialPath("root" + ".applyMeta.s1")));
+        IoTDB.schemaEngine.getSeriesType(new PartialPath("root" + ".applyMeta.s1")));
   }
 }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/catchup/CatchUpTaskTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/catchup/CatchUpTaskTest.java
index 9517199..2cabf34 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/catchup/CatchUpTaskTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/catchup/CatchUpTaskTest.java
@@ -185,7 +185,7 @@ public class CatchUpTaskTest {
 
   @Before
   public void setUp() {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prevUseAsyncServer = ClusterDescriptor.getInstance().getConfig().isUseAsyncServer();
     ClusterDescriptor.getInstance().getConfig().setUseAsyncServer(true);
     receivedLogs = new ArrayList<>();
@@ -197,7 +197,7 @@ public class CatchUpTaskTest {
 
   @After
   public void tearDown() throws Exception {
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     sender.stop();
     sender.closeLogManager();
     EnvironmentUtils.cleanAllDir();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/DataSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/DataSnapshotTest.java
index 937a77a..7765132 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/DataSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/DataSnapshotTest.java
@@ -179,7 +179,7 @@ public abstract class DataSnapshotTest {
     dataGroupMember.setLogManager(new TestLogManager(0));
     EnvironmentUtils.envSetUp();
     for (int i = 0; i < 10; i++) {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
     }
     addNetFailure = false;
   }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
index ab46385..407c373 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/FileSnapshotTest.java
@@ -114,7 +114,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
     assertEquals(SlotStatus.NULL, dataGroupMember.getSlotManager().getStatus(0));
 
     for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
     VirtualStorageGroupProcessor processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
@@ -157,7 +157,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
       assertEquals(SlotStatus.NULL, dataGroupMember.getSlotManager().getStatus(0));
 
       for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-        assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+        assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
       }
       VirtualStorageGroupProcessor processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
@@ -206,7 +206,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
     assertEquals(SlotStatus.NULL, dataGroupMember.getSlotManager().getStatus(0));
 
     for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
     VirtualStorageGroupProcessor processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
@@ -291,7 +291,7 @@ public class FileSnapshotTest extends DataSnapshotTest {
     defaultInstaller.install(snapshot, 0, false);
 
     for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
     VirtualStorageGroupProcessor processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java
index f8317a5..bbc749d 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/MetaSimpleSnapshotTest.java
@@ -198,7 +198,7 @@ public class MetaSimpleSnapshotTest extends IoTDBTest {
     SnapshotInstaller defaultInstaller = metaSimpleSnapshot.getDefaultInstaller(metaGroupMember);
     defaultInstaller.install(metaSimpleSnapshot, -1, false);
 
-    Map<PartialPath, Long> storageGroupsTTL = IoTDB.metaManager.getStorageGroupsTTL();
+    Map<PartialPath, Long> storageGroupsTTL = IoTDB.schemaEngine.getStorageGroupsTTL();
     for (int i = 0; i < 10; i++) {
       PartialPath partialPath = new PartialPath("root.ln.sg" + i);
       assertEquals(i, (long) storageGroupsTTL.get(partialPath));
@@ -306,7 +306,7 @@ public class MetaSimpleSnapshotTest extends IoTDBTest {
       SnapshotInstaller defaultInstaller = metaSimpleSnapshot.getDefaultInstaller(metaGroupMember);
       defaultInstaller.install(metaSimpleSnapshot, -1, false);
 
-      Map<PartialPath, Long> storageGroupsTTL = IoTDB.metaManager.getStorageGroupsTTL();
+      Map<PartialPath, Long> storageGroupsTTL = IoTDB.schemaEngine.getStorageGroupsTTL();
       for (int i = 0; i < 10; i++) {
         PartialPath partialPath = new PartialPath("root.ln.sg" + i);
         assertNull(storageGroupsTTL.get(partialPath));
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
index 010ce41..fd241f5 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PartitionedSnapshotTest.java
@@ -107,7 +107,7 @@ public class PartitionedSnapshotTest extends DataSnapshotTest {
     }
 
     for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
     VirtualStorageGroupProcessor processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
@@ -183,7 +183,8 @@ public class PartitionedSnapshotTest extends DataSnapshotTest {
       }
 
       for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-        assertFalse(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+        assertFalse(
+            IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
       }
       VirtualStorageGroupProcessor processor =
           StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
index aea2a58..421312d 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/log/snapshot/PullSnapshotTaskTest.java
@@ -289,7 +289,7 @@ public class PullSnapshotTaskTest extends DataSnapshotTest {
     task.call();
 
     for (TimeseriesSchema timeseriesSchema : timeseriesSchemas) {
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     }
     VirtualStorageGroupProcessor processor =
         StorageEngine.getInstance().getProcessor(new PartialPath(TestUtils.getTestSg(0)));
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/partition/MManagerWhiteBox.java b/cluster/src/test/java/org/apache/iotdb/cluster/partition/SchemaEngineWhiteBox.java
similarity index 70%
rename from cluster/src/test/java/org/apache/iotdb/cluster/partition/MManagerWhiteBox.java
rename to cluster/src/test/java/org/apache/iotdb/cluster/partition/SchemaEngineWhiteBox.java
index 0b06d84..7993829 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/partition/MManagerWhiteBox.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/partition/SchemaEngineWhiteBox.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.cluster.partition;
 
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 
 import org.powermock.reflect.Whitebox;
 
@@ -26,26 +26,26 @@ import java.io.File;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
-public class MManagerWhiteBox {
+public class SchemaEngineWhiteBox {
 
-  public static MManager newMManager(String logFilePath) {
-    Constructor<MManager> constructor = getMManagerConstructor();
+  public static SchemaEngine newSchemaEngine(String logFilePath) {
+    Constructor<SchemaEngine> constructor = getSchemaEngineConstructor();
     constructor.setAccessible(true);
     try {
-      MManager manager = constructor.newInstance();
+      SchemaEngine schemaEngine = constructor.newInstance();
       new File(logFilePath).getParentFile().mkdirs();
-      Whitebox.setInternalState(manager, "logFilePath", logFilePath);
-      manager.initForMultiMManagerTest();
-      return manager;
+      Whitebox.setInternalState(schemaEngine, "logFilePath", logFilePath);
+      schemaEngine.initForMultiSchemaEngineTest();
+      return schemaEngine;
     } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
       e.printStackTrace();
     }
     return null;
   }
 
-  private static Constructor<MManager> getMManagerConstructor() {
+  private static Constructor<SchemaEngine> getSchemaEngineConstructor() {
     try {
-      return MManager.class.getDeclaredConstructor();
+      return SchemaEngine.class.getDeclaredConstructor();
     } catch (NoSuchMethodException e) {
       e.printStackTrace();
     }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/partition/SlotPartitionTableTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/partition/SlotPartitionTableTest.java
index db55eb5..6d5dc2e 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/partition/SlotPartitionTableTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/partition/SlotPartitionTableTest.java
@@ -33,7 +33,7 @@ import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 import org.apache.iotdb.db.qp.logical.sys.AuthorOperator.AuthorType;
@@ -96,7 +96,7 @@ public class SlotPartitionTableTest {
   Node localNode;
   int replica_size = 5;
   int raftId = 0;
-  MManager[] mManager;
+  SchemaEngine[] schemaEngines;
 
   SlotPartitionTable[] tables; // The PartitionTable on each node.
   List<Node> nodes;
@@ -111,7 +111,7 @@ public class SlotPartitionTableTest {
     prevPartitionInterval = StorageEngine.getTimePartitionInterval();
     StorageEngine.setEnablePartition(true);
 
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     StorageEngine.setTimePartitionInterval(7 * 24 * 3600 * 1000L);
     nodes = new ArrayList<>();
     IntStream.range(0, 20).forEach(i -> nodes.add(getNode(i)));
@@ -119,7 +119,7 @@ public class SlotPartitionTableTest {
     prevReplicaNum = ClusterDescriptor.getInstance().getConfig().getReplicationNum();
     ClusterDescriptor.getInstance().getConfig().setReplicationNum(replica_size);
     tables = new SlotPartitionTable[20];
-    mManager = new MManager[20];
+    schemaEngines = new SchemaEngine[20];
 
     // suppose there are 40 storage groups and each node maintains two of them.
     String[] storageNames = new String[40];
@@ -141,23 +141,23 @@ public class SlotPartitionTableTest {
       nodeSGs[node.getNode().getMetaPort() - 30000].add(storageNames[i + 20]);
     }
     for (int i = 0; i < 20; i++) {
-      mManager[i] = MManagerWhiteBox.newMManager("target/schemas/mlog_" + i);
-      initMockMManager(i, mManager[i], storageNames, nodeSGs[i]);
-      Whitebox.setInternalState(tables[i], "mManager", mManager[i]);
+      schemaEngines[i] = SchemaEngineWhiteBox.newSchemaEngine("target/schemas/mlog_" + i);
+      initMockSchemaEngine(i, schemaEngines[i], storageNames, nodeSGs[i]);
+      Whitebox.setInternalState(tables[i], "schemaEngine", schemaEngines[i]);
     }
   }
 
-  private void initMockMManager(
-      int id, MManager mmanager, String[] storageGroups, List<String> ownedSGs)
+  private void initMockSchemaEngine(
+      int id, SchemaEngine schemaEngine, String[] storageGroups, List<String> ownedSGs)
       throws MetadataException {
     for (String sg : storageGroups) {
-      mmanager.setStorageGroup(new PartialPath(sg));
+      schemaEngine.setStorageGroup(new PartialPath(sg));
     }
     for (String sg : ownedSGs) {
       // register 4 series;
       for (int i = 0; i < 4; i++) {
         try {
-          mmanager.createTimeseries(
+          schemaEngine.createTimeseries(
               new PartialPath(String.format(sg + ".ld.l1.d%d.s%d", i / 2, i % 2)),
               TSDataType.INT32,
               TSEncoding.RLE,
@@ -173,9 +173,9 @@ public class SlotPartitionTableTest {
   @After
   public void tearDown() throws IOException, StorageEngineException {
     ClusterDescriptor.getInstance().getConfig().setReplicationNum(prevReplicaNum);
-    if (mManager != null) {
-      for (MManager manager : mManager) {
-        manager.clear();
+    if (schemaEngines != null) {
+      for (SchemaEngine schemaEngine : schemaEngines) {
+        schemaEngine.clear();
       }
     }
     EnvironmentUtils.cleanEnv();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/query/ClusterPlanExecutorTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/query/ClusterPlanExecutorTest.java
index fd2de79..a5704f3 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/query/ClusterPlanExecutorTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/query/ClusterPlanExecutorTest.java
@@ -85,7 +85,7 @@ public class ClusterPlanExecutorTest extends BaseQueryTest {
     List<IStorageGroupMNode> allStorageGroupNodes = queryExecutor.getAllStorageGroupNodes();
     for (int i = 0; i < allStorageGroupNodes.size(); i++) {
       assertEquals(
-          IoTDB.metaManager.getAllStorageGroupNodes().get(i).getFullPath(),
+          IoTDB.schemaEngine.getAllStorageGroupNodes().get(i).getFullPath(),
           allStorageGroupNodes.get(i).getFullPath());
     }
   }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServiceImplTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServiceImplTest.java
index be2ef05..158b178 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServiceImplTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/clusterinfo/ClusterInfoServiceImplTest.java
@@ -54,7 +54,7 @@ public class ClusterInfoServiceImplTest {
 
     ClusterIoTDB.getInstance()
         .getIotdb()
-        .metaManager
+        .schemaEngine
         .setStorageGroup(new PartialPath("root", "sg"));
     // metaClusterServer.getMember()
     impl = new ClusterInfoServiceImpl();
@@ -64,7 +64,7 @@ public class ClusterInfoServiceImplTest {
   public void tearDown() throws MetadataException, IOException, StorageEngineException {
     ClusterIoTDB.getInstance()
         .getIotdb()
-        .metaManager
+        .schemaEngine
         .deleteStorageGroups(Collections.singletonList(new PartialPath("root", "sg")));
     ClusterIoTDB.getInstance().getMetaGroupMember().stop();
     EnvironmentUtils.cleanEnv();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java
index a918a58..93011b2 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/BaseMember.java
@@ -37,7 +37,7 @@ import org.apache.iotdb.cluster.log.applier.DataLogApplier;
 import org.apache.iotdb.cluster.log.manage.PartitionedSnapshotLogManager;
 import org.apache.iotdb.cluster.log.manage.RaftLogManager;
 import org.apache.iotdb.cluster.log.snapshot.FileSnapshot;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.metadata.MetaPuller;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.partition.PartitionTable;
@@ -147,9 +147,9 @@ public class BaseMember {
       getDataGroupMember(node);
     }
 
-    IoTDB.setMetaManager(CMManager.getInstance());
-    CMManager.getInstance().setMetaGroupMember(testMetaMember);
-    CMManager.getInstance().setCoordinator(coordinator);
+    IoTDB.setSchemaEngine(CSchemaEngine.getInstance());
+    CSchemaEngine.getInstance().setMetaGroupMember(testMetaMember);
+    CSchemaEngine.getInstance().setCoordinator(coordinator);
 
     EnvironmentUtils.envSetUp();
     prevUrls = ClusterDescriptor.getInstance().getConfig().getSeedNodeUrls();
@@ -162,7 +162,7 @@ public class BaseMember {
 
     for (int i = 0; i < 10; i++) {
       try {
-        IoTDB.metaManager.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
+        IoTDB.schemaEngine.setStorageGroup(new PartialPath(TestUtils.getTestSg(i)));
         for (int j = 0; j < 20; j++) {
           SchemaUtils.registerTimeseries(TestUtils.getTestTimeSeriesSchema(i, j));
         }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
index cb8ae04..7d9bb00 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
@@ -605,7 +605,7 @@ public class DataGroupMemberTest extends BaseMember {
             Collections.emptyMap(),
             null);
     assertEquals(200, dataGroupMember.executeNonQueryPlan(createTimeSeriesPlan).code);
-    assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+    assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
   }
 
   @Test
@@ -634,7 +634,7 @@ public class DataGroupMemberTest extends BaseMember {
             partitionTable.getPartitionGroup(new RaftNode(TestUtils.getNode(0), 0)),
             dataGroupMember));
     assertEquals(200, dataGroupMember.executeNonQueryPlan(createTimeSeriesPlan).code);
-    assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
+    assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(timeseriesSchema.getFullPath())));
     testThreadPool.shutdownNow();
   }
 
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
index 44b0538..64809cf 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
@@ -43,7 +43,7 @@ import org.apache.iotdb.cluster.log.logtypes.AddNodeLog;
 import org.apache.iotdb.cluster.log.logtypes.CloseFileLog;
 import org.apache.iotdb.cluster.log.logtypes.RemoveNodeLog;
 import org.apache.iotdb.cluster.log.snapshot.MetaSimpleSnapshot;
-import org.apache.iotdb.cluster.metadata.CMManager;
+import org.apache.iotdb.cluster.metadata.CSchemaEngine;
 import org.apache.iotdb.cluster.partition.NodeRemovalResult;
 import org.apache.iotdb.cluster.partition.PartitionGroup;
 import org.apache.iotdb.cluster.partition.PartitionTable;
@@ -332,7 +332,7 @@ public class MetaGroupMemberTest extends BaseMember {
     try {
       for (String prefixPath : prefixPaths) {
         if (!prefixPath.equals(TestUtils.getTestSeries(10, 0))) {
-          IoTDB.metaManager.collectMeasurementSchema(new PartialPath(prefixPath), schemas);
+          IoTDB.schemaEngine.collectMeasurementSchema(new PartialPath(prefixPath), schemas);
           dataOutputStream.writeInt(schemas.size());
           for (IMeasurementSchema schema : schemas) {
             schema.partialSerializeTo(dataOutputStream);
@@ -810,7 +810,7 @@ public class MetaGroupMemberTest extends BaseMember {
         .sendSnapshot(request, new GenericHandler(TestUtils.getNode(0), reference));
 
     // 6. check whether the snapshot applied or not
-    Map<PartialPath, Long> localStorageGroupTTL = IoTDB.metaManager.getStorageGroupsTTL();
+    Map<PartialPath, Long> localStorageGroupTTL = IoTDB.schemaEngine.getStorageGroupsTTL();
     assertNotNull(localStorageGroupTTL);
     assertEquals(storageGroupTTL, localStorageGroupTTL);
 
@@ -851,7 +851,7 @@ public class MetaGroupMemberTest extends BaseMember {
           new SetStorageGroupPlan(new PartialPath(TestUtils.getTestSg(i)));
       TSStatus status = coordinator.executeNonQueryPlan(setStorageGroupPlan);
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.code);
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(TestUtils.getTestSg(i))));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(TestUtils.getTestSg(i))));
 
       // process a partitioned plan
       TimeseriesSchema schema = TestUtils.getTestTimeSeriesSchema(i, 0);
@@ -870,7 +870,7 @@ public class MetaGroupMemberTest extends BaseMember {
         status.setCode(TSStatusCode.SUCCESS_STATUS.getStatusCode());
       }
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.code);
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(TestUtils.getTestSeries(i, 0))));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(TestUtils.getTestSeries(i, 0))));
     }
     testThreadPool.shutdownNow();
   }
@@ -893,7 +893,7 @@ public class MetaGroupMemberTest extends BaseMember {
           new SetStorageGroupPlan(new PartialPath(TestUtils.getTestSg(i)));
       TSStatus status = coordinator.executeNonQueryPlan(setStorageGroupPlan);
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.code);
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(TestUtils.getTestSg(i))));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(TestUtils.getTestSg(i))));
 
       // process a partitioned plan
       TimeseriesSchema schema = TestUtils.getTestTimeSeriesSchema(i, 0);
@@ -934,7 +934,7 @@ public class MetaGroupMemberTest extends BaseMember {
         status.setCode(TSStatusCode.SUCCESS_STATUS.getStatusCode());
       }
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.code);
-      assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(TestUtils.getTestSeries(i, 0))));
+      assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(TestUtils.getTestSeries(i, 0))));
     }
     testThreadPool.shutdownNow();
   }
@@ -954,7 +954,7 @@ public class MetaGroupMemberTest extends BaseMember {
       insertPlan.setDevicePath(new PartialPath(TestUtils.getTestSg(i)));
       IMeasurementSchema schema = TestUtils.getTestMeasurementSchema(0);
       try {
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             new PartialPath(schema.getMeasurementId()),
             schema.getType(),
             schema.getEncodingType(),
@@ -1020,7 +1020,7 @@ public class MetaGroupMemberTest extends BaseMember {
       insertPlan.setDevicePath(new PartialPath(TestUtils.getTestSg(i)));
       IMeasurementSchema schema = TestUtils.getTestMeasurementSchema(0);
       try {
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             new PartialPath(schema.getMeasurementId()),
             schema.getType(),
             schema.getEncodingType(),
@@ -1076,14 +1076,14 @@ public class MetaGroupMemberTest extends BaseMember {
   public void testGetMatchedPaths() throws MetadataException {
     System.out.println("Start testGetMatchedPaths()");
     List<MeasurementPath> matchedPaths =
-        ((CMManager) IoTDB.metaManager)
+        ((CSchemaEngine) IoTDB.schemaEngine)
             .getMatchedPaths(new PartialPath(TestUtils.getTestSg(0) + ".*"));
     assertEquals(20, matchedPaths.size());
     for (int j = 0; j < 10; j++) {
       assertTrue(matchedPaths.contains(new PartialPath(TestUtils.getTestSeries(0, j))));
     }
     matchedPaths =
-        ((CMManager) IoTDB.metaManager)
+        ((CSchemaEngine) IoTDB.schemaEngine)
             .getMatchedPaths(new PartialPath(TestUtils.getTestSg(10) + ".*"));
     assertTrue(matchedPaths.isEmpty());
   }
diff --git a/docs/zh/UserGuide/Reference/Config-Manual.md b/docs/zh/UserGuide/Reference/Config-Manual.md
index 33171bc..2f9e76d 100644
--- a/docs/zh/UserGuide/Reference/Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/Config-Manual.md
@@ -997,7 +997,7 @@ Server,客户端的使用方式详见 [SQL 命令行终端(CLI)](https://i
 
 |名字| metadata\_node\_cache\_size |
 |:---:|:---|
-|描述| Manager的缓存大小。所有路径检查和将具有相应路径的MManager中的TSDataType的缓存,都将被用作提高写入速度。|
+|描述| SchemaRegion的缓存大小。所有路径检查和将具有相应路径的SchemaRegion中的TSDataType的缓存,都将被用作提高写入速度。|
 |类型|Int32|
 |默认值| 300000 |
 |改后生效方式|重启服务生效|
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBArithmeticIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBArithmeticIT.java
index 7e961b6..72f41f5 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBArithmeticIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBArithmeticIT.java
@@ -69,50 +69,50 @@ public class IoTDBArithmeticIT {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s3"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s4"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s5"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s6"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s7"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s8"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
index c464f6f..da985ce 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
@@ -105,7 +105,7 @@ public class IoTDBCheckConfigIT {
   public void testAlterTimeEncoderAfterStartService() throws Exception {
     EnvironmentUtils.shutdownDaemon();
     EnvironmentUtils.stopDaemon();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     systemProperties.put("time_encoder", "REGULAR");
     writeSystemFile();
     EnvironmentUtils.reactiveDaemon();
@@ -123,7 +123,7 @@ public class IoTDBCheckConfigIT {
   public void testSameTimeEncoderAfterStartService() throws Exception {
     EnvironmentUtils.shutdownDaemon();
     EnvironmentUtils.stopDaemon();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     systemProperties.put("time_encoder", "TS_2DIFF");
     writeSystemFile();
     EnvironmentUtils.reactiveDaemon();
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
index f5c193e..6cc18be 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
@@ -226,13 +226,13 @@ public class IoTDBLastIT {
       }
 
       PartialPath path = new PartialPath("root.ln.wf01.wt01.temperature");
-      IoTDB.metaManager.resetLastCache(path);
+      IoTDB.schemaEngine.resetLastCache(path);
 
       statement.execute(
           "insert into root.ln.wf01.wt01(time, temperature, status, id) values(700, 33.1, false, 3)");
 
       // Last cache is updated with above insert sql
-      long time = IoTDB.metaManager.getLastCache(path).getTimestamp();
+      long time = IoTDB.schemaEngine.getLastCache(path).getTimestamp();
       Assert.assertEquals(700, time);
 
       hasResultSet = statement.execute("select last temperature,status,id from root.ln.wf01.wt01");
@@ -256,7 +256,7 @@ public class IoTDBLastIT {
           "insert into root.ln.wf01.wt01(time, temperature, status, id) values(600, 19.1, false, 1)");
 
       // Last cache is not updated with above insert sql
-      time = IoTDB.metaManager.getLastCache(path).getTimestamp();
+      time = IoTDB.schemaEngine.getLastCache(path).getTimestamp();
       Assert.assertEquals(700, time);
 
       hasResultSet = statement.execute("select last temperature,status,id from root.ln.wf01.wt01");
@@ -298,7 +298,7 @@ public class IoTDBLastIT {
         Statement statement = connection.createStatement()) {
 
       PartialPath path = new PartialPath("root.ln.wf01.wt02.temperature");
-      IoTDB.metaManager.resetLastCache(path);
+      IoTDB.schemaEngine.resetLastCache(path);
 
       boolean hasResultSet =
           statement.execute("select last temperature,status,id from root.ln.wf01.wt02");
@@ -343,7 +343,7 @@ public class IoTDBLastIT {
       }
       Assert.assertEquals(cnt, retArray.length);
 
-      IoTDB.metaManager.resetLastCache(path);
+      IoTDB.schemaEngine.resetLastCache(path);
       String[] retArray3 =
           new String[] {
             "900,root.ln.wf01.wt01.temperature,10.2,DOUBLE",
@@ -389,7 +389,7 @@ public class IoTDBLastIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      IoTDB.metaManager.resetLastCache(new PartialPath("root.ln.wf01.wt03.temperature"));
+      IoTDB.schemaEngine.resetLastCache(new PartialPath("root.ln.wf01.wt03.temperature"));
 
       statement.execute(
           "INSERT INTO root.ln.wf01.wt03(timestamp,status, id) values(500, false, 9)");
@@ -440,7 +440,7 @@ public class IoTDBLastIT {
       statement.execute("INSERT INTO root.ln.wf01.wt04(timestamp,temperature) values(150,31.2)");
       statement.execute("flush");
 
-      IoTDB.metaManager.resetLastCache(new PartialPath("root.ln.wf01.wt04.temperature"));
+      IoTDB.schemaEngine.resetLastCache(new PartialPath("root.ln.wf01.wt04.temperature"));
 
       boolean hasResultSet = statement.execute("select last temperature from root.ln.wf01.wt04");
 
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
index 1d208c2..ca744cf 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBMetadataFetchIT.java
@@ -45,7 +45,7 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
-import static org.apache.iotdb.db.metadata.MManager.TIME_SERIES_TREE_HEADER;
+import static org.apache.iotdb.db.metadata.SchemaEngine.TIME_SERIES_TREE_HEADER;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
index 01318af..fe35d15 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
@@ -65,32 +65,32 @@ public class IoTDBNestedQueryIT {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s2"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.empty"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
index b7227d7..9f625b3 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
@@ -73,58 +73,58 @@ public class IoTDBSelectIntoIT {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s3"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s4"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s5"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s6"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
 
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.empty"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
 
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d2.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
 
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.datatype"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
index 8260144..cdf12db 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.integration;
 
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.integration.env.EnvFactory;
@@ -76,7 +76,7 @@ public class IoTDBSimpleQueryIT {
     }
 
     IMeasurementMNode mNode =
-        MManager.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
+        SchemaEngine.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
     assertNull(mNode.getSchema().getProps());
   }
 
@@ -94,7 +94,7 @@ public class IoTDBSimpleQueryIT {
     }
 
     IMeasurementMNode mNode =
-        MManager.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
+        SchemaEngine.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
 
     // check if SDT property is set
     assertEquals(2, mNode.getSchema().getProps().size());
@@ -115,7 +115,7 @@ public class IoTDBSimpleQueryIT {
     }
 
     IMeasurementMNode mNode =
-        MManager.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
+        SchemaEngine.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d0.s1"));
 
     // check if SDT property is set
     assertEquals(4, mNode.getSchema().getProps().size());
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
index d35d88d..5f9aa60 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
@@ -101,37 +101,37 @@ public class IoTDBTriggerExecutionIT {
   }
 
   private void createTimeseries() throws MetadataException {
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s3"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s4"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s5"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s6"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
@@ -487,12 +487,12 @@ public class IoTDBTriggerExecutionIT {
 
       stopDataGenerator();
 
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s1"));
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s2"));
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s3"));
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s4"));
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s5"));
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.vehicle.d1.s6"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s1"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s2"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s3"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s4"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s5"));
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.vehicle.d1.s6"));
 
       for (int i = 0; i < 6; ++i) {
         try {
@@ -566,7 +566,7 @@ public class IoTDBTriggerExecutionIT {
 
       stopDataGenerator();
 
-      IoTDB.metaManager.deleteStorageGroups(
+      IoTDB.schemaEngine.deleteStorageGroups(
           Collections.singletonList(new PartialPath("root.vehicle")));
 
       for (int i = 0; i < 6; ++i) {
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
index c58159b..1d4a3ca 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
@@ -56,25 +56,25 @@ public class IoTDBTriggerManagementIT {
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.DOUBLE,
         TSEncoding.GORILLA,
         CompressionType.LZ4,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s3"),
         TSDataType.INT32,
         TSEncoding.RLE,
         CompressionType.LZ4,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s4"),
         TSDataType.INT64,
         TSEncoding.RLE,
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFManagementIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFManagementIT.java
index 5d04393..eac8161 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFManagementIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBUDFManagementIT.java
@@ -59,14 +59,14 @@ public class IoTDBUDFManagementIT {
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
diff --git a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
index 85c2b42..ee5712d 100644
--- a/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
+++ b/integration/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.OperationType;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -332,7 +332,7 @@ public class IoTDBSessionSimpleIT {
     assertTrue(session.checkTimeseriesExists("root.sg1.d1.s1"));
     assertTrue(session.checkTimeseriesExists("root.sg1.d1.s2"));
     IMeasurementMNode mNode =
-        MManager.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d1.s1"));
+        SchemaEngine.getInstance().getMeasurementMNode(new PartialPath("root.sg1.d1.s1"));
     assertNull(mNode.getSchema().getProps());
 
     session.close();
diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index 1f4c0ef..fd508eb 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -201,7 +201,7 @@ timestamp_precision=ms
 # wal_buffer_size=16777216
 
 # Size of log buffer in each metadata operation plan(in byte).
-# If the size of a metadata operation plan is larger than this parameter, then it will be rejected by MManager
+# If the size of a metadata operation plan is larger than this parameter, then it will be rejected by SchemaRegion
 # If it sets a value smaller than 0, use the default value 1024*1024
 # Datatype: int
 # mlog_buffer_size=1048576
@@ -502,10 +502,10 @@ timestamp_precision=ms
 # The parameter form is a:b:c:d:e, where a, b, c, d and e are integers. for example: 1:1:1:1:1 , 1:100:200:300:400
 # chunk_timeseriesmeta_free_memory_proportion=1:100:200:300:400
 
-# cache size for MManager.
-# This cache is used to improve insert speed where all path check and TSDataType will be cached in MManager with corresponding Path.
+# cache size for SchemaRegion.
+# This cache is used to improve insert speed where all path check and TSDataType will be cached in SchemaRegion with corresponding Path.
 # Datatype: int
-# metadata_node_cache_size=300000
+# metadata_node_cache_size=10000
 
 ####################
 ### LAST Cache Configuration
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 619e3a3..2ef7b47 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.db.engine.compaction.cross.CrossCompactionStrategy;
 import org.apache.iotdb.db.engine.compaction.inner.InnerCompactionStrategy;
 import org.apache.iotdb.db.engine.storagegroup.timeindex.TimeIndexLevel;
 import org.apache.iotdb.db.exception.LoadConfigurationException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.service.thrift.impl.InfluxDBServiceImpl;
 import org.apache.iotdb.db.service.thrift.impl.TSServiceImpl;
 import org.apache.iotdb.rpc.RpcTransportFactory;
@@ -184,7 +184,7 @@ public class IoTDBConfig {
 
   /**
    * Size of log buffer for every MetaData operation. If the size of a MetaData operation plan is
-   * larger than this parameter, then the MetaData operation plan will be rejected by MManager.
+   * larger than this parameter, then the MetaData operation plan will be rejected by SchemaRegion.
    * Unit: byte
    */
   private int mlogBufferSize = 1024 * 1024;
@@ -447,10 +447,10 @@ public class IoTDBConfig {
   /** Set true to enable writing monitor time series. */
   private boolean enableMonitorSeriesWrite = false;
 
-  /** Cache size of {@code checkAndGetDataTypeCache} in {@link MManager}. */
-  private int mManagerCacheSize = 300000;
+  /** Cache size of {@code checkAndGetDataTypeCache} in {@link SchemaEngine}. */
+  private int schemaRegionCacheSize = 10000;
 
-  /** Cache size of {@code checkAndGetDataTypeCache} in {@link MManager}. */
+  /** Cache size of {@code checkAndGetDataTypeCache} in {@link SchemaEngine}. */
   private int mRemoteSchemaCacheSize = 100000;
 
   /** Is external sort enable. */
@@ -1231,12 +1231,12 @@ public class IoTDBConfig {
     this.rpcMaxConcurrentClientNum = rpcMaxConcurrentClientNum;
   }
 
-  public int getmManagerCacheSize() {
-    return mManagerCacheSize;
+  public int getSchemaRegionCacheSize() {
+    return schemaRegionCacheSize;
   }
 
-  void setmManagerCacheSize(int mManagerCacheSize) {
-    this.mManagerCacheSize = mManagerCacheSize;
+  void setSchemaRegionCacheSize(int schemaRegionCacheSize) {
+    this.schemaRegionCacheSize = schemaRegionCacheSize;
   }
 
   public int getmRemoteSchemaCacheSize() {
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index b45f091..22eea09 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -446,11 +446,11 @@ public class IoTDBDescriptor {
                   "raw_query_blocking_queue_capacity",
                   Integer.toString(conf.getRawQueryBlockingQueueCapacity()))));
 
-      conf.setmManagerCacheSize(
+      conf.setSchemaRegionCacheSize(
           Integer.parseInt(
               properties
                   .getProperty(
-                      "metadata_node_cache_size", Integer.toString(conf.getmManagerCacheSize()))
+                      "metadata_node_cache_size", Integer.toString(conf.getSchemaRegionCacheSize()))
                   .trim()));
 
       conf.setmRemoteSchemaCacheSize(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 984c036..8140cde 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -223,7 +223,7 @@ public class StorageEngine implements IService {
             Runtime.getRuntime().availableProcessors(), "Recovery-Thread-Pool");
 
     // recover all logic storage group processors
-    List<IStorageGroupMNode> sgNodes = IoTDB.metaManager.getAllStorageGroupNodes();
+    List<IStorageGroupMNode> sgNodes = IoTDB.schemaEngine.getAllStorageGroupNodes();
     List<Future<Void>> futures = new LinkedList<>();
     for (IStorageGroupMNode storageGroup : sgNodes) {
       StorageGroupManager storageGroupManager =
@@ -377,7 +377,7 @@ public class StorageEngine implements IService {
         unseqMemtableTimedFlushCheckThread, ThreadName.TIMED_FlUSH_UNSEQ_MEMTABLE);
     ThreadUtils.stopThreadPool(tsFileTimedCloseCheckThread, ThreadName.TIMED_CLOSE_TSFILE);
     recoveryThreadPool.shutdownNow();
-    for (PartialPath storageGroup : IoTDB.metaManager.getAllStorageGroupPaths()) {
+    for (PartialPath storageGroup : IoTDB.schemaEngine.getAllStorageGroupPaths()) {
       this.releaseWalDirectByteBufferPoolInOneStorageGroup(storageGroup);
     }
     processorMap.clear();
@@ -459,7 +459,7 @@ public class StorageEngine implements IService {
       throws StorageEngineException {
     PartialPath storageGroupPath;
     try {
-      IStorageGroupMNode storageGroupMNode = IoTDB.metaManager.getStorageGroupNodeByPath(path);
+      IStorageGroupMNode storageGroupMNode = IoTDB.schemaEngine.getStorageGroupNodeByPath(path);
       storageGroupPath = storageGroupMNode.getPartialPath();
       return getStorageGroupProcessorByPath(storageGroupPath, storageGroupMNode);
     } catch (StorageGroupProcessorException | MetadataException e) {
@@ -475,7 +475,7 @@ public class StorageEngine implements IService {
    */
   public VirtualStorageGroupProcessor getProcessor(PartialPath path) throws StorageEngineException {
     try {
-      IStorageGroupMNode storageGroupMNode = IoTDB.metaManager.getStorageGroupNodeByPath(path);
+      IStorageGroupMNode storageGroupMNode = IoTDB.schemaEngine.getStorageGroupNodeByPath(path);
       return getStorageGroupProcessorByPath(path, storageGroupMNode);
     } catch (StorageGroupProcessorException | MetadataException e) {
       throw new StorageEngineException(e);
@@ -491,7 +491,7 @@ public class StorageEngine implements IService {
     try {
       List<String> lockHolderList = new ArrayList<>(pathList.size());
       for (PartialPath path : pathList) {
-        IStorageGroupMNode storageGroupMNode = IoTDB.metaManager.getStorageGroupNodeByPath(path);
+        IStorageGroupMNode storageGroupMNode = IoTDB.schemaEngine.getStorageGroupNodeByPath(path);
         VirtualStorageGroupProcessor virtualStorageGroupProcessor =
             getStorageGroupProcessorByPath(path, storageGroupMNode);
         lockHolderList.add(virtualStorageGroupProcessor.getInsertWriteLockHolder());
@@ -699,7 +699,7 @@ public class StorageEngine implements IService {
       TimePartitionFilter timePartitionFilter)
       throws StorageEngineException {
     try {
-      List<PartialPath> sgPaths = IoTDB.metaManager.getBelongedStorageGroups(path);
+      List<PartialPath> sgPaths = IoTDB.schemaEngine.getBelongedStorageGroups(path);
       for (PartialPath storageGroupPath : sgPaths) {
         // storage group has no data
         if (!processorMap.containsKey(storageGroupPath)) {
@@ -723,7 +723,7 @@ public class StorageEngine implements IService {
       PartialPath path, long planIndex, TimePartitionFilter timePartitionFilter)
       throws StorageEngineException {
     try {
-      List<PartialPath> sgPaths = IoTDB.metaManager.getBelongedStorageGroups(path);
+      List<PartialPath> sgPaths = IoTDB.schemaEngine.getBelongedStorageGroups(path);
       for (PartialPath storageGroupPath : sgPaths) {
         // storage group has no data
         if (!processorMap.containsKey(storageGroupPath)) {
@@ -836,7 +836,7 @@ public class StorageEngine implements IService {
   public synchronized boolean deleteAll() {
     logger.info("Start deleting all storage groups' timeseries");
     syncCloseAllProcessor();
-    for (PartialPath storageGroup : IoTDB.metaManager.getAllStorageGroupPaths()) {
+    for (PartialPath storageGroup : IoTDB.schemaEngine.getAllStorageGroupPaths()) {
       this.deleteAllDataFilesInOneStorageGroup(storageGroup);
     }
     return true;
@@ -878,7 +878,7 @@ public class StorageEngine implements IService {
     }
     String device = deviceSet.iterator().next();
     PartialPath devicePath = new PartialPath(device);
-    PartialPath storageGroupPath = IoTDB.metaManager.getBelongedStorageGroup(devicePath);
+    PartialPath storageGroupPath = IoTDB.schemaEngine.getBelongedStorageGroup(devicePath);
     getProcessorDirectly(storageGroupPath).loadNewTsFile(newTsFileResource);
   }
 
@@ -1052,7 +1052,7 @@ public class StorageEngine implements IService {
       if (config.isEnableIDTable()) {
         processor.getIdTable().getSeriesSchemas(insertPlan);
       } else {
-        IoTDB.metaManager.getSeriesSchemasAndReadLockDevice(insertPlan);
+        IoTDB.schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
         insertPlan.setDeviceID(
             DeviceIDFactory.getInstance().getDeviceID(insertPlan.getDevicePath()));
       }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
index 8324cdd..8a96092 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/CompactionUtils.java
@@ -131,7 +131,7 @@ public class CompactionUtils {
           measurementSchemas.add(IDTableManager.getInstance().getSeriesSchema(device, measurement));
         } else {
           measurementSchemas.add(
-              IoTDB.metaManager.getSeriesSchema(new PartialPath(device, measurement)));
+              IoTDB.schemaEngine.getSeriesSchema(new PartialPath(device, measurement)));
         }
       } catch (PathNotExistException e) {
         logger.info("A deleted path is skipped: {}", e.getMessage());
@@ -182,7 +182,7 @@ public class CompactionUtils {
           measurementSchemas.add(IDTableManager.getInstance().getSeriesSchema(device, measurement));
         } else {
           measurementSchemas.add(
-              IoTDB.metaManager.getSeriesSchema(new PartialPath(device, measurement)));
+              IoTDB.schemaEngine.getSeriesSchema(new PartialPath(device, measurement)));
         }
       } catch (PathNotExistException e) {
         logger.info("A deleted path is skipped: {}", e.getMessage());
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
index 0fef121..2a3098a 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/compaction/inner/utils/InnerSpaceCompactionUtils.java
@@ -125,7 +125,7 @@ public class InnerSpaceCompactionUtils {
           measurementSchema =
               IDTableManager.getInstance().getSeriesSchema(device, p.getMeasurement());
         } else {
-          measurementSchema = IoTDB.metaManager.getSeriesSchema(p);
+          measurementSchema = IoTDB.schemaEngine.getSeriesSchema(p);
         }
       } catch (PathNotExistException e) {
         logger.info("A deleted path is skipped: {}", e.getMessage());
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQuerySchemaCheckTask.java b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQuerySchemaCheckTask.java
index 0f5dbbd..be0970d 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQuerySchemaCheckTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cq/ContinuousQuerySchemaCheckTask.java
@@ -73,7 +73,7 @@ public class ContinuousQuerySchemaCheckTask extends ContinuousQueryTask {
             queryPlan.getAggregations().get(0), queryPlan.getDataTypes().get(0));
     for (PartialPath targetPath : targetPaths) {
       try {
-        TSDataType targetPathDataType = IoTDB.metaManager.getSeriesSchema(targetPath).getType();
+        TSDataType targetPathDataType = IoTDB.schemaEngine.getSeriesSchema(targetPath).getType();
         if (!sourceDataType.equals(targetPathDataType)) {
           throw new ContinuousQueryException(
               String.format(
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
index 6ac55e0..89468d1 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/VirtualStorageGroupProcessor.java
@@ -1180,7 +1180,7 @@ public class VirtualStorageGroupProcessor {
       }
       // Update cached last value with high priority
       if (mNodes[i] == null) {
-        IoTDB.metaManager.updateLastCache(
+        IoTDB.schemaEngine.updateLastCache(
             plan.getDevicePath().concatNode(plan.getMeasurements()[i]),
             plan.composeLastTimeValuePair(i),
             true,
@@ -1188,7 +1188,7 @@ public class VirtualStorageGroupProcessor {
       } else {
         // in stand alone version, the seriesPath is not needed, just use measurementMNodes[i] to
         // update last cache
-        IoTDB.metaManager.updateLastCache(
+        IoTDB.schemaEngine.updateLastCache(
             mNodes[i], plan.composeLastTimeValuePair(i), true, latestFlushedTime);
       }
     }
@@ -1230,7 +1230,7 @@ public class VirtualStorageGroupProcessor {
       }
       // Update cached last value with high priority
       if (mNodes[i] == null) {
-        IoTDB.metaManager.updateLastCache(
+        IoTDB.schemaEngine.updateLastCache(
             plan.getDevicePath().concatNode(plan.getMeasurements()[i]),
             plan.composeTimeValuePair(i),
             true,
@@ -1238,7 +1238,7 @@ public class VirtualStorageGroupProcessor {
       } else {
         // in stand alone version, the seriesPath is not needed, just use measurementMNodes[i] to
         // update last cache
-        IoTDB.metaManager.updateLastCache(
+        IoTDB.schemaEngine.updateLastCache(
             mNodes[i], plan.composeTimeValuePair(i), true, latestFlushedTime);
       }
     }
@@ -1926,7 +1926,7 @@ public class VirtualStorageGroupProcessor {
     List<ModificationFile> updatedModFiles = new ArrayList<>();
 
     try {
-      Set<PartialPath> devicePaths = IoTDB.metaManager.getBelongedDevices(path);
+      Set<PartialPath> devicePaths = IoTDB.schemaEngine.getBelongedDevices(path);
       for (PartialPath device : devicePaths) {
         // delete Last cache record if necessary
         tryToDeleteLastCache(device, path, startTime, endTime);
@@ -2081,7 +2081,7 @@ public class VirtualStorageGroupProcessor {
       return;
     }
     try {
-      IoTDB.metaManager.deleteLastCacheByDevice(deviceId, originalPath, startTime, endTime);
+      IoTDB.schemaEngine.deleteLastCacheByDevice(deviceId, originalPath, startTime, endTime);
     } catch (MetadataException e) {
       throw new WriteProcessException(e);
     }
@@ -2365,7 +2365,7 @@ public class VirtualStorageGroupProcessor {
       return;
     }
     try {
-      IoTDB.metaManager.deleteLastCacheByDevice(deviceId);
+      IoTDB.schemaEngine.deleteLastCacheByDevice(deviceId);
     } catch (MetadataException e) {
       // the path doesn't cache in cluster mode now, ignore
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/trigger/service/TriggerRegistrationService.java b/server/src/main/java/org/apache/iotdb/db/engine/trigger/service/TriggerRegistrationService.java
index 2fb508c..77b5427 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/trigger/service/TriggerRegistrationService.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/trigger/service/TriggerRegistrationService.java
@@ -136,7 +136,7 @@ public class TriggerRegistrationService implements IService {
   private IMeasurementMNode tryGetMeasurementMNode(CreateTriggerPlan plan)
       throws TriggerManagementException {
     try {
-      return IoTDB.metaManager.getMeasurementMNode(plan.getFullPath());
+      return IoTDB.schemaEngine.getMeasurementMNode(plan.getFullPath());
     } catch (MetadataException e) {
       throw new TriggerManagementException(e.getMessage(), e);
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
index 3b224b2..a3f0dde 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
@@ -64,15 +64,15 @@ public class LocalIoTDBHandler implements Handler<LocalIoTDBConfiguration, Local
       TSDataType dataType = dataTypes[i];
 
       PartialPath path = new PartialPath(device.getFullPath(), measurement);
-      if (!IoTDB.metaManager.isPathExist(path)) {
-        IoTDB.metaManager.createTimeseries(
+      if (!IoTDB.schemaEngine.isPathExist(path)) {
+        IoTDB.schemaEngine.createTimeseries(
             path,
             dataType,
             getDefaultEncoding(dataType),
             TSFileDescriptor.getInstance().getConfig().getCompressor(),
             Collections.emptyMap());
       } else {
-        if (!IoTDB.metaManager.getSeriesType(path).equals(dataType)) {
+        if (!IoTDB.schemaEngine.getSeriesType(path).equals(dataType)) {
           throw new SinkException(
               String.format("The data type of %s you provided was not correct.", path));
         }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/IStorageGroupSchemaManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/IStorageGroupSchemaManager.java
similarity index 85%
rename from server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/IStorageGroupSchemaManager.java
rename to server/src/main/java/org/apache/iotdb/db/metadata/IStorageGroupSchemaManager.java
index bef8115..0ef47b1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/IStorageGroupSchemaManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/IStorageGroupSchemaManager.java
@@ -16,11 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.metadata.storagegroup;
+package org.apache.iotdb.db.metadata;
 
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
-import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.tsfile.utils.Pair;
@@ -45,30 +44,31 @@ public interface IStorageGroupSchemaManager {
   void setStorageGroup(PartialPath path) throws MetadataException;
 
   /**
-   * Get the target sgMManager, which the given path belongs to. The path must be a fullPath without
-   * wildcards, * or **. This method is the first step when there's a task on one certain path,
-   * e.g., root.sg1 is a storage group and path = root.sg1.d1, return sgMManager of root.sg1. If
-   * there's no storage group on the given path, StorageGroupNotSetException will be thrown.
+   * Get the target SchemaRegion, which the given path belongs to. The path must be a fullPath
+   * without wildcards, * or **. This method is the first step when there's a task on one certain
+   * path, e.g., root.sg1 is a storage group and path = root.sg1.d1, return SchemaRegion of
+   * root.sg1. If there's no storage group on the given path, StorageGroupNotSetException will be
+   * thrown.
    */
-  SGMManager getBelongedSGMManager(PartialPath path) throws MetadataException;
+  SchemaRegion getBelongedSchemaRegion(PartialPath path) throws MetadataException;
 
   /**
-   * Get sgMManager, which the given path represented.
+   * Get SchemaRegion, which the given path represented.
    *
    * @param path the path of the target storage group
    */
-  SGMManager getSGMManagerByStorageGroupPath(PartialPath path) throws MetadataException;
+  SchemaRegion getSchemaRegionByStorageGroupPath(PartialPath path) throws MetadataException;
 
   /**
-   * Get the target sgMManager, which will be involved/covered by the given pathPattern. The path
+   * Get the target SchemaRegion, which will be involved/covered by the given pathPattern. The path
    * may contain wildcards, * or **. This method is the first step when there's a task on multiple
    * paths represented by the given pathPattern. If isPrefixMatch, all storage groups under the
    * prefixPath that matches the given pathPattern will be collected.
    */
-  List<SGMManager> getInvolvedSGMManagers(PartialPath pathPattern, boolean isPrefixMatch)
+  List<SchemaRegion> getInvolvedSchemaRegions(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException;
 
-  List<SGMManager> getAllSGMManagers();
+  List<SchemaRegion> getAllSchemaRegions();
 
   /**
    * Delete storage groups of given paths from MTree. Log format: "delete_storage_group,sg1,sg2,sg3"
@@ -181,24 +181,24 @@ public interface IStorageGroupSchemaManager {
    * To calculate the count of nodes in the given level for given path pattern. If using prefix
    * match, the path pattern is used to match prefix path. All nodes start with the matched prefix
    * path will be counted. This method only count in nodes above storage group. Nodes below storage
-   * group, including storage group node will be counted by certain SGMManager. The involved storage
-   * groups will be collected to count nodes below storage group.
+   * group, including storage group node will be counted by certain SchemaRegion. The involved
+   * storage groups will be collected to count nodes below storage group.
    *
    * @param pathPattern a path pattern or a full path
    * @param level the level should match the level of the path
    * @param isPrefixMatch if true, the path pattern is used to match prefix path
    */
-  Pair<Integer, List<SGMManager>> getNodesCountInGivenLevel(
+  Pair<Integer, List<SchemaRegion>> getNodesCountInGivenLevel(
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException;
 
-  Pair<List<PartialPath>, List<SGMManager>> getNodesListInGivenLevel(
-      PartialPath pathPattern, int nodeLevel, MManager.StorageGroupFilter filter)
+  Pair<List<PartialPath>, List<SchemaRegion>> getNodesListInGivenLevel(
+      PartialPath pathPattern, int nodeLevel, SchemaEngine.StorageGroupFilter filter)
       throws MetadataException;
 
   /**
    * Get child node path in the next level of the given path pattern. This method only count in
    * nodes above storage group. Nodes below storage group, including storage group node will be
-   * counted by certain SGMManager.
+   * counted by certain SchemaRegion.
    *
    * <p>give pathPattern and the child nodes is those matching pathPattern.*
    *
@@ -208,13 +208,13 @@ public interface IStorageGroupSchemaManager {
    * @param pathPattern The given path
    * @return All child nodes' seriesPath(s) of given seriesPath.
    */
-  Pair<Set<String>, List<SGMManager>> getChildNodePathInNextLevel(PartialPath pathPattern)
+  Pair<Set<String>, List<SchemaRegion>> getChildNodePathInNextLevel(PartialPath pathPattern)
       throws MetadataException;
 
   /**
    * Get child node path in the next level of the given path pattern. This method only count in
    * nodes above storage group. Nodes below storage group, including storage group node will be
-   * counted by certain SGMManager.
+   * counted by certain SchemaRegion.
    *
    * <p>give pathPattern and the child nodes is those matching pathPattern.*
    *
@@ -224,7 +224,7 @@ public interface IStorageGroupSchemaManager {
    * @param pathPattern The given path
    * @return All child nodes' seriesPath(s) of given seriesPath.
    */
-  Pair<Set<String>, List<SGMManager>> getChildNodeNameInNextLevel(PartialPath pathPattern)
+  Pair<Set<String>, List<SchemaRegion>> getChildNodeNameInNextLevel(PartialPath pathPattern)
       throws MetadataException;
 
   /** Get metadata in string */
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/SchemaEngine.java
similarity index 90%
rename from server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
rename to server/src/main/java/org/apache/iotdb/db/metadata/SchemaEngine.java
index f3f1101..deb40fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/SchemaEngine.java
@@ -38,9 +38,6 @@ import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.path.MeasurementPath;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.metadata.rescon.TimeseriesStatistics;
-import org.apache.iotdb.db.metadata.storagegroup.IStorageGroupSchemaManager;
-import org.apache.iotdb.db.metadata.storagegroup.SGMManager;
-import org.apache.iotdb.db.metadata.storagegroup.StorageGroupSchemaManager;
 import org.apache.iotdb.db.metadata.template.Template;
 import org.apache.iotdb.db.metadata.template.TemplateManager;
 import org.apache.iotdb.db.metadata.utils.MetaUtils;
@@ -116,8 +113,8 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARA
  * <p>The codes are divided into the following code regions:
  *
  * <ol>
- *   <li>MManager Singleton
- *   <li>Interfaces and Implementation of MManager initialization、snapshot、recover and clear
+ *   <li>SchemaEngine Singleton
+ *   <li>Interfaces and Implementation of SchemaEngine initialization、snapshot、recover and clear
  *   <li>Interfaces and Implementation of Operating PhysicalPlans of Metadata
  *   <li>Interfaces and Implementation for Timeseries operation
  *   <li>Interfaces and Implementation for StorageGroup and TTL operation
@@ -140,9 +137,9 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARA
  * </ol>
  */
 @SuppressWarnings("java:S1135") // ignore todos
-public class MManager {
+public class SchemaEngine {
 
-  private static final Logger logger = LoggerFactory.getLogger(MManager.class);
+  private static final Logger logger = LoggerFactory.getLogger(SchemaEngine.class);
 
   public static final String TIME_SERIES_TREE_HEADER = "===  Timeseries Tree  ===\n\n";
 
@@ -157,24 +154,24 @@ public class MManager {
       StorageGroupSchemaManager.getInstance();
   private TemplateManager templateManager = TemplateManager.getInstance();
 
-  // region MManager Singleton
-  private static class MManagerHolder {
+  // region SchemaEngine Singleton
+  private static class SchemaEngineHolder {
 
-    private MManagerHolder() {
+    private SchemaEngineHolder() {
       // allowed to do nothing
     }
 
-    private static final MManager INSTANCE = new MManager();
+    private static final SchemaEngine INSTANCE = new SchemaEngine();
   }
 
   /** we should not use this function in other place, but only in IoTDB class */
-  public static MManager getInstance() {
-    return MManagerHolder.INSTANCE;
+  public static SchemaEngine getInstance() {
+    return SchemaEngineHolder.INSTANCE;
   }
   // endregion
 
-  // region Interfaces and Implementation of MManager initialization、snapshot、recover and clear
-  protected MManager() {
+  // region Interfaces and Implementation of SchemaEngine initialization、snapshot、recover and clear
+  protected SchemaEngine() {
     String schemaDir = config.getSchemaDir();
     File schemaFolder = SystemFileFactory.INSTANCE.getFile(schemaDir);
     if (!schemaFolder.exists()) {
@@ -226,9 +223,9 @@ public class MManager {
             Metric.QUANTITY.toString(),
             MetricLevel.IMPORTANT,
             this,
-            mManager -> {
+            schemaEngine -> {
               try {
-                return mManager.getDevicesNum(new PartialPath("root.**"));
+                return schemaEngine.getDevicesNum(new PartialPath("root.**"));
               } catch (MetadataException e) {
                 logger.error("get deviceNum error", e);
               }
@@ -243,9 +240,9 @@ public class MManager {
             Metric.QUANTITY.toString(),
             MetricLevel.IMPORTANT,
             this,
-            mManager -> {
+            schemaEngine -> {
               try {
-                return mManager.getStorageGroupNum(new PartialPath("root.**"), false);
+                return schemaEngine.getStorageGroupNum(new PartialPath("root.**"), false);
               } catch (MetadataException e) {
                 logger.error("get storageGroupNum error", e);
               }
@@ -256,8 +253,8 @@ public class MManager {
   }
 
   public void forceMlog() {
-    for (SGMManager sgmManager : storageGroupSchemaManager.getAllSGMManagers()) {
-      sgmManager.forceMlog();
+    for (SchemaRegion schemaRegion : storageGroupSchemaManager.getAllSchemaRegions()) {
+      schemaRegion.forceMlog();
     }
   }
 
@@ -275,7 +272,7 @@ public class MManager {
 
       initialized = false;
     } catch (IOException e) {
-      logger.error("Error occurred when clearing MManager:", e);
+      logger.error("Error occurred when clearing SchemaEngine:", e);
     }
   }
   // endregion
@@ -367,7 +364,9 @@ public class MManager {
               + "please increase MAX_HEAP_SIZE in iotdb-env.sh/bat and restart");
     }
     ensureStorageGroup(plan.getPath());
-    storageGroupSchemaManager.getBelongedSGMManager(plan.getPath()).createTimeseries(plan, offset);
+    storageGroupSchemaManager
+        .getBelongedSchemaRegion(plan.getPath())
+        .createTimeseries(plan, offset);
   }
 
   /**
@@ -423,7 +422,7 @@ public class MManager {
     }
     ensureStorageGroup(plan.getPrefixPath());
     storageGroupSchemaManager
-        .getBelongedSGMManager(plan.getPrefixPath())
+        .getBelongedSchemaRegion(plan.getPrefixPath())
         .createAlignedTimeSeries(plan);
   }
 
@@ -463,9 +462,9 @@ public class MManager {
    */
   public String deleteTimeseries(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException {
-    List<SGMManager> sgmManagers =
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch);
-    if (sgmManagers.isEmpty()) {
+    List<SchemaRegion> schemaRegions =
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch);
+    if (schemaRegions.isEmpty()) {
       // In the cluster mode, the deletion of a timeseries will be forwarded to all the nodes. For
       // nodes that do not have the metadata of the timeseries, the coordinator expects a
       // PathNotExistException.
@@ -474,8 +473,8 @@ public class MManager {
     Set<String> failedNames = new HashSet<>();
     int deletedNum = 0;
     Pair<Integer, Set<String>> sgDeletionResult;
-    for (SGMManager sgmManager : sgmManagers) {
-      sgDeletionResult = sgmManager.deleteTimeseries(pathPattern, isPrefixMatch);
+    for (SchemaRegion schemaRegion : schemaRegions) {
+      sgDeletionResult = schemaRegion.deleteTimeseries(pathPattern, isPrefixMatch);
       deletedNum += sgDeletionResult.left;
       failedNames.addAll(sgDeletionResult.right);
     }
@@ -531,7 +530,7 @@ public class MManager {
   }
 
   public void setTTL(PartialPath storageGroup, long dataTTL) throws MetadataException, IOException {
-    storageGroupSchemaManager.getSGMManagerByStorageGroupPath(storageGroup).setTTL(dataTTL);
+    storageGroupSchemaManager.getSchemaRegionByStorageGroupPath(storageGroup).setTTL(dataTTL);
   }
   // endregion
 
@@ -549,7 +548,7 @@ public class MManager {
       throws IOException, MetadataException {
     try {
       return storageGroupSchemaManager
-          .getBelongedSGMManager(path)
+          .getBelongedSchemaRegion(path)
           .getDeviceNodeWithAutoCreate(path, autoCreateSchema);
     } catch (StorageGroupNotSetException e) {
       if (!autoCreateSchema) {
@@ -574,7 +573,7 @@ public class MManager {
     }
 
     return storageGroupSchemaManager
-        .getBelongedSGMManager(path)
+        .getBelongedSchemaRegion(path)
         .getDeviceNodeWithAutoCreate(path, autoCreateSchema);
   }
 
@@ -585,7 +584,7 @@ public class MManager {
   }
 
   private void autoCreateDeviceMNode(AutoCreateDeviceMNodePlan plan) throws MetadataException {
-    storageGroupSchemaManager.getBelongedSGMManager(plan.getPath()).autoCreateDeviceMNode(plan);
+    storageGroupSchemaManager.getBelongedSchemaRegion(plan.getPath()).autoCreateDeviceMNode(plan);
   }
   // endregion
 
@@ -602,7 +601,7 @@ public class MManager {
         return false;
       }
       try {
-        return storageGroupSchemaManager.getBelongedSGMManager(path).isPathExist(path);
+        return storageGroupSchemaManager.getBelongedSchemaRegion(path).isPathExist(path);
       } catch (StorageGroupNotSetException e) {
         // path exists above storage group
         return true;
@@ -631,9 +630,9 @@ public class MManager {
   public int getAllTimeseriesCount(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException {
     int count = 0;
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch)) {
-      count += sgmManager.getAllTimeseriesCount(pathPattern, isPrefixMatch);
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch)) {
+      count += schemaRegion.getAllTimeseriesCount(pathPattern, isPrefixMatch);
     }
     return count;
   }
@@ -654,9 +653,9 @@ public class MManager {
   public int getDevicesNum(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException {
     int num = 0;
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch)) {
-      num += sgmManager.getDevicesNum(pathPattern, isPrefixMatch);
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch)) {
+      num += schemaRegion.getDevicesNum(pathPattern, isPrefixMatch);
     }
     return num;
   }
@@ -687,11 +686,11 @@ public class MManager {
    */
   public int getNodesCountInGivenLevel(PartialPath pathPattern, int level, boolean isPrefixMatch)
       throws MetadataException {
-    Pair<Integer, List<SGMManager>> pair =
+    Pair<Integer, List<SchemaRegion>> pair =
         storageGroupSchemaManager.getNodesCountInGivenLevel(pathPattern, level, isPrefixMatch);
     int count = pair.left;
-    for (SGMManager sgmManager : pair.right) {
-      count += sgmManager.getNodesCountInGivenLevel(pathPattern, level, isPrefixMatch);
+    for (SchemaRegion schemaRegion : pair.right) {
+      count += schemaRegion.getNodesCountInGivenLevel(pathPattern, level, isPrefixMatch);
     }
     return count;
   }
@@ -711,9 +710,9 @@ public class MManager {
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException {
     Map<PartialPath, Integer> result = new HashMap<>();
     Map<PartialPath, Integer> sgResult;
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch)) {
-      sgResult = sgmManager.getMeasurementCountGroupByLevel(pathPattern, level, isPrefixMatch);
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch)) {
+      sgResult = schemaRegion.getMeasurementCountGroupByLevel(pathPattern, level, isPrefixMatch);
       for (PartialPath path : sgResult.keySet()) {
         if (result.containsKey(path)) {
           result.put(path, result.get(path) + sgResult.get(path));
@@ -745,11 +744,11 @@ public class MManager {
 
   public List<PartialPath> getNodesListInGivenLevel(
       PartialPath pathPattern, int nodeLevel, StorageGroupFilter filter) throws MetadataException {
-    Pair<List<PartialPath>, List<SGMManager>> pair =
+    Pair<List<PartialPath>, List<SchemaRegion>> pair =
         storageGroupSchemaManager.getNodesListInGivenLevel(pathPattern, nodeLevel, filter);
     List<PartialPath> result = pair.left;
-    for (SGMManager sgmManager : pair.right) {
-      result.addAll(sgmManager.getNodesListInGivenLevel(pathPattern, nodeLevel, filter));
+    for (SchemaRegion schemaRegion : pair.right) {
+      result.addAll(schemaRegion.getNodesListInGivenLevel(pathPattern, nodeLevel, filter));
     }
     return result;
   }
@@ -766,11 +765,11 @@ public class MManager {
    * @return All child nodes' seriesPath(s) of given seriesPath.
    */
   public Set<String> getChildNodePathInNextLevel(PartialPath pathPattern) throws MetadataException {
-    Pair<Set<String>, List<SGMManager>> pair =
+    Pair<Set<String>, List<SchemaRegion>> pair =
         storageGroupSchemaManager.getChildNodePathInNextLevel(pathPattern);
     Set<String> result = pair.left;
-    for (SGMManager sgmManager : pair.right) {
-      result.addAll(sgmManager.getChildNodePathInNextLevel(pathPattern));
+    for (SchemaRegion schemaRegion : pair.right) {
+      result.addAll(schemaRegion.getChildNodePathInNextLevel(pathPattern));
     }
     return result;
   }
@@ -786,11 +785,11 @@ public class MManager {
    * @return All child nodes of given seriesPath.
    */
   public Set<String> getChildNodeNameInNextLevel(PartialPath pathPattern) throws MetadataException {
-    Pair<Set<String>, List<SGMManager>> pair =
+    Pair<Set<String>, List<SchemaRegion>> pair =
         storageGroupSchemaManager.getChildNodeNameInNextLevel(pathPattern);
     Set<String> result = pair.left;
-    for (SGMManager sgmManager : pair.right) {
-      result.addAll(sgmManager.getChildNodeNameInNextLevel(pathPattern));
+    for (SchemaRegion schemaRegion : pair.right) {
+      result.addAll(schemaRegion.getChildNodeNameInNextLevel(pathPattern));
     }
     return result;
   }
@@ -889,7 +888,7 @@ public class MManager {
    */
   public Set<PartialPath> getBelongedDevices(PartialPath timeseries) throws MetadataException {
     return storageGroupSchemaManager
-        .getBelongedSGMManager(timeseries)
+        .getBelongedSchemaRegion(timeseries)
         .getBelongedDevices(timeseries);
   }
 
@@ -904,9 +903,9 @@ public class MManager {
   public Set<PartialPath> getMatchedDevices(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException {
     Set<PartialPath> result = new TreeSet<>();
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch)) {
-      result.addAll(sgmManager.getMatchedDevices(pathPattern, isPrefixMatch));
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch)) {
+      result.addAll(schemaRegion.getMatchedDevices(pathPattern, isPrefixMatch));
     }
     return result;
   }
@@ -923,12 +922,12 @@ public class MManager {
     int limit = plan.getLimit();
     int offset = plan.getOffset();
 
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(plan.getPath(), plan.isPrefixMatch())) {
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(plan.getPath(), plan.isPrefixMatch())) {
       if (limit != 0 && plan.getLimit() == 0) {
         break;
       }
-      result.addAll(sgmManager.getMatchedDevices(plan));
+      result.addAll(schemaRegion.getMatchedDevices(plan));
     }
 
     // reset limit and offset
@@ -984,13 +983,14 @@ public class MManager {
     int tmpLimit = limit;
     int tmpOffset = offset;
 
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(pathPattern, isPrefixMatch)) {
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(pathPattern, isPrefixMatch)) {
       if (limit != 0 && tmpLimit == 0) {
         break;
       }
       result =
-          sgmManager.getMeasurementPathsWithAlias(pathPattern, tmpLimit, tmpOffset, isPrefixMatch);
+          schemaRegion.getMeasurementPathsWithAlias(
+              pathPattern, tmpLimit, tmpOffset, isPrefixMatch);
       measurementPaths.addAll(result.left);
       resultOffset += result.right;
       if (limit != 0) {
@@ -1025,12 +1025,12 @@ public class MManager {
       plan.setLimit(offset + limit);
     }
 
-    for (SGMManager sgmManager :
-        storageGroupSchemaManager.getInvolvedSGMManagers(plan.getPath(), plan.isPrefixMatch())) {
+    for (SchemaRegion schemaRegion :
+        storageGroupSchemaManager.getInvolvedSchemaRegions(plan.getPath(), plan.isPrefixMatch())) {
       if (limit != 0 && plan.getLimit() == 0) {
         break;
       }
-      result.addAll(sgmManager.showTimeseries(plan, context));
+      result.addAll(schemaRegion.showTimeseries(plan, context));
     }
 
     Stream<ShowTimeSeriesResult> stream = result.stream();
@@ -1080,7 +1080,7 @@ public class MManager {
       throws PathNotExistException {
     try {
       return storageGroupSchemaManager
-          .getBelongedSGMManager(devicePath)
+          .getBelongedSchemaRegion(devicePath)
           .getAllMeasurementByDevicePath(devicePath);
     } catch (MetadataException e) {
       throw new PathNotExistException(devicePath.getFullPath());
@@ -1113,20 +1113,20 @@ public class MManager {
   }
 
   public IMNode getDeviceNode(PartialPath path) throws MetadataException {
-    return storageGroupSchemaManager.getBelongedSGMManager(path).getDeviceNode(path);
+    return storageGroupSchemaManager.getBelongedSchemaRegion(path).getDeviceNode(path);
   }
 
   public IMeasurementMNode[] getMeasurementMNodes(PartialPath deviceId, String[] measurements)
       throws MetadataException {
     return storageGroupSchemaManager
-        .getBelongedSGMManager(deviceId)
+        .getBelongedSchemaRegion(deviceId)
         .getMeasurementMNodes(deviceId, measurements);
   }
 
   public IMeasurementMNode getMeasurementMNode(PartialPath fullPath) throws MetadataException {
     try {
       return storageGroupSchemaManager
-          .getBelongedSGMManager(fullPath)
+          .getBelongedSchemaRegion(fullPath)
           .getMeasurementMNode(fullPath);
     } catch (StorageGroupNotSetException e) {
       throw new PathNotExistException(fullPath.getFullPath());
@@ -1156,7 +1156,7 @@ public class MManager {
 
   // region Interfaces for alias and tag/attribute operations
   public void changeAlias(PartialPath path, String alias) throws MetadataException {
-    storageGroupSchemaManager.getBelongedSGMManager(path).changeAlias(path, alias);
+    storageGroupSchemaManager.getBelongedSchemaRegion(path).changeAlias(path, alias);
   }
 
   /**
@@ -1176,7 +1176,7 @@ public class MManager {
       PartialPath fullPath)
       throws MetadataException, IOException {
     storageGroupSchemaManager
-        .getBelongedSGMManager(fullPath)
+        .getBelongedSchemaRegion(fullPath)
         .upsertTagsAndAttributes(alias, tagsMap, attributesMap, fullPath);
   }
 
@@ -1189,7 +1189,7 @@ public class MManager {
   public void addAttributes(Map<String, String> attributesMap, PartialPath fullPath)
       throws MetadataException, IOException {
     storageGroupSchemaManager
-        .getBelongedSGMManager(fullPath)
+        .getBelongedSchemaRegion(fullPath)
         .addAttributes(attributesMap, fullPath);
   }
 
@@ -1201,7 +1201,7 @@ public class MManager {
    */
   public void addTags(Map<String, String> tagsMap, PartialPath fullPath)
       throws MetadataException, IOException {
-    storageGroupSchemaManager.getBelongedSGMManager(fullPath).addTags(tagsMap, fullPath);
+    storageGroupSchemaManager.getBelongedSchemaRegion(fullPath).addTags(tagsMap, fullPath);
   }
 
   /**
@@ -1214,7 +1214,7 @@ public class MManager {
   public void dropTagsOrAttributes(Set<String> keySet, PartialPath fullPath)
       throws MetadataException, IOException {
     storageGroupSchemaManager
-        .getBelongedSGMManager(fullPath)
+        .getBelongedSchemaRegion(fullPath)
         .dropTagsOrAttributes(keySet, fullPath);
   }
 
@@ -1228,7 +1228,7 @@ public class MManager {
   public void setTagsOrAttributesValue(Map<String, String> alterMap, PartialPath fullPath)
       throws MetadataException, IOException {
     storageGroupSchemaManager
-        .getBelongedSGMManager(fullPath)
+        .getBelongedSchemaRegion(fullPath)
         .setTagsOrAttributesValue(alterMap, fullPath);
   }
 
@@ -1243,7 +1243,7 @@ public class MManager {
   public void renameTagOrAttributeKey(String oldKey, String newKey, PartialPath fullPath)
       throws MetadataException, IOException {
     storageGroupSchemaManager
-        .getBelongedSGMManager(fullPath)
+        .getBelongedSchemaRegion(fullPath)
         .renameTagOrAttributeKey(oldKey, newKey, fullPath);
   }
   // endregion
@@ -1258,9 +1258,9 @@ public class MManager {
   public void collectMeasurementSchema(
       PartialPath prefixPath, List<IMeasurementSchema> measurementSchemas) {
     try {
-      for (SGMManager sgmManager :
-          storageGroupSchemaManager.getInvolvedSGMManagers(prefixPath, true)) {
-        sgmManager.collectMeasurementSchema(prefixPath, measurementSchemas);
+      for (SchemaRegion schemaRegion :
+          storageGroupSchemaManager.getInvolvedSchemaRegions(prefixPath, true)) {
+        schemaRegion.collectMeasurementSchema(prefixPath, measurementSchemas);
       }
     } catch (MetadataException ignored) {
       // do nothing
@@ -1275,9 +1275,9 @@ public class MManager {
   public void collectTimeseriesSchema(
       PartialPath prefixPath, Collection<TimeseriesSchema> timeseriesSchemas) {
     try {
-      for (SGMManager sgmManager :
-          storageGroupSchemaManager.getInvolvedSGMManagers(prefixPath, true)) {
-        sgmManager.collectTimeseriesSchema(prefixPath, timeseriesSchemas);
+      for (SchemaRegion schemaRegion :
+          storageGroupSchemaManager.getInvolvedSchemaRegions(prefixPath, true)) {
+        schemaRegion.collectTimeseriesSchema(prefixPath, timeseriesSchemas);
       }
     } catch (MetadataException ignored) {
       // do nothing
@@ -1344,8 +1344,8 @@ public class MManager {
   /**
    * Update the last cache value of time series of given seriesPath.
    *
-   * <p>MManager will use the seriesPath to search the node first and then process the lastCache in
-   * the MeasurementMNode
+   * <p>SchemaEngine will use the seriesPath to search the node first and then process the lastCache
+   * in the MeasurementMNode
    *
    * <p>Invoking scenario: (1) after executing insertPlan (2) after reading last value from file
    * during last Query
@@ -1391,8 +1391,8 @@ public class MManager {
   }
 
   /**
-   * Get the last cache value of time series of given seriesPath. MManager will use the seriesPath
-   * to search the node.
+   * Get the last cache value of time series of given seriesPath. SchemaEngine will use the
+   * seriesPath to search the node.
    *
    * <p>Invoking scenario: last cache read during last Query
    *
@@ -1424,8 +1424,8 @@ public class MManager {
   }
 
   /**
-   * Reset the last cache value of time series of given seriesPath. MManager will use the seriesPath
-   * to search the node.
+   * Reset the last cache value of time series of given seriesPath. SchemaEngine will use the
+   * seriesPath to search the node.
    *
    * @param seriesPath the PartialPath of full path from root to Measurement
    */
@@ -1484,7 +1484,7 @@ public class MManager {
       throws MetadataException, IOException {
     try {
       return storageGroupSchemaManager
-          .getBelongedSGMManager(plan.getDevicePath())
+          .getBelongedSchemaRegion(plan.getDevicePath())
           .getSeriesSchemasAndReadLockDevice(plan);
     } catch (StorageGroupNotSetException e) {
       if (config.isAutoCreateSchemaEnabled()) {
@@ -1494,7 +1494,7 @@ public class MManager {
       }
 
       return storageGroupSchemaManager
-          .getBelongedSGMManager(plan.getDevicePath())
+          .getBelongedSchemaRegion(plan.getDevicePath())
           .getSeriesSchemasAndReadLockDevice(plan);
     }
   }
@@ -1517,7 +1517,7 @@ public class MManager {
 
     for (PartialPath path : template.getRelatedStorageGroup()) {
       if (!storageGroupSchemaManager
-          .getBelongedSGMManager(path)
+          .getBelongedSchemaRegion(path)
           .isTemplateAppendable(template, plan.getMeasurements())) {
         isTemplateAppendable = false;
         break;
@@ -1601,14 +1601,14 @@ public class MManager {
   public Set<String> getPathsSetTemplate(String templateName) throws MetadataException {
     Set<String> result = new HashSet<>();
     if (templateName.equals(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD)) {
-      for (SGMManager sgmManager : storageGroupSchemaManager.getAllSGMManagers()) {
-        result.addAll(sgmManager.getPathsSetTemplate(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
+      for (SchemaRegion schemaRegion : storageGroupSchemaManager.getAllSchemaRegions()) {
+        result.addAll(schemaRegion.getPathsSetTemplate(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
       }
     } else {
       for (PartialPath path : templateManager.getTemplate(templateName).getRelatedStorageGroup()) {
         result.addAll(
             storageGroupSchemaManager
-                .getBelongedSGMManager(path)
+                .getBelongedSchemaRegion(path)
                 .getPathsSetTemplate(templateName));
       }
     }
@@ -1619,14 +1619,14 @@ public class MManager {
   public Set<String> getPathsUsingTemplate(String templateName) throws MetadataException {
     Set<String> result = new HashSet<>();
     if (templateName.equals(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD)) {
-      for (SGMManager sgmManager : storageGroupSchemaManager.getAllSGMManagers()) {
-        result.addAll(sgmManager.getPathsUsingTemplate(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
+      for (SchemaRegion schemaRegion : storageGroupSchemaManager.getAllSchemaRegions()) {
+        result.addAll(schemaRegion.getPathsUsingTemplate(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD));
       }
     } else {
       for (PartialPath path : templateManager.getTemplate(templateName).getRelatedStorageGroup()) {
         result.addAll(
             storageGroupSchemaManager
-                .getBelongedSGMManager(path)
+                .getBelongedSchemaRegion(path)
                 .getPathsUsingTemplate(templateName));
       }
     }
@@ -1654,7 +1654,7 @@ public class MManager {
     PartialPath path = new PartialPath(plan.getPrefixPath());
     try {
       ensureStorageGroup(path);
-      storageGroupSchemaManager.getBelongedSGMManager(path).setSchemaTemplate(plan);
+      storageGroupSchemaManager.getBelongedSchemaRegion(path).setSchemaTemplate(plan);
     } catch (StorageGroupAlreadySetException e) {
       throw new MetadataException("Template should not be set above storageGroup");
     }
@@ -1663,7 +1663,7 @@ public class MManager {
   public synchronized void unsetSchemaTemplate(UnsetTemplatePlan plan) throws MetadataException {
     try {
       storageGroupSchemaManager
-          .getBelongedSGMManager(new PartialPath(plan.getPrefixPath()))
+          .getBelongedSchemaRegion(new PartialPath(plan.getPrefixPath()))
           .unsetSchemaTemplate(plan);
     } catch (StorageGroupNotSetException e) {
       throw new PathNotExistException(plan.getPrefixPath());
@@ -1673,7 +1673,7 @@ public class MManager {
   public void setUsingSchemaTemplate(ActivateTemplatePlan plan) throws MetadataException {
     try {
       storageGroupSchemaManager
-          .getBelongedSGMManager(plan.getPrefixPath())
+          .getBelongedSchemaRegion(plan.getPrefixPath())
           .setUsingSchemaTemplate(plan);
     } catch (StorageGroupNotSetException e) {
       throw new MetadataException(
@@ -1684,15 +1684,15 @@ public class MManager {
 
   IMNode setUsingSchemaTemplate(IMNode node) throws MetadataException {
     return storageGroupSchemaManager
-        .getBelongedSGMManager(node.getPartialPath())
+        .getBelongedSchemaRegion(node.getPartialPath())
         .setUsingSchemaTemplate(node);
   }
   // endregion
 
   // region TestOnly Interfaces
   /**
-   * To reduce the String number in memory, use the deviceId from MManager instead of the deviceId
-   * read from disk
+   * To reduce the String number in memory, use the deviceId from SchemaEngine instead of the
+   * deviceId read from disk
    *
    * @param devicePath read from disk
    * @return deviceId
@@ -1704,21 +1704,21 @@ public class MManager {
       IMNode deviceNode = getDeviceNode(devicePath);
       device = deviceNode.getFullPath();
     } catch (MetadataException | NullPointerException e) {
-      // Cannot get deviceId from MManager, return the input deviceId
+      // Cannot get deviceId from SchemaEngine, return the input deviceId
     }
     return device;
   }
 
   /**
-   * Attention!!!!!, this method could only be used for Tests involving multiple mmanagers. The
-   * singleton of templateManager and tagManager will cause interference between mmanagers if one of
-   * the mmanagers invoke init method or clear method
+   * Attention!!!!!, this method could only be used for Tests involving multiple schemaEngines. The
+   * singleton of templateManager and tagManager will cause interference between schemaEngines if
+   * one of the schemaEngines invoke init method or clear method
    *
    * <p>todo remove this method after delete or refactor the SlotPartitionTableTest in cluster
    * module
    */
   @TestOnly
-  public void initForMultiMManagerTest() {
+  public void initForMultiSchemaEngineTest() {
     templateManager = TemplateManager.getNewInstanceForTest();
     storageGroupSchemaManager = StorageGroupSchemaManager.getNewInstanceForTest();
     init();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/SGMManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/SchemaRegion.java
similarity index 99%
rename from server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/SGMManager.java
rename to server/src/main/java/org/apache/iotdb/db/metadata/SchemaRegion.java
index 2136c2e..33a13cf 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/SGMManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/SchemaRegion.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.metadata.storagegroup;
+package org.apache.iotdb.db.metadata;
 
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
@@ -34,8 +34,6 @@ import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.SchemaDirCreationFailureException;
 import org.apache.iotdb.db.exception.metadata.TemplateIsInUseException;
-import org.apache.iotdb.db.metadata.MManager;
-import org.apache.iotdb.db.metadata.MetadataConstant;
 import org.apache.iotdb.db.metadata.idtable.IDTable;
 import org.apache.iotdb.db.metadata.idtable.IDTableManager;
 import org.apache.iotdb.db.metadata.logfile.MLogReader;
@@ -142,7 +140,7 @@ import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARA
  * </ol>
  */
 @SuppressWarnings("java:S1135") // ignore todos
-public class SGMManager {
+public class SchemaRegion {
 
   private static final Logger logger = LoggerFactory.getLogger(StorageGroupSchemaManager.class);
 
@@ -169,8 +167,8 @@ public class SGMManager {
   private TagManager tagManager;
 
   // region Interfaces and Implementation of initialization、snapshot、recover and clear
-  public SGMManager() {
-    int cacheSize = config.getmManagerCacheSize();
+  public SchemaRegion() {
+    int cacheSize = config.getSchemaRegionCacheSize();
     mNodeCache =
         Caffeine.newBuilder()
             .maximumSize(cacheSize)
@@ -804,7 +802,7 @@ public class SGMManager {
 
   // region Interfaces for level Node info Query
   public List<PartialPath> getNodesListInGivenLevel(
-      PartialPath pathPattern, int nodeLevel, MManager.StorageGroupFilter filter)
+      PartialPath pathPattern, int nodeLevel, SchemaEngine.StorageGroupFilter filter)
       throws MetadataException {
     return mtree.getNodesListInGivenLevel(pathPattern, nodeLevel, filter);
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/StorageGroupSchemaManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/StorageGroupSchemaManager.java
similarity index 78%
rename from server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/StorageGroupSchemaManager.java
rename to server/src/main/java/org/apache/iotdb/db/metadata/StorageGroupSchemaManager.java
index fd9928e..2782cd5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/storagegroup/StorageGroupSchemaManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/StorageGroupSchemaManager.java
@@ -17,13 +17,12 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.metadata.storagegroup;
+package org.apache.iotdb.db.metadata;
 
 import org.apache.iotdb.commons.utils.TestOnly;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
-import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.mtree.MTreeAboveSG;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -92,31 +91,31 @@ public class StorageGroupSchemaManager implements IStorageGroupSchemaManager {
   }
 
   @Override
-  public SGMManager getBelongedSGMManager(PartialPath path) throws MetadataException {
-    return mtree.getStorageGroupNodeByPath(path).getSGMManager();
+  public SchemaRegion getBelongedSchemaRegion(PartialPath path) throws MetadataException {
+    return mtree.getStorageGroupNodeByPath(path).getSchemaRegion();
   }
 
   @Override
-  public SGMManager getSGMManagerByStorageGroupPath(PartialPath path) throws MetadataException {
-    return getStorageGroupNodeByStorageGroupPath(path).getSGMManager();
+  public SchemaRegion getSchemaRegionByStorageGroupPath(PartialPath path) throws MetadataException {
+    return getStorageGroupNodeByStorageGroupPath(path).getSchemaRegion();
   }
 
   @Override
-  public List<SGMManager> getInvolvedSGMManagers(PartialPath pathPattern, boolean isPrefixMatch)
+  public List<SchemaRegion> getInvolvedSchemaRegions(PartialPath pathPattern, boolean isPrefixMatch)
       throws MetadataException {
-    List<SGMManager> result = new ArrayList<>();
+    List<SchemaRegion> result = new ArrayList<>();
     for (IStorageGroupMNode storageGroupMNode :
         mtree.getInvolvedStorageGroupNodes(pathPattern, isPrefixMatch)) {
-      result.add(storageGroupMNode.getSGMManager());
+      result.add(storageGroupMNode.getSchemaRegion());
     }
     return result;
   }
 
   @Override
-  public List<SGMManager> getAllSGMManagers() {
-    List<SGMManager> result = new ArrayList<>();
+  public List<SchemaRegion> getAllSchemaRegions() {
+    List<SchemaRegion> result = new ArrayList<>();
     for (IStorageGroupMNode storageGroupMNode : mtree.getAllStorageGroupNodes()) {
-      result.add(storageGroupMNode.getSGMManager());
+      result.add(storageGroupMNode.getSchemaRegion());
     }
     return result;
   }
@@ -192,52 +191,52 @@ public class StorageGroupSchemaManager implements IStorageGroupSchemaManager {
   }
 
   @Override
-  public Pair<Integer, List<SGMManager>> getNodesCountInGivenLevel(
+  public Pair<Integer, List<SchemaRegion>> getNodesCountInGivenLevel(
       PartialPath pathPattern, int level, boolean isPrefixMatch) throws MetadataException {
     Pair<Integer, Set<IStorageGroupMNode>> resultAboveSG =
         mtree.getNodesCountInGivenLevel(pathPattern, level, isPrefixMatch);
-    List<SGMManager> sgmManagers = new LinkedList<>();
+    List<SchemaRegion> schemaRegions = new LinkedList<>();
     for (IStorageGroupMNode storageGroupMNode : resultAboveSG.right) {
-      sgmManagers.add(storageGroupMNode.getSGMManager());
+      schemaRegions.add(storageGroupMNode.getSchemaRegion());
     }
-    return new Pair<>(resultAboveSG.left, sgmManagers);
+    return new Pair<>(resultAboveSG.left, schemaRegions);
   }
 
   @Override
-  public Pair<List<PartialPath>, List<SGMManager>> getNodesListInGivenLevel(
-      PartialPath pathPattern, int nodeLevel, MManager.StorageGroupFilter filter)
+  public Pair<List<PartialPath>, List<SchemaRegion>> getNodesListInGivenLevel(
+      PartialPath pathPattern, int nodeLevel, SchemaEngine.StorageGroupFilter filter)
       throws MetadataException {
     Pair<List<PartialPath>, Set<IStorageGroupMNode>> resultAboveSG =
         mtree.getNodesListInGivenLevel(pathPattern, nodeLevel, filter);
-    List<SGMManager> sgmManagers = new LinkedList<>();
+    List<SchemaRegion> schemaRegions = new LinkedList<>();
     for (IStorageGroupMNode storageGroupMNode : resultAboveSG.right) {
-      sgmManagers.add(storageGroupMNode.getSGMManager());
+      schemaRegions.add(storageGroupMNode.getSchemaRegion());
     }
-    return new Pair<>(resultAboveSG.left, sgmManagers);
+    return new Pair<>(resultAboveSG.left, schemaRegions);
   }
 
   @Override
-  public Pair<Set<String>, List<SGMManager>> getChildNodePathInNextLevel(PartialPath pathPattern)
+  public Pair<Set<String>, List<SchemaRegion>> getChildNodePathInNextLevel(PartialPath pathPattern)
       throws MetadataException {
     Pair<Set<String>, Set<IStorageGroupMNode>> resultAboveSG =
         mtree.getChildNodePathInNextLevel(pathPattern);
-    List<SGMManager> sgmManagers = new LinkedList<>();
+    List<SchemaRegion> schemaRegions = new LinkedList<>();
     for (IStorageGroupMNode storageGroupMNode : resultAboveSG.right) {
-      sgmManagers.add(storageGroupMNode.getSGMManager());
+      schemaRegions.add(storageGroupMNode.getSchemaRegion());
     }
-    return new Pair<>(resultAboveSG.left, sgmManagers);
+    return new Pair<>(resultAboveSG.left, schemaRegions);
   }
 
   @Override
-  public Pair<Set<String>, List<SGMManager>> getChildNodeNameInNextLevel(PartialPath pathPattern)
+  public Pair<Set<String>, List<SchemaRegion>> getChildNodeNameInNextLevel(PartialPath pathPattern)
       throws MetadataException {
     Pair<Set<String>, Set<IStorageGroupMNode>> resultAboveSG =
         mtree.getChildNodeNameInNextLevel(pathPattern);
-    List<SGMManager> sgmManagers = new LinkedList<>();
+    List<SchemaRegion> schemaRegions = new LinkedList<>();
     for (IStorageGroupMNode storageGroupMNode : resultAboveSG.right) {
-      sgmManagers.add(storageGroupMNode.getSGMManager());
+      schemaRegions.add(storageGroupMNode.getSchemaRegion());
     }
-    return new Pair<>(resultAboveSG.left, sgmManagers);
+    return new Pair<>(resultAboveSG.left, schemaRegions);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
index 6a0eb06..d433cc2 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java
@@ -323,7 +323,7 @@ public class IDTableHashmapImpl implements IDTable {
 
   /**
    * check whether a time series is exist if exist, check the type consistency if not exist, call
-   * MManager to create it
+   * SchemaEngine to create it
    *
    * @return measurement MNode of the time series or null if type is not match
    */
@@ -342,12 +342,13 @@ public class IDTableHashmapImpl implements IDTable {
       System.arraycopy(
           plan.getMeasurementMNodes(), 0, insertPlanMNodeBackup, 0, insertPlanMNodeBackup.length);
       try {
-        IoTDB.metaManager.getSeriesSchemasAndReadLockDevice(plan);
+        IoTDB.schemaEngine.getSeriesSchemasAndReadLockDevice(plan);
       } catch (IOException e) {
         throw new MetadataException(e);
       }
 
-      // if the timeseries is in template, mmanager will not create timeseries. so we have to put it
+      // if the timeseries is in template, schemaEngine will not create timeseries. so we have to
+      // put it
       // in id table here
       for (IMeasurementMNode measurementMNode : plan.getMeasurementMNodes()) {
         if (measurementMNode != null && !deviceEntry.contains(measurementMNode.getName())) {
@@ -372,9 +373,9 @@ public class IDTableHashmapImpl implements IDTable {
       schemaEntry = deviceEntry.getSchemaEntry(measurementName);
     }
 
-    // timeseries is using trigger, we should get trigger from mmanager
+    // timeseries is using trigger, we should get trigger from schemaEngine
     if (schemaEntry.isUsingTrigger()) {
-      IMeasurementMNode measurementMNode = IoTDB.metaManager.getMeasurementMNode(seriesKey);
+      IMeasurementMNode measurementMNode = IoTDB.schemaEngine.getMeasurementMNode(seriesKey);
       return new InsertMeasurementMNode(
           measurementName, schemaEntry, measurementMNode.getTriggerExecutor());
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
index c1ff2b1..e85e7e4 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
@@ -82,7 +82,7 @@ public class IDTableManager {
   public synchronized IDTable getIDTable(PartialPath devicePath) {
     try {
       IStorageGroupMNode storageGroupMNode =
-          IoTDB.metaManager.getStorageGroupNodeByPath(devicePath);
+          IoTDB.schemaEngine.getStorageGroupNodeByPath(devicePath);
       return idTableMap.computeIfAbsent(
           storageGroupMNode.getFullPath(),
           storageGroupPath ->
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/InsertMeasurementMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/InsertMeasurementMNode.java
index 73c3c2e8..f9c3be3 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/InsertMeasurementMNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/InsertMeasurementMNode.java
@@ -37,7 +37,7 @@ import java.util.Map;
 
 /**
  * Generated entity implements IMeasurementMNode interface to unify insert logic through id table
- * and mmanager
+ * and schemaEngine
  */
 public class InsertMeasurementMNode implements IMeasurementMNode {
   SchemaEntry schemaEntry;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/lastCache/LastCacheManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/lastCache/LastCacheManager.java
index 6f57d91..7dc0e71 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/lastCache/LastCacheManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/lastCache/LastCacheManager.java
@@ -50,7 +50,7 @@ public class LastCacheManager {
    * get the last cache value of time series of given seriesPath
    *
    * @param node the measurementMNode holding the lastCache When invoker only has the target
-   *     seriesPath, the node could be null and MManager will search the node
+   *     seriesPath, the node could be null and SchemaEngine will search the node
    * @return the last cache value
    */
   public static TimeValuePair getLastCache(IMeasurementMNode node) {
@@ -68,7 +68,7 @@ public class LastCacheManager {
    * update the last cache value of time series of given seriesPath
    *
    * @param node the measurementMNode holding the lastCache When invoker only has the target
-   *     seriesPath, the node could be null and MManager will search the node
+   *     seriesPath, the node could be null and SchemaEngine will search the node
    * @param timeValuePair the latest point value
    * @param highPriorityUpdate the last value from insertPlan is high priority
    * @param latestFlushedTime latest flushed time
@@ -92,7 +92,7 @@ public class LastCacheManager {
    * reset the last cache value of time series of given seriesPath
    *
    * @param node the measurementMNode holding the lastCache When invoker only has the target
-   *     seriesPath, the node could be null and MManager will search the node
+   *     seriesPath, the node could be null and SchemaEngine will search the node
    */
   public static void resetLastCache(IMeasurementMNode node) {
     if (node == null) {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogReader.java b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogReader.java
index ed37a56..9c7ab65 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogReader.java
@@ -38,7 +38,7 @@ public class MLogReader implements AutoCloseable {
   public MLogReader(String schemaDir, String logFileName) throws IOException {
     File metadataDir = SystemFileFactory.INSTANCE.getFile(schemaDir);
     if (!metadataDir.exists()) {
-      logger.error("no mlog.bin to init MManager.");
+      logger.error("no mlog.bin to init SchemaRegion.");
       throw new IOException("mlog.bin does not exist.");
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogTxtReader.java b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogTxtReader.java
index 7e92fc4..06beb7c 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogTxtReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogTxtReader.java
@@ -40,7 +40,7 @@ public class MLogTxtReader implements AutoCloseable {
   public MLogTxtReader(String schemaDir, String logFileName) throws IOException {
     File metadataDir = SystemFileFactory.INSTANCE.getFile(schemaDir);
     if (!metadataDir.exists()) {
-      logger.error("no mlog.txt to init MManager.");
+      logger.error("no mlog.txt to init SchemaRegion.");
       throw new IOException("mlog.txt does not exist.");
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/IStorageGroupMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/IStorageGroupMNode.java
index be91f17..31cfc5e 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/IStorageGroupMNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/IStorageGroupMNode.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.metadata.mnode;
 
-import org.apache.iotdb.db.metadata.storagegroup.SGMManager;
+import org.apache.iotdb.db.metadata.SchemaRegion;
 
 /** This interface defines a StorageGroupMNode's operation interfaces. */
 public interface IStorageGroupMNode extends IMNode {
@@ -27,7 +27,7 @@ public interface IStorageGroupMNode extends IMNode {
 
   void setDataTTL(long dataTTL);
 
-  SGMManager getSGMManager();
+  SchemaRegion getSchemaRegion();
 
-  void setSGMManager(SGMManager sgmManager);
+  void setSchemaRegion(SchemaRegion schemaRegion);
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupEntityMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupEntityMNode.java
index 3d900cb..5b3fdfb 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupEntityMNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupEntityMNode.java
@@ -18,8 +18,8 @@
  */
 package org.apache.iotdb.db.metadata.mnode;
 
+import org.apache.iotdb.db.metadata.SchemaRegion;
 import org.apache.iotdb.db.metadata.logfile.MLogWriter;
-import org.apache.iotdb.db.metadata.storagegroup.SGMManager;
 
 import java.io.IOException;
 
@@ -30,7 +30,7 @@ public class StorageGroupEntityMNode extends EntityMNode implements IStorageGrou
    */
   private long dataTTL;
 
-  private SGMManager sgmManager;
+  private SchemaRegion schemaRegion;
 
   public StorageGroupEntityMNode(IMNode parent, String name, long dataTTL) {
     super(parent, name);
@@ -48,14 +48,14 @@ public class StorageGroupEntityMNode extends EntityMNode implements IStorageGrou
   }
 
   @Override
-  public SGMManager getSGMManager() {
-    return sgmManager;
+  public SchemaRegion getSchemaRegion() {
+    return schemaRegion;
   }
 
   @Override
-  public void setSGMManager(SGMManager sgmManager) {
-    if (this.sgmManager == null) {
-      this.sgmManager = sgmManager;
+  public void setSchemaRegion(SchemaRegion schemaRegion) {
+    if (this.schemaRegion == null) {
+      this.schemaRegion = schemaRegion;
     }
   }
 
@@ -63,7 +63,7 @@ public class StorageGroupEntityMNode extends EntityMNode implements IStorageGrou
   public void moveDataToNewMNode(IMNode newMNode) {
     super.moveDataToNewMNode(newMNode);
     if (newMNode.isStorageGroup()) {
-      newMNode.getAsStorageGroupMNode().setSGMManager(this.sgmManager);
+      newMNode.getAsStorageGroupMNode().setSchemaRegion(this.schemaRegion);
     }
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupMNode.java b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupMNode.java
index 6343306..a223679 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupMNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/StorageGroupMNode.java
@@ -18,8 +18,8 @@
  */
 package org.apache.iotdb.db.metadata.mnode;
 
+import org.apache.iotdb.db.metadata.SchemaRegion;
 import org.apache.iotdb.db.metadata.logfile.MLogWriter;
-import org.apache.iotdb.db.metadata.storagegroup.SGMManager;
 import org.apache.iotdb.db.qp.physical.sys.StorageGroupMNodePlan;
 
 import java.io.IOException;
@@ -34,7 +34,7 @@ public class StorageGroupMNode extends InternalMNode implements IStorageGroupMNo
    */
   private long dataTTL;
 
-  private SGMManager sgmManager;
+  private SchemaRegion schemaRegion;
 
   public StorageGroupMNode(IMNode parent, String name, long dataTTL) {
     super(parent, name);
@@ -52,14 +52,14 @@ public class StorageGroupMNode extends InternalMNode implements IStorageGroupMNo
   }
 
   @Override
-  public SGMManager getSGMManager() {
-    return sgmManager;
+  public SchemaRegion getSchemaRegion() {
+    return schemaRegion;
   }
 
   @Override
-  public void setSGMManager(SGMManager sgmManager) {
-    if (this.sgmManager == null) {
-      this.sgmManager = sgmManager;
+  public void setSchemaRegion(SchemaRegion schemaRegion) {
+    if (this.schemaRegion == null) {
+      this.schemaRegion = schemaRegion;
     }
   }
 
@@ -67,7 +67,7 @@ public class StorageGroupMNode extends InternalMNode implements IStorageGroupMNo
   public void moveDataToNewMNode(IMNode newMNode) {
     super.moveDataToNewMNode(newMNode);
     if (newMNode.isStorageGroup()) {
-      newMNode.getAsStorageGroupMNode().setSGMManager(this.sgmManager);
+      newMNode.getAsStorageGroupMNode().setSchemaRegion(this.schemaRegion);
     }
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSG.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSG.java
index 67d0325..234ea94 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSG.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSG.java
@@ -27,8 +27,9 @@ import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupAlreadySetException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
-import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metadata.MetadataConstant;
+import org.apache.iotdb.db.metadata.SchemaEngine;
+import org.apache.iotdb.db.metadata.SchemaRegion;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.mnode.InternalMNode;
@@ -39,7 +40,6 @@ import org.apache.iotdb.db.metadata.mtree.traverser.counter.CounterTraverser;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.MNodeAboveSGLevelCounter;
 import org.apache.iotdb.db.metadata.mtree.traverser.counter.StorageGroupCounter;
 import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.metadata.storagegroup.SGMManager;
 import org.apache.iotdb.db.metadata.template.Template;
 import org.apache.iotdb.db.metadata.utils.MetaFormatUtils;
 import org.apache.iotdb.tsfile.utils.Pair;
@@ -77,7 +77,7 @@ public class MTreeAboveSG {
 
   public void clear() {
     for (IStorageGroupMNode storageGroupMNode : getAllStorageGroupNodes()) {
-      storageGroupMNode.getSGMManager().clear();
+      storageGroupMNode.getSchemaRegion().clear();
     }
     this.root = new InternalMNode(null, IoTDBConstant.PATH_ROOT);
   }
@@ -133,10 +133,10 @@ public class MTreeAboveSG {
             new StorageGroupMNode(
                 cur, nodeNames[i], IoTDBDescriptor.getInstance().getConfig().getDefaultTTL());
 
-        // init SGMManager
-        SGMManager sgmManager = new SGMManager();
-        storageGroupMNode.setSGMManager(sgmManager);
-        sgmManager.init(storageGroupMNode);
+        // init SchemaRegion
+        SchemaRegion schemaRegion = new SchemaRegion();
+        storageGroupMNode.setSchemaRegion(schemaRegion);
+        schemaRegion.init(storageGroupMNode);
 
         IMNode result = cur.addChild(nodeNames[i], storageGroupMNode);
 
@@ -145,7 +145,7 @@ public class MTreeAboveSG {
         }
 
         // another thread executed addChild before adding the prepared storageGroupMNode to MTree
-        sgmManager.deleteStorageGroup();
+        schemaRegion.deleteStorageGroup();
         throw new StorageGroupAlreadySetException(path.getFullPath(), true);
       }
     }
@@ -158,7 +158,7 @@ public class MTreeAboveSG {
     // Suppose current system has root.a.b.sg1, root.a.sg2, and delete root.a.b.sg1
     // delete the storage group node sg1
     cur.deleteChild(storageGroupMNode.getName());
-    storageGroupMNode.getSGMManager().deleteStorageGroup();
+    storageGroupMNode.getSchemaRegion().deleteStorageGroup();
 
     // delete node a while retain root.a.sg2
     while (cur.getParent() != null && cur.getChildren().size() == 0) {
@@ -443,7 +443,7 @@ public class MTreeAboveSG {
 
   /** Get all paths from root to the given level */
   public Pair<List<PartialPath>, Set<IStorageGroupMNode>> getNodesListInGivenLevel(
-      PartialPath pathPattern, int nodeLevel, MManager.StorageGroupFilter filter)
+      PartialPath pathPattern, int nodeLevel, SchemaEngine.StorageGroupFilter filter)
       throws MetadataException {
     MNodeAboveSGCollector<List<PartialPath>> collector =
         new MNodeAboveSGCollector<List<PartialPath>>(root, pathPattern) {
@@ -542,7 +542,7 @@ public class MTreeAboveSG {
               child.getName(),
               child
                   .getAsStorageGroupMNode()
-                  .getSGMManager()
+                  .getSchemaRegion()
                   .getMetadataInJson()
                   .get(child.getFullPath()));
         } else {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSG.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSG.java
index 6b8e55f..424a8b4 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSG.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSG.java
@@ -27,8 +27,8 @@ import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.TemplateImcompatibeException;
 import org.apache.iotdb.db.exception.metadata.TemplateIsInUseException;
-import org.apache.iotdb.db.metadata.MManager.StorageGroupFilter;
 import org.apache.iotdb.db.metadata.MetadataConstant;
+import org.apache.iotdb.db.metadata.SchemaEngine.StorageGroupFilter;
 import org.apache.iotdb.db.metadata.mnode.IEntityMNode;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/collector/MNodeCollector.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/collector/MNodeCollector.java
index 7252852..cde3cc1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/collector/MNodeCollector.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/traverser/collector/MNodeCollector.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.metadata.mtree.traverser.collector;
 
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager.StorageGroupFilter;
+import org.apache.iotdb.db.metadata.SchemaEngine.StorageGroupFilter;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgrader.java b/server/src/main/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgrader.java
index 6f0373a..5e2a47f 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgrader.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgrader.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.metadata.upgrade;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metadata.MetadataConstant;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.logfile.MLogReader;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
@@ -85,7 +85,7 @@ public class MetadataUpgrader {
   private File snapshotFile = new File(mtreeSnapshotPath);
   private File snapshotTmpFile = new File(mtreeSnapshotTmpPath);
 
-  MManager manager = IoTDB.metaManager;
+  SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
   /**
    * There are at most four files of old versions:
@@ -124,14 +124,14 @@ public class MetadataUpgrader {
       logger.info("Metadata files have already been upgraded.");
       return;
     }
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     try {
       upgrader.reloadMetadataFromSnapshot();
       upgrader.redoMLog();
       upgrader.clearOldFiles();
       logger.info("Finish upgrading metadata files.");
     } finally {
-      IoTDB.metaManager.clear();
+      IoTDB.schemaEngine.clear();
     }
   }
 
@@ -192,6 +192,9 @@ public class MetadataUpgrader {
   }
 
   public void reloadMetadataFromSnapshot() throws IOException {
+    if (!snapshotFile.exists()) {
+      return;
+    }
     Map<IStorageGroupMNode, List<IMeasurementMNode>> sgMeasurementMap =
         deserializeFrom(snapshotFile);
     IMeasurementSchema schema;
@@ -202,7 +205,7 @@ public class MetadataUpgrader {
     try (TagLogFile tagLogFile = new TagLogFile(schemaDirPath, MetadataConstant.TAG_LOG)) {
       for (IStorageGroupMNode storageGroupMNode : sgMeasurementMap.keySet()) {
         try {
-          manager.setStorageGroup(storageGroupMNode.getPartialPath());
+          schemaEngine.setStorageGroup(storageGroupMNode.getPartialPath());
           for (IMeasurementMNode measurementMNode : sgMeasurementMap.get(storageGroupMNode)) {
             schema = measurementMNode.getSchema();
             if (measurementMNode.getOffset() != -1) {
@@ -223,7 +226,7 @@ public class MetadataUpgrader {
                     tags,
                     attributes,
                     measurementMNode.getAlias());
-            manager.createTimeseries(createTimeSeriesPlan);
+            schemaEngine.createTimeseries(createTimeSeriesPlan);
           }
         } catch (MetadataException e) {
           logger.error("Error occurred during recovering metadata from snapshot", e);
@@ -306,22 +309,23 @@ public class MetadataUpgrader {
         try {
           switch (plan.getOperatorType()) {
             case CREATE_TIMESERIES:
-              processCreateTimeseries((CreateTimeSeriesPlan) plan, manager, tagLogFile);
+              processCreateTimeseries((CreateTimeSeriesPlan) plan, schemaEngine, tagLogFile);
               break;
             case CHANGE_TAG_OFFSET:
-              processChangeTagOffset((ChangeTagOffsetPlan) plan, manager, tagLogFile);
+              processChangeTagOffset((ChangeTagOffsetPlan) plan, schemaEngine, tagLogFile);
               break;
             case SET_STORAGE_GROUP:
-              processSetStorageGroup((SetStorageGroupPlan) plan, manager, setTemplatePlanAboveSG);
+              processSetStorageGroup(
+                  (SetStorageGroupPlan) plan, schemaEngine, setTemplatePlanAboveSG);
               break;
             case SET_TEMPLATE:
-              processSetTemplate((SetTemplatePlan) plan, manager, setTemplatePlanAboveSG);
+              processSetTemplate((SetTemplatePlan) plan, schemaEngine, setTemplatePlanAboveSG);
               break;
             case UNSET_TEMPLATE:
-              processUnSetTemplate((UnsetTemplatePlan) plan, manager, setTemplatePlanAboveSG);
+              processUnSetTemplate((UnsetTemplatePlan) plan, schemaEngine, setTemplatePlanAboveSG);
               break;
             default:
-              manager.operation(plan);
+              schemaEngine.operation(plan);
           }
         } catch (MetadataException e) {
           logger.error("Error occurred during redo mlog: ", e);
@@ -333,48 +337,48 @@ public class MetadataUpgrader {
   }
 
   private void processCreateTimeseries(
-      CreateTimeSeriesPlan createTimeSeriesPlan, MManager manager, TagLogFile tagLogFile)
+      CreateTimeSeriesPlan createTimeSeriesPlan, SchemaEngine schemaEngine, TagLogFile tagLogFile)
       throws MetadataException, IOException {
     long offset;
     offset = createTimeSeriesPlan.getTagOffset();
     createTimeSeriesPlan.setTagOffset(-1);
     createTimeSeriesPlan.setTags(null);
     createTimeSeriesPlan.setAttributes(null);
-    manager.operation(createTimeSeriesPlan);
+    schemaEngine.operation(createTimeSeriesPlan);
     if (offset != -1) {
-      rewriteTagAndAttribute(createTimeSeriesPlan.getPath(), offset, manager, tagLogFile);
+      rewriteTagAndAttribute(createTimeSeriesPlan.getPath(), offset, schemaEngine, tagLogFile);
     }
   }
 
   private void processChangeTagOffset(
-      ChangeTagOffsetPlan changeTagOffsetPlan, MManager manager, TagLogFile tagLogFile)
+      ChangeTagOffsetPlan changeTagOffsetPlan, SchemaEngine schemaEngine, TagLogFile tagLogFile)
       throws MetadataException, IOException {
     rewriteTagAndAttribute(
-        changeTagOffsetPlan.getPath(), changeTagOffsetPlan.getOffset(), manager, tagLogFile);
+        changeTagOffsetPlan.getPath(), changeTagOffsetPlan.getOffset(), schemaEngine, tagLogFile);
   }
 
   private void rewriteTagAndAttribute(
-      PartialPath path, long offset, MManager manager, TagLogFile tagLogFile)
+      PartialPath path, long offset, SchemaEngine schemaEngine, TagLogFile tagLogFile)
       throws IOException, MetadataException {
     Pair<Map<String, String>, Map<String, String>> pair =
         tagLogFile.read(config.getTagAttributeTotalSize(), offset);
-    manager.addTags(pair.left, path);
-    manager.addAttributes(pair.right, path);
+    schemaEngine.addTags(pair.left, path);
+    schemaEngine.addAttributes(pair.right, path);
   }
 
   private void processSetStorageGroup(
       SetStorageGroupPlan setStorageGroupPlan,
-      MManager manager,
+      SchemaEngine schemaEngine,
       Map<String, Map<String, SetTemplatePlan>> setTemplatePlanAboveSG)
       throws IOException, MetadataException {
-    manager.operation(setStorageGroupPlan);
+    schemaEngine.operation(setStorageGroupPlan);
     String storageGroupPath = setStorageGroupPlan.getPath().getFullPath();
     String templatePath;
     for (Map<String, SetTemplatePlan> pathPlanMap : setTemplatePlanAboveSG.values()) {
       for (SetTemplatePlan setTemplatePlan : pathPlanMap.values()) {
         templatePath = setTemplatePlan.getPrefixPath();
         if (storageGroupPath.startsWith(templatePath)) {
-          manager.setSchemaTemplate(
+          schemaEngine.setSchemaTemplate(
               new SetTemplatePlan(setTemplatePlan.getTemplateName(), storageGroupPath));
         }
       }
@@ -383,11 +387,11 @@ public class MetadataUpgrader {
 
   private void processSetTemplate(
       SetTemplatePlan setTemplatePlan,
-      MManager manager,
+      SchemaEngine schemaEngine,
       Map<String, Map<String, SetTemplatePlan>> setTemplatePlanAboveSG)
       throws MetadataException {
     PartialPath path = new PartialPath(setTemplatePlan.getPrefixPath());
-    List<PartialPath> storageGroupPathList = manager.getMatchedStorageGroups(path, true);
+    List<PartialPath> storageGroupPathList = schemaEngine.getMatchedStorageGroups(path, true);
     if (storageGroupPathList.size() > 1 || !path.equals(storageGroupPathList.get(0))) {
       String templateName = setTemplatePlan.getTemplateName();
       if (!setTemplatePlanAboveSG.containsKey(templateName)) {
@@ -399,25 +403,25 @@ public class MetadataUpgrader {
     }
 
     for (PartialPath storageGroupPath : storageGroupPathList) {
-      manager.setSchemaTemplate(
+      schemaEngine.setSchemaTemplate(
           new SetTemplatePlan(setTemplatePlan.getTemplateName(), storageGroupPath.getFullPath()));
     }
   }
 
   private void processUnSetTemplate(
       UnsetTemplatePlan unsetTemplatePlan,
-      MManager manager,
+      SchemaEngine schemaEngine,
       Map<String, Map<String, SetTemplatePlan>> setTemplatePlanAboveSG)
       throws MetadataException {
     PartialPath path = new PartialPath(unsetTemplatePlan.getPrefixPath());
-    List<PartialPath> storageGroupPathList = manager.getMatchedStorageGroups(path, true);
+    List<PartialPath> storageGroupPathList = schemaEngine.getMatchedStorageGroups(path, true);
     if (storageGroupPathList.size() > 1 || !path.equals(storageGroupPathList.get(0))) {
       setTemplatePlanAboveSG
           .get(unsetTemplatePlan.getTemplateName())
           .remove(unsetTemplatePlan.getPrefixPath());
     }
     for (PartialPath storageGroupPath : storageGroupPathList) {
-      manager.unsetSchemaTemplate(
+      schemaEngine.unsetSchemaTemplate(
           new UnsetTemplatePlan(
               storageGroupPath.getFullPath(), unsetTemplatePlan.getTemplateName()));
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index a532ae6..990c72b 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -407,7 +407,7 @@ public class PlanExecutor implements IPlanExecutor {
   private boolean createTemplate(CreateTemplatePlan createTemplatePlan)
       throws QueryProcessException {
     try {
-      IoTDB.metaManager.createSchemaTemplate(createTemplatePlan);
+      IoTDB.schemaEngine.createSchemaTemplate(createTemplatePlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -416,7 +416,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   private boolean dropTemplate(DropTemplatePlan dropTemplatePlan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.dropSchemaTemplate(dropTemplatePlan);
+      IoTDB.schemaEngine.dropSchemaTemplate(dropTemplatePlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -425,7 +425,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   private boolean appendTemplate(AppendTemplatePlan plan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.appendSchemaTemplate(plan);
+      IoTDB.schemaEngine.appendSchemaTemplate(plan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -434,7 +434,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   private boolean pruneTemplate(PruneTemplatePlan plan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.pruneSchemaTemplate(plan);
+      IoTDB.schemaEngine.pruneSchemaTemplate(plan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -443,7 +443,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   private boolean setTemplate(SetTemplatePlan setTemplatePlan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.setSchemaTemplate(setTemplatePlan);
+      IoTDB.schemaEngine.setSchemaTemplate(setTemplatePlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -453,7 +453,7 @@ public class PlanExecutor implements IPlanExecutor {
   private boolean activateTemplate(ActivateTemplatePlan activateTemplatePlan)
       throws QueryProcessException {
     try {
-      IoTDB.metaManager.setUsingSchemaTemplate(activateTemplatePlan);
+      IoTDB.schemaEngine.setUsingSchemaTemplate(activateTemplatePlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -462,7 +462,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   private boolean unsetTemplate(UnsetTemplatePlan unsetTemplatePlan) throws QueryProcessException {
     try {
-      IoTDB.metaManager.unsetSchemaTemplate(unsetTemplatePlan);
+      IoTDB.schemaEngine.unsetSchemaTemplate(unsetTemplatePlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -769,34 +769,34 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected int getDevicesNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.metaManager.getDevicesNum(path, isPrefixMatch);
+    return IoTDB.schemaEngine.getDevicesNum(path, isPrefixMatch);
   }
 
   private int getStorageGroupNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.metaManager.getStorageGroupNum(path, isPrefixMatch);
+    return IoTDB.schemaEngine.getStorageGroupNum(path, isPrefixMatch);
   }
 
   protected int getPathsNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.metaManager.getAllTimeseriesCount(path, isPrefixMatch);
+    return IoTDB.schemaEngine.getAllTimeseriesCount(path, isPrefixMatch);
   }
 
   protected int getNodesNumInGivenLevel(PartialPath path, int level, boolean isPrefixMatch)
       throws MetadataException {
-    return IoTDB.metaManager.getNodesCountInGivenLevel(path, level, isPrefixMatch);
+    return IoTDB.schemaEngine.getNodesCountInGivenLevel(path, level, isPrefixMatch);
   }
 
   protected List<MeasurementPath> getPathsName(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getMeasurementPaths(path);
+    return IoTDB.schemaEngine.getMeasurementPaths(path);
   }
 
   protected List<PartialPath> getNodesList(PartialPath schemaPattern, int level)
       throws MetadataException {
-    return IoTDB.metaManager.getNodesListInGivenLevel(schemaPattern, level);
+    return IoTDB.schemaEngine.getNodesListInGivenLevel(schemaPattern, level);
   }
 
   private Map<PartialPath, Integer> getTimeseriesCountGroupByLevel(CountPlan countPlan)
       throws MetadataException {
-    return IoTDB.metaManager.getMeasurementCountGroupByLevel(
+    return IoTDB.schemaEngine.getMeasurementCountGroupByLevel(
         countPlan.getPath(), countPlan.getLevel(), countPlan.isPrefixMatch());
   }
 
@@ -828,7 +828,7 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected Set<String> getPathNextChildren(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getChildNodePathInNextLevel(path);
+    return IoTDB.schemaEngine.getChildNodePathInNextLevel(path);
   }
 
   private QueryDataSet processShowChildNodes(ShowChildNodesPlan showChildNodesPlan)
@@ -850,12 +850,12 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected Set<String> getNodeNextChildren(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getChildNodeNameInNextLevel(path);
+    return IoTDB.schemaEngine.getChildNodeNameInNextLevel(path);
   }
 
   protected List<PartialPath> getStorageGroupNames(PartialPath path, boolean isPrefixMatch)
       throws MetadataException {
-    return IoTDB.metaManager.getMatchedStorageGroups(path, isPrefixMatch);
+    return IoTDB.schemaEngine.getMatchedStorageGroups(path, isPrefixMatch);
   }
 
   private QueryDataSet processShowStorageGroup(ShowStorageGroupPlan showStorageGroupPlan)
@@ -919,7 +919,7 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected List<IStorageGroupMNode> getAllStorageGroupNodes() {
-    return IoTDB.metaManager.getAllStorageGroupNodes();
+    return IoTDB.schemaEngine.getAllStorageGroupNodes();
   }
 
   private QueryDataSet processShowTTLQuery(ShowTTLPlan showTTLPlan) {
@@ -1088,7 +1088,7 @@ public class PlanExecutor implements IPlanExecutor {
         new ListDataSet(
             Collections.singletonList(new PartialPath(COLUMN_SCHEMA_TEMPLATE, false)),
             Collections.singletonList(TSDataType.TEXT));
-    Set<String> allTemplates = IoTDB.metaManager.getAllTemplates();
+    Set<String> allTemplates = IoTDB.schemaEngine.getAllTemplates();
     for (String templateName : allTemplates) {
       RowRecord rowRecord = new RowRecord(0); // ignore timestamp
       rowRecord.addField(Binary.valueOf(templateName), TSDataType.TEXT);
@@ -1109,7 +1109,7 @@ public class PlanExecutor implements IPlanExecutor {
             Arrays.asList(TSDataType.TEXT, TSDataType.TEXT, TSDataType.TEXT, TSDataType.TEXT));
     try {
       List<Pair<String, IMeasurementSchema>> measurements =
-          IoTDB.metaManager.getSchemasInTemplate(showPlan.getTemplateName(), "");
+          IoTDB.schemaEngine.getSchemasInTemplate(showPlan.getTemplateName(), "");
       for (Pair<String, IMeasurementSchema> measurement : measurements) {
         RowRecord rowRecord = new RowRecord(0); // ignore timestamp
         rowRecord.addField(Binary.valueOf(measurement.left), TSDataType.TEXT);
@@ -1135,7 +1135,7 @@ public class PlanExecutor implements IPlanExecutor {
             Collections.singletonList(new PartialPath(COLUMN_CHILD_PATHS, false)),
             Collections.singletonList(TSDataType.TEXT));
     try {
-      Set<String> paths = IoTDB.metaManager.getPathsUsingTemplate(showPlan.getTemplateName());
+      Set<String> paths = IoTDB.schemaEngine.getPathsUsingTemplate(showPlan.getTemplateName());
       for (String path : paths) {
         RowRecord rowRecord = new RowRecord(0); // ignore timestamp
         rowRecord.addField(Binary.valueOf(path), TSDataType.TEXT);
@@ -1154,7 +1154,7 @@ public class PlanExecutor implements IPlanExecutor {
             Collections.singletonList(new PartialPath(COLUMN_CHILD_PATHS, false)),
             Collections.singletonList(TSDataType.TEXT));
     try {
-      Set<String> paths = IoTDB.metaManager.getPathsSetTemplate(showPlan.getTemplateName());
+      Set<String> paths = IoTDB.schemaEngine.getPathsSetTemplate(showPlan.getTemplateName());
       for (String path : paths) {
         RowRecord rowRecord = new RowRecord(0); // ignore timestamp
         rowRecord.addField(Binary.valueOf(path), TSDataType.TEXT);
@@ -1333,11 +1333,11 @@ public class PlanExecutor implements IPlanExecutor {
     for (Map.Entry<String, List<TimeseriesMetadata>> entry : metadataSet.entrySet()) {
       String deviceId = entry.getKey();
       PartialPath devicePath = new PartialPath(deviceId);
-      if (!IoTDB.metaManager.isPathExist(devicePath)) {
+      if (!IoTDB.schemaEngine.isPathExist(devicePath)) {
         continue;
       }
       boolean isAlignedInIoTDB =
-          IoTDB.metaManager.getDeviceNode(devicePath).getAsEntityMNode().isAligned();
+          IoTDB.schemaEngine.getDeviceNode(devicePath).getAsEntityMNode().isAligned();
       boolean isAlignedInTsFile = false;
       for (TimeseriesMetadata metadata : entry.getValue()) {
         if ("".equals(metadata.getMeasurementId())) {
@@ -1346,8 +1346,8 @@ public class PlanExecutor implements IPlanExecutor {
         }
         PartialPath fullPath =
             new PartialPath(deviceId + TsFileConstant.PATH_SEPARATOR + metadata.getMeasurementId());
-        if (IoTDB.metaManager.isPathExist(fullPath)) {
-          TSDataType dataType = IoTDB.metaManager.getSeriesType(fullPath);
+        if (IoTDB.schemaEngine.isPathExist(fullPath)) {
+          TSDataType dataType = IoTDB.schemaEngine.getSeriesType(fullPath);
           if (dataType != metadata.getTSDataType()) {
             throw new QueryProcessException(
                 String.format(
@@ -1387,13 +1387,13 @@ public class PlanExecutor implements IPlanExecutor {
       PartialPath devicePath = new PartialPath(device);
       PartialPath storageGroupPath = MetaUtils.getStorageGroupPathByLevel(devicePath, sgLevel);
       try {
-        IoTDB.metaManager.setStorageGroup(storageGroupPath);
+        IoTDB.schemaEngine.setStorageGroup(storageGroupPath);
       } catch (StorageGroupAlreadySetException alreadySetException) {
         if (!alreadySetException.getStorageGroupPath().equals(storageGroupPath.getFullPath())) {
           throw alreadySetException;
         }
       }
-      for (PartialPath path : IoTDB.metaManager.getMeasurementPaths(devicePath, true)) {
+      for (PartialPath path : IoTDB.schemaEngine.getMeasurementPaths(devicePath, true)) {
         existSeriesSet.add(path.getMeasurement());
         existSeriesSet.add(path.getMeasurementAlias());
       }
@@ -1442,12 +1442,12 @@ public class PlanExecutor implements IPlanExecutor {
           compressors.add(schema.getCompressor());
         }
 
-        IoTDB.metaManager.createAlignedTimeSeries(
+        IoTDB.schemaEngine.createAlignedTimeSeries(
             devicePath, measurements, dataTypes, encodings, compressors);
       } else {
         for (int i = 0; i < size; i++) {
           IMeasurementSchema schema = needRegisterSchema.get(i);
-          IoTDB.metaManager.createTimeseries(
+          IoTDB.schemaEngine.createTimeseries(
               needRegisterSeries.get(i),
               schema.getType(),
               schema.getEncodingType(),
@@ -1492,9 +1492,9 @@ public class PlanExecutor implements IPlanExecutor {
   private void operateTTL(SetTTLPlan plan) throws QueryProcessException {
     try {
       List<PartialPath> storageGroupPaths =
-          IoTDB.metaManager.getMatchedStorageGroups(plan.getStorageGroup(), plan.isPrefixMatch());
+          IoTDB.schemaEngine.getMatchedStorageGroups(plan.getStorageGroup(), plan.isPrefixMatch());
       for (PartialPath storagePath : storageGroupPaths) {
-        IoTDB.metaManager.setTTL(storagePath, plan.getDataTTL());
+        IoTDB.schemaEngine.setTTL(storagePath, plan.getDataTTL());
         StorageEngine.getInstance().setTTL(storagePath, plan.getDataTTL());
       }
     } catch (MetadataException e) {
@@ -1841,7 +1841,7 @@ public class PlanExecutor implements IPlanExecutor {
   private boolean createTimeSeries(CreateTimeSeriesPlan createTimeSeriesPlan)
       throws QueryProcessException {
     try {
-      IoTDB.metaManager.createTimeseries(createTimeSeriesPlan);
+      IoTDB.schemaEngine.createTimeseries(createTimeSeriesPlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -1851,7 +1851,7 @@ public class PlanExecutor implements IPlanExecutor {
   private boolean createAlignedTimeSeries(CreateAlignedTimeSeriesPlan createAlignedTimeSeriesPlan)
       throws QueryProcessException {
     try {
-      IoTDB.metaManager.createAlignedTimeSeries(createAlignedTimeSeriesPlan);
+      IoTDB.schemaEngine.createAlignedTimeSeries(createAlignedTimeSeriesPlan);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -1910,7 +1910,7 @@ public class PlanExecutor implements IPlanExecutor {
                   deleteTimeSeriesPlan.getPartitionFilter());
         }
         String failed =
-            IoTDB.metaManager.deleteTimeseries(path, deleteTimeSeriesPlan.isPrefixMatch());
+            IoTDB.schemaEngine.deleteTimeseries(path, deleteTimeSeriesPlan.isPrefixMatch());
         if (failed != null) {
           deleteTimeSeriesPlan
               .getResults()
@@ -1937,22 +1937,22 @@ public class PlanExecutor implements IPlanExecutor {
         case RENAME:
           String beforeName = alterMap.keySet().iterator().next();
           String currentName = alterMap.get(beforeName);
-          IoTDB.metaManager.renameTagOrAttributeKey(beforeName, currentName, path);
+          IoTDB.schemaEngine.renameTagOrAttributeKey(beforeName, currentName, path);
           break;
         case SET:
-          IoTDB.metaManager.setTagsOrAttributesValue(alterMap, path);
+          IoTDB.schemaEngine.setTagsOrAttributesValue(alterMap, path);
           break;
         case DROP:
-          IoTDB.metaManager.dropTagsOrAttributes(alterMap.keySet(), path);
+          IoTDB.schemaEngine.dropTagsOrAttributes(alterMap.keySet(), path);
           break;
         case ADD_TAGS:
-          IoTDB.metaManager.addTags(alterMap, path);
+          IoTDB.schemaEngine.addTags(alterMap, path);
           break;
         case ADD_ATTRIBUTES:
-          IoTDB.metaManager.addAttributes(alterMap, path);
+          IoTDB.schemaEngine.addAttributes(alterMap, path);
           break;
         case UPSERT:
-          IoTDB.metaManager.upsertTagsAndAttributes(
+          IoTDB.schemaEngine.upsertTagsAndAttributes(
               alterTimeSeriesPlan.getAlias(),
               alterTimeSeriesPlan.getTagsMap(),
               alterTimeSeriesPlan.getAttributesMap(),
@@ -1975,7 +1975,7 @@ public class PlanExecutor implements IPlanExecutor {
     AUDIT_LOGGER.info("set storage group to {}", setStorageGroupPlan.getPaths());
     PartialPath path = setStorageGroupPlan.getPath();
     try {
-      IoTDB.metaManager.setStorageGroup(path);
+      IoTDB.schemaEngine.setStorageGroup(path);
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -1989,7 +1989,7 @@ public class PlanExecutor implements IPlanExecutor {
     try {
       for (PartialPath storageGroupPath : deleteStorageGroupPlan.getPaths()) {
         List<PartialPath> allRelatedStorageGroupPath =
-            IoTDB.metaManager.getMatchedStorageGroups(
+            IoTDB.schemaEngine.getMatchedStorageGroups(
                 storageGroupPath, deleteStorageGroupPlan.isPrefixMatch());
         if (allRelatedStorageGroupPath.isEmpty()) {
           throw new PathNotExistException(storageGroupPath.getFullPath(), true);
@@ -1999,7 +1999,7 @@ public class PlanExecutor implements IPlanExecutor {
           deletePathList.add(path);
         }
       }
-      IoTDB.metaManager.deleteStorageGroups(deletePathList);
+      IoTDB.schemaEngine.deleteStorageGroups(deletePathList);
       operateClearCache();
     } catch (MetadataException e) {
       throw new QueryProcessException(e);
@@ -2269,7 +2269,7 @@ public class PlanExecutor implements IPlanExecutor {
       return noExistSg;
     }
     for (PartialPath storageGroup : storageGroups) {
-      if (!IoTDB.metaManager.isStorageGroup(storageGroup)) {
+      if (!IoTDB.schemaEngine.isStorageGroup(storageGroup)) {
         noExistSg.add(storageGroup);
       }
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
index 68af114..2eafc30 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
@@ -510,11 +510,11 @@ public class QueryOperator extends Operator {
   }
 
   protected Set<PartialPath> getMatchedDevices(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getMatchedDevices(path, isPrefixMatchPath);
+    return IoTDB.schemaEngine.getMatchedDevices(path, isPrefixMatchPath);
   }
 
   protected List<MeasurementPath> getMatchedTimeseries(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getMeasurementPaths(path, isPrefixMatchPath);
+    return IoTDB.schemaEngine.getMeasurementPaths(path, isPrefixMatchPath);
   }
 
   public boolean isEnableTracing() {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
index 21ef5b3..f4865bf 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
@@ -45,7 +45,7 @@ public abstract class InsertPlan extends PhysicalPlan {
   protected String[] measurements;
   // get from client
   protected TSDataType[] dataTypes;
-  // get from MManager
+  // get from SchemaEngine
   protected IMeasurementMNode[] measurementMNodes;
 
   /**
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
index 85f3a3b..bb44259 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
@@ -120,7 +120,7 @@ public abstract class QueryPlan extends PhysicalPlan {
     for (int i = 0; i < resultColumns.size(); ++i) {
       if (isJdbcQuery) {
         // Separate sgName from the name of resultColumn to reduce the network IO
-        String sgName = IoTDB.metaManager.getBelongedStorageGroup(getPaths().get(i)).getFullPath();
+        String sgName = IoTDB.schemaEngine.getBelongedStorageGroup(getPaths().get(i)).getFullPath();
         respSgColumns.add(sgName);
         if (resultColumns.get(i).getAlias() == null) {
           respColumns.add(
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
index 756c27a..804fc14 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
@@ -370,7 +370,7 @@ public class ConcatPathOptimizer implements ILogicalOptimizer {
     try {
       for (PartialPath originalPath : originalPaths) {
         List<MeasurementPath> all =
-            IoTDB.metaManager.getMeasurementPathsWithAlias(originalPath, 0, 0, isPrefixMatch).left;
+            IoTDB.schemaEngine.getMeasurementPathsWithAlias(originalPath, 0, 0, isPrefixMatch).left;
         if (all.isEmpty()) {
           throw new LogicalOptimizeException(
               String.format("Unknown time series %s in `where clause`", originalPath));
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
index 85be877..dd2171e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
@@ -44,7 +44,7 @@ public class WildcardsRemover {
   private int currentLimit =
       IoTDBDescriptor.getInstance().getConfig().getMaxQueryDeduplicatedPathNum() + 1;
 
-  /** Records the path number that the MManager totally returned. */
+  /** Records the path number that the SchemaEngine totally returned. */
   private int consumed = 0;
 
   /**
@@ -71,7 +71,7 @@ public class WildcardsRemover {
       throws LogicalOptimizeException {
     try {
       Pair<List<MeasurementPath>, Integer> pair =
-          IoTDB.metaManager.getMeasurementPathsWithAlias(
+          IoTDB.schemaEngine.getMeasurementPathsWithAlias(
               path, currentLimit, currentOffset, isPrefixMatch);
       consumed += pair.right;
       currentOffset -= Math.min(currentOffset, pair.right);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
index 0f97cac..1d74b8a 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
@@ -69,7 +69,7 @@ public class ShowDevicesDataSet extends ShowDataSet {
   @Override
   public List<RowRecord> getQueryDataSet() throws MetadataException {
     List<ShowDevicesResult> devicesList =
-        IoTDB.metaManager.getMatchedDevices((ShowDevicesPlan) plan);
+        IoTDB.schemaEngine.getMatchedDevices((ShowDevicesPlan) plan);
     List<RowRecord> records = new ArrayList<>();
     for (ShowDevicesResult result : devicesList) {
       RowRecord record = new RowRecord(0);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
index 5f77662..bef0509 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
@@ -80,7 +80,7 @@ public class ShowTimeseriesDataSet extends ShowDataSet {
   @Override
   public List<RowRecord> getQueryDataSet() throws MetadataException {
     List<ShowTimeSeriesResult> timeseriesList =
-        IoTDB.metaManager.showTimeseries((ShowTimeSeriesPlan) plan, context);
+        IoTDB.schemaEngine.showTimeseries((ShowTimeSeriesPlan) plan, context);
     List<RowRecord> records = new ArrayList<>();
     for (ShowTimeSeriesResult result : timeseriesList) {
       RowRecord record = new RowRecord(0);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
index fd5eec7..cd26ee8 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/LastQueryExecutor.java
@@ -168,7 +168,7 @@ public class LastQueryExecutor {
         if (ID_TABLE_ENABLED) {
           cacheAccessors.add(new IDTableLastCacheAccessor(path));
         } else {
-          cacheAccessors.add(new MManagerLastCacheAccessor(path));
+          cacheAccessors.add(new SchemaEngineLastCacheAccessor(path));
         }
       }
 
@@ -309,22 +309,22 @@ public class LastQueryExecutor {
     void write(TimeValuePair pair);
   }
 
-  private static class MManagerLastCacheAccessor implements LastCacheAccessor {
+  private static class SchemaEngineLastCacheAccessor implements LastCacheAccessor {
 
     private final MeasurementPath path;
     private IMeasurementMNode node;
 
-    MManagerLastCacheAccessor(PartialPath seriesPath) {
+    SchemaEngineLastCacheAccessor(PartialPath seriesPath) {
       this.path = (MeasurementPath) seriesPath;
     }
 
     public TimeValuePair read() {
       try {
-        node = IoTDB.metaManager.getMeasurementMNode(path);
+        node = IoTDB.schemaEngine.getMeasurementMNode(path);
       } catch (MetadataException e) {
         // cluster mode may not get remote node
         TimeValuePair timeValuePair;
-        timeValuePair = IoTDB.metaManager.getLastCache(path);
+        timeValuePair = IoTDB.schemaEngine.getLastCache(path);
         if (timeValuePair != null) {
           return timeValuePair;
         }
@@ -334,14 +334,14 @@ public class LastQueryExecutor {
         return null;
       }
 
-      return IoTDB.metaManager.getLastCache(node);
+      return IoTDB.schemaEngine.getLastCache(node);
     }
 
     public void write(TimeValuePair pair) {
       if (node == null) {
-        IoTDB.metaManager.updateLastCache(path, pair, false, Long.MIN_VALUE);
+        IoTDB.schemaEngine.updateLastCache(path, pair, false, Long.MIN_VALUE);
       } else {
-        IoTDB.metaManager.updateLastCache(node, pair, false, Long.MIN_VALUE);
+        IoTDB.schemaEngine.updateLastCache(node, pair, false, Long.MIN_VALUE);
       }
     }
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index 7720f6f..f88297f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -33,7 +33,7 @@ import org.apache.iotdb.db.engine.trigger.service.TriggerRegistrationService;
 import org.apache.iotdb.db.exception.ConfigurationException;
 import org.apache.iotdb.db.exception.StartupException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.protocol.influxdb.meta.InfluxDBMetaManager;
 import org.apache.iotdb.db.protocol.rest.RestService;
 import org.apache.iotdb.db.query.udf.service.TemporaryQueryDataFileService;
@@ -58,7 +58,7 @@ public class IoTDB implements IoTDBMBean {
   private final String mbeanName =
       String.format("%s:%s=%s", IoTDBConstant.IOTDB_PACKAGE, IoTDBConstant.JMX_TYPE, "IoTDB");
   private static final RegisterManager registerManager = new RegisterManager();
-  public static MManager metaManager = MManager.getInstance();
+  public static SchemaEngine schemaEngine = SchemaEngine.getInstance();
   public static ServiceProvider serviceProvider;
   private static boolean clusterMode = false;
 
@@ -78,8 +78,8 @@ public class IoTDB implements IoTDBMBean {
     daemon.active();
   }
 
-  public static void setMetaManager(MManager metaManager) {
-    IoTDB.metaManager = metaManager;
+  public static void setSchemaEngine(SchemaEngine schemaEngine) {
+    IoTDB.schemaEngine = schemaEngine;
   }
 
   public static void setServiceProvider(ServiceProvider serviceProvider) {
@@ -122,7 +122,7 @@ public class IoTDB implements IoTDBMBean {
     setUncaughtExceptionHandler();
     registerManager.register(MetricsService.getInstance());
     logger.info("recover the schema...");
-    initMManager();
+    initSchemaEngine();
     initServiceProvider();
     registerManager.register(JMXService.getInstance());
     registerManager.register(FlushManager.getInstance());
@@ -198,9 +198,9 @@ public class IoTDB implements IoTDBMBean {
     logger.info("IoTDB is deactivated.");
   }
 
-  private void initMManager() {
+  private void initSchemaEngine() {
     long time = System.currentTimeMillis();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     long end = System.currentTimeMillis() - time;
     logger.info("spend {}ms to recover schema.", end);
     logger.info(
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 3f4b37d..7960604 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
@@ -358,7 +358,7 @@ public class TSServiceImpl implements TSIService.Iface {
     try {
       switch (req.getType()) {
         case "METADATA_IN_JSON":
-          resp.setMetadataInJson(IoTDB.metaManager.getMetadataInString());
+          resp.setMetadataInJson(IoTDB.schemaEngine.getMetadataInString());
           status = RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS);
           break;
         case "COLUMN":
@@ -389,11 +389,11 @@ public class TSServiceImpl implements TSIService.Iface {
   }
 
   protected List<MeasurementPath> getPaths(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getMeasurementPaths(path);
+    return IoTDB.schemaEngine.getMeasurementPaths(path);
   }
 
   protected TSDataType getSeriesTypeByPath(PartialPath path) throws MetadataException {
-    return IoTDB.metaManager.getSeriesType(path);
+    return IoTDB.schemaEngine.getSeriesType(path);
   }
 
   private boolean executeInsertRowsPlan(InsertRowsPlan insertRowsPlan, List<TSStatus> result) {
@@ -1955,36 +1955,36 @@ public class TSServiceImpl implements TSIService.Iface {
       switch (TemplateQueryType.values()[req.getQueryType()]) {
         case COUNT_MEASUREMENTS:
           resp.setQueryType(TemplateQueryType.COUNT_MEASUREMENTS.ordinal());
-          resp.setCount(IoTDB.metaManager.countMeasurementsInTemplate(req.name));
+          resp.setCount(IoTDB.schemaEngine.countMeasurementsInTemplate(req.name));
           break;
         case IS_MEASUREMENT:
           path = req.getMeasurement();
           resp.setQueryType(TemplateQueryType.IS_MEASUREMENT.ordinal());
-          resp.setResult(IoTDB.metaManager.isMeasurementInTemplate(req.name, path));
+          resp.setResult(IoTDB.schemaEngine.isMeasurementInTemplate(req.name, path));
           break;
         case PATH_EXIST:
           path = req.getMeasurement();
           resp.setQueryType(TemplateQueryType.PATH_EXIST.ordinal());
-          resp.setResult(IoTDB.metaManager.isPathExistsInTemplate(req.name, path));
+          resp.setResult(IoTDB.schemaEngine.isPathExistsInTemplate(req.name, path));
           break;
         case SHOW_MEASUREMENTS:
           path = req.getMeasurement();
           resp.setQueryType(TemplateQueryType.SHOW_MEASUREMENTS.ordinal());
-          resp.setMeasurements(IoTDB.metaManager.getMeasurementsInTemplate(req.name, path));
+          resp.setMeasurements(IoTDB.schemaEngine.getMeasurementsInTemplate(req.name, path));
           break;
         case SHOW_TEMPLATES:
           resp.setQueryType(TemplateQueryType.SHOW_TEMPLATES.ordinal());
-          resp.setMeasurements(new ArrayList<>(IoTDB.metaManager.getAllTemplates()));
+          resp.setMeasurements(new ArrayList<>(IoTDB.schemaEngine.getAllTemplates()));
           break;
         case SHOW_SET_TEMPLATES:
           path = req.getName();
           resp.setQueryType(TemplateQueryType.SHOW_SET_TEMPLATES.ordinal());
-          resp.setMeasurements(new ArrayList<>(IoTDB.metaManager.getPathsSetTemplate(path)));
+          resp.setMeasurements(new ArrayList<>(IoTDB.schemaEngine.getPathsSetTemplate(path)));
           break;
         case SHOW_USING_TEMPLATES:
           path = req.getName();
           resp.setQueryType(TemplateQueryType.SHOW_USING_TEMPLATES.ordinal());
-          resp.setMeasurements(new ArrayList<>(IoTDB.metaManager.getPathsUsingTemplate(path)));
+          resp.setMeasurements(new ArrayList<>(IoTDB.schemaEngine.getPathsUsingTemplate(path)));
           break;
       }
       resp.setStatus(RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS, "Execute successfully"));
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java
index 0c8c29c..08f78d3 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/receiver/transfer/SyncServiceImpl.java
@@ -302,7 +302,7 @@ public class SyncServiceImpl implements SyncService.Iface {
             if (plan.getOperatorType() != Operator.OperatorType.CREATE_CONTINUOUS_QUERY
                 && plan.getOperatorType() != Operator.OperatorType.DROP_CONTINUOUS_QUERY
                 && plan.getOperatorType() != Operator.OperatorType.CHANGE_TAG_OFFSET) {
-              IoTDB.metaManager.operation(plan);
+              IoTDB.schemaEngine.operation(plan);
             }
           } catch (Exception e) {
             logger.error(
diff --git a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
index 42089ca..74e9a96 100644
--- a/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManager.java
@@ -81,7 +81,7 @@ public class SyncFileManager implements ISyncFileManager {
   private Map<String, Map<Long, Map<Long, Set<File>>>> toBeSyncedFilesMap;
 
   private SyncFileManager() {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   public static SyncFileManager getInstance() {
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java b/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java
index 43e4d2c..8e73f4a 100644
--- a/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java
+++ b/server/src/main/java/org/apache/iotdb/db/tools/virtualsg/DeviceMappingViewer.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.tools.virtualsg;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.storagegroup.virtualSg.HashVirtualPartitioner;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 
 import java.util.Set;
@@ -39,10 +39,11 @@ public class DeviceMappingViewer {
     }
 
     HashVirtualPartitioner partitioner = HashVirtualPartitioner.getInstance();
-    MManager mManager = MManager.getInstance();
-    mManager.init();
+    SchemaEngine schemaEngine = SchemaEngine.getInstance();
+    schemaEngine.init();
 
-    Set<PartialPath> partialPathSet = mManager.getMatchedDevices(new PartialPath("root.**"), false);
+    Set<PartialPath> partialPathSet =
+        schemaEngine.getMatchedDevices(new PartialPath("root.**"), false);
 
     if (partialPathSet.isEmpty() && args.length == 1) {
       System.out.println("no mlog in given system schema dir: " + args[0] + " please have a check");
@@ -57,6 +58,6 @@ public class DeviceMappingViewer {
       }
     }
 
-    mManager.clear();
+    schemaEngine.clear();
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index 0a35a93..d4e881b 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -153,7 +153,7 @@ public class EnvironmentUtils {
       BloomFilterCache.getInstance().clear();
     }
     // close metadata
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
 
     QueryTimeManager.getInstance().clear();
 
@@ -314,7 +314,7 @@ public class EnvironmentUtils {
   public static void restartDaemon() throws Exception {
     shutdownDaemon();
     stopDaemon();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     IDTableManager.getInstance().clear();
     TsFileResourceManager.getInstance().clear();
     reactiveDaemon();
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/SchemaTestUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
index ae12c6f..fd5f71f 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
@@ -32,7 +32,7 @@ public class SchemaTestUtils {
   public static MeasurementPath getMeasurementPath(String pathPatternString)
       throws MetadataException {
     PartialPath pathPattern = new PartialPath(pathPatternString);
-    List<MeasurementPath> measurementPaths = IoTDB.metaManager.getMeasurementPaths(pathPattern);
+    List<MeasurementPath> measurementPaths = IoTDB.schemaEngine.getMeasurementPaths(pathPattern);
     assertFalse(measurementPaths.isEmpty());
     return measurementPaths.get(0);
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
index 34777eb..3c6e332 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
@@ -96,7 +96,7 @@ public class SchemaUtils {
       TSDataType dataType = schema.getType();
       TSEncoding encoding = schema.getEncodingType();
       CompressionType compressionType = schema.getCompressor();
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           path, dataType, encoding, compressionType, Collections.emptyMap());
     } catch (PathAlreadyExistException ignored) {
       // ignore added timeseries
@@ -124,7 +124,7 @@ public class SchemaUtils {
 
     IMeasurementMNode measurementMNode =
         MeasurementMNode.getMeasurementMNode(null, path.getMeasurement(), measurementSchema, null);
-    IoTDB.metaManager.cacheMeta(path, measurementMNode, true);
+    IoTDB.schemaEngine.cacheMeta(path, measurementMNode, true);
   }
 
   public static List<TSDataType> getSeriesTypesByPaths(Collection<? extends PartialPath> paths) {
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 313eff1..a9cba70 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -146,7 +146,7 @@ public class LogReplayer {
   private void replayDelete(DeletePlan deletePlan) throws IOException, MetadataException {
     List<PartialPath> paths = deletePlan.getPaths();
     for (PartialPath path : paths) {
-      for (PartialPath device : IoTDB.metaManager.getBelongedDevices(path)) {
+      for (PartialPath device : IoTDB.schemaEngine.getBelongedDevices(path)) {
         recoverMemTable.delete(
             path, device, deletePlan.getDeleteStartTime(), deletePlan.getDeleteEndTime());
       }
@@ -196,7 +196,7 @@ public class LogReplayer {
       if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable()) {
         virtualStorageGroupProcessor.getIdTable().getSeriesSchemas(plan);
       } else {
-        IoTDB.metaManager.getSeriesSchemasAndReadLockDevice(plan);
+        IoTDB.schemaEngine.getSeriesSchemasAndReadLockDevice(plan);
         plan.setDeviceID(DeviceIDFactory.getInstance().getDeviceID(plan.getDevicePath()));
       }
     } catch (IOException | MetadataException e) {
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java b/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
index c9d2903..5e37713 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
@@ -18,7 +18,7 @@
  */
 package org.apache.iotdb.db.engine;
 
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -31,120 +31,120 @@ import java.util.Collections;
 public class MetadataManagerHelper {
 
   public static void initMetadata() {
-    MManager mmanager = IoTDB.metaManager;
-    mmanager.init();
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.init();
     try {
-      mmanager.setStorageGroup(new PartialPath("root.vehicle.d0"));
-      mmanager.setStorageGroup(new PartialPath("root.vehicle.d1"));
-      mmanager.setStorageGroup(new PartialPath("root.vehicle.d2"));
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d0"));
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d2"));
 
       CompressionType compressionType = TSFileDescriptor.getInstance().getConfig().getCompressor();
 
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s1"),
           TSDataType.valueOf("INT64"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s2"),
           TSDataType.valueOf("FLOAT"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s3"),
           TSDataType.valueOf("DOUBLE"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s4"),
           TSDataType.valueOf("BOOLEAN"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d0.s5"),
           TSDataType.valueOf("TEXT"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
 
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s1"),
           TSDataType.valueOf("INT64"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s2"),
           TSDataType.valueOf("FLOAT"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s3"),
           TSDataType.valueOf("DOUBLE"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s4"),
           TSDataType.valueOf("BOOLEAN"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s5"),
           TSDataType.valueOf("TEXT"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
 
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s1"),
           TSDataType.valueOf("INT64"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s2"),
           TSDataType.valueOf("FLOAT"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s3"),
           TSDataType.valueOf("DOUBLE"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s4"),
           TSDataType.valueOf("BOOLEAN"),
           TSEncoding.PLAIN,
           compressionType,
           Collections.emptyMap());
-      mmanager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d2.s5"),
           TSDataType.valueOf("TEXT"),
           TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
index 6f0429f..b2074b7 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
@@ -82,7 +82,7 @@ public class ChunkCacheTest {
     if (!tempSGDir.exists()) {
       Assert.assertTrue(tempSGDir.mkdirs());
     }
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -94,7 +94,7 @@ public class ChunkCacheTest {
     unseqResources.clear();
     chunkCache.clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
   }
 
@@ -145,11 +145,11 @@ public class ChunkCacheTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/AbstractCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/AbstractCompactionTest.java
index 7e7f1b8..1514ad4 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/AbstractCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/AbstractCompactionTest.java
@@ -108,7 +108,7 @@ public class AbstractCompactionTest {
     }
 
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   /**
@@ -226,14 +226,14 @@ public class AbstractCompactionTest {
           dataTypes.add(TSDataType.INT64);
           encodings.add(TSEncoding.PLAIN);
           compressionTypes.add(CompressionType.UNCOMPRESSED);
-          IoTDB.metaManager.createTimeseries(
+          IoTDB.schemaEngine.createTimeseries(
               new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i, "s" + j),
               TSDataType.INT64,
               TSEncoding.PLAIN,
               CompressionType.UNCOMPRESSED,
               Collections.emptyMap());
         }
-        IoTDB.metaManager.createAlignedTimeSeries(
+        IoTDB.schemaEngine.createAlignedTimeSeries(
             new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + (i + 10000)),
             measurements,
             dataTypes,
@@ -241,7 +241,7 @@ public class AbstractCompactionTest {
             compressionTypes);
       } else {
         for (int j = 0; j < measurementNum; j++) {
-          IoTDB.metaManager.createTimeseries(
+          IoTDB.schemaEngine.createTimeseries(
               new PartialPath(COMPACTION_TEST_SG + PATH_SEPARATOR + "d" + i, "s" + j),
               TSDataType.INT64,
               TSEncoding.PLAIN,
@@ -257,7 +257,7 @@ public class AbstractCompactionTest {
     removeFiles();
     seqResources.clear();
     unseqResources.clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     IoTDBDescriptor.getInstance().getConfig().setTargetChunkSize(oldTargetChunkSize);
     TSFileDescriptor.getInstance().getConfig().setGroupSizeInByte(oldChunkGroupSize);
     TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(oldPagePointSize);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
index 3ae623e..fc15caf 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/CompactionSchedulerTest.java
@@ -89,7 +89,7 @@ public class CompactionSchedulerTest {
   public void setUp() throws MetadataException, IOException {
     CompactionClearUtils.clearAllCompactionFiles();
     EnvironmentUtils.cleanAllDir();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     File basicOutputDir = new File(TestConstant.BASE_OUTPUT_PATH);
     IoTDBDescriptor.getInstance().getConfig().setCompactionPriority(CompactionPriority.INNER_CROSS);
     if (!basicOutputDir.exists()) {
@@ -113,7 +113,7 @@ public class CompactionSchedulerTest {
     new CompactionConfigRestorer().restoreCompactionConfig();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     CompactionClearUtils.clearAllCompactionFiles();
     EnvironmentUtils.cleanAllDir();
     CompactionClearUtils.deleteEmptyDir(new File("target"));
@@ -154,7 +154,7 @@ public class CompactionSchedulerTest {
         .setTargetCompactionFileSize(2L * 1024L * 1024L * 1024L);
     String sgName = COMPACTION_TEST_SG + "test1";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -165,7 +165,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -289,7 +289,7 @@ public class CompactionSchedulerTest {
         .setCrossCompactionMemoryBudget(2 * 1024 * 1024L * 1024L);
     String sgName = COMPACTION_TEST_SG + "test2";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -300,7 +300,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -411,7 +411,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(100);
     String sgName = COMPACTION_TEST_SG + "test3";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -422,7 +422,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -522,7 +522,7 @@ public class CompactionSchedulerTest {
         .setTargetCompactionFileSize(2L * 1024L * 1024L * 1024L);
     String sgName = COMPACTION_TEST_SG + "test4";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -533,7 +533,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -617,7 +617,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(100);
     String sgName = COMPACTION_TEST_SG + "test5";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -628,7 +628,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -744,7 +744,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(100);
     String sgName = COMPACTION_TEST_SG + "test6";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -755,7 +755,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -861,7 +861,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(100);
     String sgName = COMPACTION_TEST_SG + "test7";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -872,7 +872,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -974,7 +974,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(100);
     String sgName = COMPACTION_TEST_SG + "test8";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -985,7 +985,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1073,7 +1073,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test9";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1084,7 +1084,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1188,7 +1188,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test10";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1199,7 +1199,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1307,7 +1307,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test11";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1318,7 +1318,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1423,7 +1423,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test12";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1434,7 +1434,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1542,7 +1542,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test13";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1553,7 +1553,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1663,7 +1663,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test14";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1674,7 +1674,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -1792,7 +1792,7 @@ public class CompactionSchedulerTest {
     IoTDBDescriptor.getInstance().getConfig().setMaxInnerCompactionCandidateFileNum(2);
     String sgName = COMPACTION_TEST_SG + "test16";
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(sgName));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(sgName));
     } catch (Exception e) {
       logger.error("exception occurs", e);
     }
@@ -1803,7 +1803,7 @@ public class CompactionSchedulerTest {
       for (String device : fullPaths) {
         fullPath.add(sgName + device);
         PartialPath path = new PartialPath(sgName + device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             TSDataType.INT64,
             TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
index c9af34e..d617f30 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
@@ -42,13 +42,13 @@ public class TestUtilsForAlignedSeries {
   public static void registerTimeSeries(
       String storageGroup, String[] devices, IMeasurementSchema[] schemas, boolean[] isAligned)
       throws MetadataException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath(storageGroup));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(storageGroup));
     for (int i = 0; i < devices.length; ++i) {
       boolean aligned = isAligned[i];
       String device = devices[i];
       if (!aligned) {
         for (IMeasurementSchema schema : schemas) {
-          IoTDB.metaManager.createTimeseries(
+          IoTDB.schemaEngine.createTimeseries(
               new PartialPath(device, schema.getMeasurementId()),
               schema.getType(),
               schema.getEncodingType(),
@@ -66,7 +66,7 @@ public class TestUtilsForAlignedSeries {
           compressionTypes[j] = schemas[j].getCompressor();
           measurements[j] = schemas[j].getMeasurementId();
         }
-        IoTDB.metaManager.createAlignedTimeSeries(
+        IoTDB.schemaEngine.createAlignedTimeSeries(
             new PartialPath(device),
             Arrays.asList(measurements),
             Arrays.asList(dataTypes),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTest.java
index 6866981..8be85f1 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/CrossSpaceCompactionTest.java
@@ -96,11 +96,11 @@ public class CrossSpaceCompactionTest {
 
   @Before
   public void setUp() throws MetadataException {
-    IoTDB.metaManager.init();
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.init();
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           path,
           TSDataType.INT64,
           TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -116,7 +116,7 @@ public class CrossSpaceCompactionTest {
     CompactionClearUtils.deleteEmptyDir(new File("target"));
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
     Thread.currentThread().setName(oldThreadName);
     new CompactionConfigRestorer().restoreCompactionConfig();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
index 765ea77..94408c7 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
@@ -73,7 +73,7 @@ abstract class MergeTest {
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -86,7 +86,7 @@ abstract class MergeTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanEnv();
   }
 
@@ -101,11 +101,11 @@ abstract class MergeTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = MERGE_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(MERGE_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(MERGE_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
index 1319b91..213b5fc 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
@@ -129,7 +129,7 @@ public abstract class AbstractInnerSpaceCompactionTest {
     }
 
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
     tsFileManager = new TsFileManager(COMPACTION_TEST_SG, "0", tempSGDir.getAbsolutePath());
@@ -146,11 +146,11 @@ public abstract class AbstractInnerSpaceCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
@@ -238,7 +238,7 @@ public abstract class AbstractInnerSpaceCompactionTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanEnv();
     if (tempSGDir.exists()) {
       FileUtils.deleteDirectory(tempSGDir);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionMoreDataTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionMoreDataTest.java
index 686ac93..7ff8025 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionMoreDataTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionMoreDataTest.java
@@ -78,11 +78,11 @@ public class InnerCompactionMoreDataTest extends InnerCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionTest.java
index 11ee090..02d7fa6 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerCompactionTest.java
@@ -78,7 +78,7 @@ public abstract class InnerCompactionTest {
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException, Exception {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -91,7 +91,7 @@ public abstract class InnerCompactionTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanEnv();
   }
 
@@ -106,11 +106,11 @@ public abstract class InnerCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
index d7703a1..94aacb2 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionTest.java
@@ -87,11 +87,11 @@ public class InnerSeqCompactionTest {
   public void setUp() throws MetadataException {
     prevMaxDegreeOfIndexNode = TSFileDescriptor.getInstance().getConfig().getMaxDegreeOfIndexNode();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(2);
-    IoTDB.metaManager.init();
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.init();
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           path,
           TSDataType.INT64,
           TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -106,7 +106,7 @@ public class InnerSeqCompactionTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(prevMaxDegreeOfIndexNode);
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsAlignedTest.java
index 0c162cc..d04ba62 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsAlignedTest.java
@@ -68,14 +68,14 @@ public class InnerSpaceCompactionUtilsAlignedTest {
     if (!dataDirectory.exists()) {
       Assert.assertTrue(dataDirectory.mkdirs());
     }
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   @After
   public void tearDown() throws Exception {
     new CompactionConfigRestorer().restoreCompactionConfig();
     FileUtils.forceDelete(dataDirectory);
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
     EnvironmentUtils.cleanEnv();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsNoAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsNoAlignedTest.java
index 8251b0d..b2c101a 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsNoAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSpaceCompactionUtilsNoAlignedTest.java
@@ -126,7 +126,7 @@ public class InnerSpaceCompactionUtilsNoAlignedTest {
     if (new File(UNSEQ_DIRS).exists()) {
       FileUtils.forceDelete(new File(UNSEQ_DIRS));
     }
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
     EnvironmentUtils.cleanEnv();
@@ -141,10 +141,10 @@ public class InnerSpaceCompactionUtilsNoAlignedTest {
     for (int i = 0; i < devices.length; ++i) {
       devicePath[i] = new PartialPath(storageGroup + "." + devices[i]);
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(storageGroup));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(storageGroup));
     for (PartialPath device : devicePath) {
       for (MeasurementSchema schema : schemas) {
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             device.concatNode(schema.getMeasurementId()),
             schema.getType(),
             schema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionTest.java
index 14707e6..11af890 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionTest.java
@@ -98,11 +98,11 @@ public class InnerUnseqCompactionTest {
 
   @Before
   public void setUp() throws MetadataException {
-    IoTDB.metaManager.init();
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.init();
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           path,
           TSDataType.INT64,
           TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
@@ -118,7 +118,7 @@ public class InnerUnseqCompactionTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
     Thread.currentThread().setName(oldThreadName);
     CompactionClearUtils.deleteEmptyDir(new File("target"));
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
index 6a237cc..b5a40be 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
@@ -73,7 +73,7 @@ public class SizeTieredCompactionTest {
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -86,7 +86,7 @@ public class SizeTieredCompactionTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanEnv();
   }
 
@@ -101,11 +101,11 @@ public class SizeTieredCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
index 1c73f0c..11dd888 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
@@ -34,7 +34,7 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -123,7 +123,7 @@ public class SizeTieredCompactionRecoverTest {
 
   @Before
   public void setUp() throws Exception {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     originDataDirs = config.getDataDirs();
     setDataDirs(testDataDirs);
     if (!new File(SEQ_FILE_DIR).exists()) {
@@ -139,7 +139,7 @@ public class SizeTieredCompactionRecoverTest {
   public void tearDown() throws Exception {
     new CompactionConfigRestorer().restoreCompactionConfig();
     setDataDirs(originDataDirs);
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     File dataDir = new File(testDataDirs[0]);
     if (dataDir.exists()) {
       FileUtils.forceDelete(dataDir);
@@ -162,11 +162,11 @@ public class SizeTieredCompactionRecoverTest {
               CompressionType.UNCOMPRESSED);
       deviceIds[i] = new PartialPath(fullPaths[i].substring(0, 27));
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (int i = 0; i < fullPaths.length; ++i) {
       MeasurementSchema schema = schemas[i];
       PartialPath deviceId = deviceIds[i];
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           deviceId.concatNode(schema.getMeasurementId()),
           schema.getType(),
           schema.getEncodingType(),
@@ -843,7 +843,7 @@ public class SizeTieredCompactionRecoverTest {
     }
   }
 
-  public static class TestMetaManager extends MManager {
+  public static class TestMetaManager extends SchemaEngine {
     public IMeasurementSchema getSeriesSchema(PartialPath path) {
       return new MeasurementSchema(path.getMeasurement(), TSDataType.INT64);
     }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
index 7e539a4..204ced8 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionFileNodeTest.java
@@ -82,9 +82,9 @@ public class DeletionFileNodeTest {
   public void setup() throws MetadataException {
     EnvironmentUtils.envSetUp();
 
-    IoTDB.metaManager.setStorageGroup(new PartialPath(processorName));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(processorName));
     for (int i = 0; i < 10; i++) {
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           new PartialPath(processorName + TsFileConstant.PATH_SEPARATOR + measurements[i]),
           dataType,
           encoding,
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionQueryTest.java b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionQueryTest.java
index c01a20d..b85c408 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionQueryTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/modification/DeletionQueryTest.java
@@ -68,9 +68,9 @@ public class DeletionQueryTest {
   @Before
   public void setup() throws MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.setStorageGroup(new PartialPath(processorName));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(processorName));
     for (int i = 0; i < 10; i++) {
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           new PartialPath(processorName + TsFileConstant.PATH_SEPARATOR + measurements[i]),
           dataType,
           encoding,
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/FileNodeManagerBenchmark.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/FileNodeManagerBenchmark.java
index dc3429b..152244a 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/FileNodeManagerBenchmark.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/FileNodeManagerBenchmark.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.engine.storagegroup;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
 import org.apache.iotdb.db.service.IoTDB;
@@ -66,11 +66,11 @@ public class FileNodeManagerBenchmark {
   }
 
   private static void prepare() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
-    manager.setStorageGroup(new PartialPath(prefix));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.setStorageGroup(new PartialPath(prefix));
     for (String device : devices) {
       for (String measurement : measurements) {
-        manager.createTimeseries(
+        schemaEngine.createTimeseries(
             new PartialPath(device + "." + measurement),
             TSDataType.INT64,
             TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
index d17b8bd..4265858 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
@@ -102,15 +102,15 @@ public class TTLTest {
   }
 
   private void createSchemas() throws MetadataException, StorageGroupProcessorException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath(sg1));
-    IoTDB.metaManager.setStorageGroup(new PartialPath(sg2));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(sg1));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(sg2));
     virtualStorageGroupProcessor =
         new VirtualStorageGroupProcessor(
             IoTDBDescriptor.getInstance().getConfig().getSystemDir(),
             sg1,
             new DirectFlushPolicy(),
             sg1);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath(g1s1),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -124,20 +124,20 @@ public class TTLTest {
     boolean caught = false;
 
     try {
-      IoTDB.metaManager.setTTL(new PartialPath(sg1 + ".notExist"), ttl);
+      IoTDB.schemaEngine.setTTL(new PartialPath(sg1 + ".notExist"), ttl);
     } catch (MetadataException e) {
       caught = true;
     }
     assertTrue(caught);
 
     // normally set ttl
-    IoTDB.metaManager.setTTL(new PartialPath(sg1), ttl);
+    IoTDB.schemaEngine.setTTL(new PartialPath(sg1), ttl);
     IStorageGroupMNode mNode =
-        IoTDB.metaManager.getStorageGroupNodeByStorageGroupPath(new PartialPath(sg1));
+        IoTDB.schemaEngine.getStorageGroupNodeByStorageGroupPath(new PartialPath(sg1));
     assertEquals(ttl, mNode.getDataTTL());
 
     // default ttl
-    mNode = IoTDB.metaManager.getStorageGroupNodeByStorageGroupPath(new PartialPath(sg2));
+    mNode = IoTDB.schemaEngine.getStorageGroupNodeByStorageGroupPath(new PartialPath(sg2));
     assertEquals(Long.MAX_VALUE, mNode.getDataTTL());
   }
 
@@ -409,7 +409,7 @@ public class TTLTest {
   public void testShowTTL()
       throws IOException, QueryProcessException, QueryFilterOptimizationException,
           StorageEngineException, MetadataException, InterruptedException {
-    IoTDB.metaManager.setTTL(new PartialPath(sg1), ttl);
+    IoTDB.schemaEngine.setTTL(new PartialPath(sg1), ttl);
 
     ShowTTLPlan plan = new ShowTTLPlan(Collections.emptyList());
     PlanExecutor executor = new PlanExecutor();
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineAdvancedTest.java
similarity index 77%
rename from server/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java
rename to server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineAdvancedTest.java
index 344bb48..b66e72e 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerAdvancedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineAdvancedTest.java
@@ -43,87 +43,87 @@ import java.util.List;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
-public class MManagerAdvancedTest {
+public class SchemaEngineAdvancedTest {
 
-  private static MManager mmanager = null;
+  private static SchemaEngine schemaEngine = null;
 
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    mmanager = IoTDB.metaManager;
+    schemaEngine = IoTDB.schemaEngine;
 
-    mmanager.setStorageGroup(new PartialPath("root.vehicle.d0"));
-    mmanager.setStorageGroup(new PartialPath("root.vehicle.d1"));
-    mmanager.setStorageGroup(new PartialPath("root.vehicle.d2"));
+    schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d0"));
+    schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d1"));
+    schemaEngine.setStorageGroup(new PartialPath("root.vehicle.d2"));
 
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s0"),
         TSDataType.INT32,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s1"),
         TSDataType.INT64,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s2"),
         TSDataType.FLOAT,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s3"),
         TSDataType.DOUBLE,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s4"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d0.s5"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
 
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s0"),
         TSDataType.INT32,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.INT64,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.FLOAT,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s3"),
         TSDataType.DOUBLE,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s4"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s5"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
@@ -141,7 +141,7 @@ public class MManagerAdvancedTest {
 
     try {
       // test file name
-      List<PartialPath> fileNames = mmanager.getAllStorageGroupPaths();
+      List<PartialPath> fileNames = schemaEngine.getAllStorageGroupPaths();
       assertEquals(3, fileNames.size());
       if (fileNames.get(0).equals(new PartialPath("root.vehicle.d0"))) {
         assertEquals(new PartialPath("root.vehicle.d1"), fileNames.get(1));
@@ -151,19 +151,19 @@ public class MManagerAdvancedTest {
       // test filename by seriesPath
       assertEquals(
           new PartialPath("root.vehicle.d0"),
-          mmanager.getBelongedStorageGroup(new PartialPath("root.vehicle.d0.s1")));
+          schemaEngine.getBelongedStorageGroup(new PartialPath("root.vehicle.d0.s1")));
       List<MeasurementPath> pathList =
-          mmanager.getMeasurementPaths(new PartialPath("root.vehicle.d1.**"));
+          schemaEngine.getMeasurementPaths(new PartialPath("root.vehicle.d1.**"));
       assertEquals(6, pathList.size());
-      pathList = mmanager.getMeasurementPaths(new PartialPath("root.vehicle.d0.**"));
+      pathList = schemaEngine.getMeasurementPaths(new PartialPath("root.vehicle.d0.**"));
       assertEquals(6, pathList.size());
-      pathList = mmanager.getMeasurementPaths(new PartialPath("root.vehicle.d*.**"));
+      pathList = schemaEngine.getMeasurementPaths(new PartialPath("root.vehicle.d*.**"));
       assertEquals(12, pathList.size());
-      pathList = mmanager.getMeasurementPaths(new PartialPath("root.ve*.**"));
+      pathList = schemaEngine.getMeasurementPaths(new PartialPath("root.ve*.**"));
       assertEquals(12, pathList.size());
-      pathList = mmanager.getMeasurementPaths(new PartialPath("root.vehicle*.d*.s1"));
+      pathList = schemaEngine.getMeasurementPaths(new PartialPath("root.vehicle*.d*.s1"));
       assertEquals(2, pathList.size());
-      pathList = mmanager.getMeasurementPaths(new PartialPath("root.vehicle.d2.**"));
+      pathList = schemaEngine.getMeasurementPaths(new PartialPath("root.vehicle.d2.**"));
       assertEquals(0, pathList.size());
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -173,41 +173,41 @@ public class MManagerAdvancedTest {
 
   @Test
   public void testCache() throws MetadataException {
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s0"),
         TSDataType.DOUBLE,
         TSEncoding.RLE,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s1"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s2.g0"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s3"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
 
-    IMNode node = mmanager.getDeviceNode(new PartialPath("root.vehicle.d0"));
+    IMNode node = schemaEngine.getDeviceNode(new PartialPath("root.vehicle.d0"));
     Assert.assertEquals(
         TSDataType.INT32, node.getChild("s0").getAsMeasurementMNode().getSchema().getType());
 
-    Assert.assertFalse(mmanager.isPathExist(new PartialPath("root.vehicle.d100")));
+    Assert.assertFalse(schemaEngine.isPathExist(new PartialPath("root.vehicle.d100")));
   }
 
   @Test
   public void testCachedLastTimeValue() throws MetadataException {
-    mmanager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s0"),
         TSDataType.DOUBLE,
         TSEncoding.RLE,
@@ -218,11 +218,11 @@ public class MManagerAdvancedTest {
     TimeValuePair tv2 = new TimeValuePair(2000, TsPrimitiveType.getByType(TSDataType.DOUBLE, 3.0));
     TimeValuePair tv3 = new TimeValuePair(1500, TsPrimitiveType.getByType(TSDataType.DOUBLE, 2.5));
     PartialPath path = new PartialPath("root.vehicle.d2.s0");
-    IMeasurementMNode node = mmanager.getMeasurementMNode(path);
+    IMeasurementMNode node = schemaEngine.getMeasurementMNode(path);
     LastCacheManager.updateLastCache(node, tv1, true, Long.MIN_VALUE);
     LastCacheManager.updateLastCache(node, tv2, true, Long.MIN_VALUE);
-    Assert.assertEquals(tv2.getTimestamp(), mmanager.getLastCache(node).getTimestamp());
+    Assert.assertEquals(tv2.getTimestamp(), schemaEngine.getLastCache(node).getTimestamp());
     LastCacheManager.updateLastCache(node, tv3, true, Long.MIN_VALUE);
-    Assert.assertEquals(tv2.getTimestamp(), mmanager.getLastCache(node).getTimestamp());
+    Assert.assertEquals(tv2.getTimestamp(), schemaEngine.getLastCache(node).getTimestamp());
   }
 }
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineBasicTest.java
similarity index 69%
rename from server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
rename to server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineBasicTest.java
index afa776d..7936f65 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineBasicTest.java
@@ -78,7 +78,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-public class MManagerBasicTest {
+public class SchemaEngineBasicTest {
 
   private CompressionType compressionType;
 
@@ -95,30 +95,30 @@ public class MManagerBasicTest {
 
   @Test
   public void testAddPathAndExist() throws IllegalPathException {
-    MManager manager = IoTDB.metaManager;
-    assertTrue(manager.isPathExist(new PartialPath("root")));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root")));
 
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop")));
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop.d1"));
-      manager.setStorageGroup(new PartialPath("root.1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.1"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
 
-    assertTrue(manager.isPathExist(new PartialPath("root.1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.1")));
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
     } catch (MetadataException e) {
       Assert.assertEquals(
           "some children of root.laptop have already been set to storage group", e.getMessage());
     }
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -128,67 +128,67 @@ public class MManagerBasicTest {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.s0")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.s1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s0")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s1")));
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.1_2"),
           TSDataType.INT32,
           TSEncoding.RLE,
           TSFileDescriptor.getInstance().getConfig().getCompressor(),
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.\"1.2.3\""),
           TSDataType.INT32,
           TSEncoding.RLE,
           TSFileDescriptor.getInstance().getConfig().getCompressor(),
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.1.2.3"),
           TSDataType.INT32,
           TSEncoding.RLE,
           TSFileDescriptor.getInstance().getConfig().getCompressor(),
           Collections.emptyMap());
 
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.s1")));
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.1_2")));
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.\"1.2.3\"")));
-      assertTrue(manager.isPathExist(new PartialPath("root.1.2")));
-      assertTrue(manager.isPathExist(new PartialPath("root.1.2.3")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s1")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.1_2")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.\"1.2.3\"")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.1.2")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.1.2.3")));
     } catch (MetadataException e1) {
       e1.printStackTrace();
       fail(e1.getMessage());
     }
 
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.s1"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.s1"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.s1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s1")));
 
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.s0")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop")));
-    assertTrue(manager.isPathExist(new PartialPath("root")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s0")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root")));
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -200,7 +200,7 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -211,24 +211,24 @@ public class MManagerBasicTest {
       fail(e1.getMessage());
     }
 
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d2")));
-    assertFalse(manager.checkStorageGroupByPath(new PartialPath("root.laptop.d2")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d2")));
+    assertFalse(schemaEngine.checkStorageGroupByPath(new PartialPath("root.laptop.d2")));
 
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.s1"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.s1"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop1"));
     } catch (MetadataException e) {
       Assert.assertEquals(
           String.format(
@@ -238,32 +238,32 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.1_2"));
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.\"1.2.3\""));
-      manager.deleteTimeseries(new PartialPath("root.1.2.3"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.1_2"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.\"1.2.3\""));
+      schemaEngine.deleteTimeseries(new PartialPath("root.1.2.3"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.1_2")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.\"1.2.3\"")));
-    assertFalse(manager.isPathExist(new PartialPath("root.1.2.3")));
-    assertFalse(manager.isPathExist(new PartialPath("root.1.2")));
-    assertTrue(manager.isPathExist(new PartialPath("root.1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.1_2")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.\"1.2.3\"")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.1.2.3")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.1.2")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.1")));
 
     try {
-      manager.deleteStorageGroups(Collections.singletonList(new PartialPath("root.1")));
+      schemaEngine.deleteStorageGroups(Collections.singletonList(new PartialPath("root.1")));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(manager.isPathExist(new PartialPath("root.1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.1")));
 
-    assertFalse(manager.isPathExist(new PartialPath("root.template")));
-    assertFalse(manager.isPathExist(new PartialPath("root.template.d1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.template")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.template.d1")));
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.template.d2"),
           TSDataType.INT32,
           TSEncoding.RLE,
@@ -275,30 +275,31 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.createSchemaTemplate(getCreateTemplatePlan());
-      manager.setSchemaTemplate(new SetTemplatePlan("template1", "root.template"));
-      manager.setUsingSchemaTemplate(new ActivateTemplatePlan(new PartialPath("root.template.d1")));
+      schemaEngine.createSchemaTemplate(getCreateTemplatePlan());
+      schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.template"));
+      schemaEngine.setUsingSchemaTemplate(
+          new ActivateTemplatePlan(new PartialPath("root.template.d1")));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
 
-    assertTrue(manager.isPathExist(new PartialPath("root.template.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.template.d1.s11")));
-    assertFalse(manager.isPathExist(new PartialPath("root.template.d2.s11")));
-    assertTrue(manager.isPathExist(new PartialPath("root.template.d1.vector")));
-    assertTrue(manager.isPathExist(new PartialPath("root.template.d1.vector.s0")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.template.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.template.d1.s11")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.template.d2.s11")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.template.d1.vector")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.template.d1.vector.s0")));
   }
 
   /**
    * Test if the PathNotExistException can be correctly thrown when the path to be deleted does not
-   * exist. See {@link MManager#deleteTimeseries(PartialPath)}.
+   * exist. See {@link SchemaEngine#deleteTimeseries(PartialPath)}.
    */
   @Test
   public void testDeleteNonExistentTimeseries() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.deleteTimeseries(new PartialPath("root.non.existent"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.non.existent"));
       fail();
     } catch (PathNotExistException e) {
       assertEquals("Path [root.non.existent] does not exist", e.getMessage());
@@ -311,22 +312,22 @@ public class MManagerBasicTest {
   @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
   @Test
   public void testCreateAlignedTimeseries() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createAlignedTimeSeries(
+      schemaEngine.createAlignedTimeSeries(
           new PartialPath("root.laptop.d1.aligned_device"),
           Arrays.asList("s1", "s2", "s3"),
           Arrays.asList(
@@ -341,33 +342,33 @@ public class MManagerBasicTest {
       fail(e.getMessage());
     }
 
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.s0")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s0")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
 
-    manager.deleteTimeseries(new PartialPath("root.laptop.d1.aligned_device.*"));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.s0")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
+    schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.aligned_device.*"));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s0")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
 
     try {
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.s0"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertFalse(manager.isPathExist(new PartialPath("root.laptop.d1.s0")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.s0")));
 
     try {
-      manager.createAlignedTimeSeries(
+      schemaEngine.createAlignedTimeSeries(
           new PartialPath("root.laptop.d1.aligned_device"),
           Arrays.asList("s0", "s2", "s4"),
           Arrays.asList(
@@ -382,70 +383,70 @@ public class MManagerBasicTest {
       fail(e.getMessage());
     }
 
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s0")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
-    assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s4")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s0")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s4")));
   }
 
   @Test
   @SuppressWarnings("squid:S5783")
   public void testGetAllTimeseriesCount() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d0"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s2.t1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.**")), 6);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.**")), 6);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.*")), 1);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.*.*")), 4);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.*.**")), 5);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.*.*.t1")), 1);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.*.s1")), 2);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.d1.**")), 3);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.d1.*")), 2);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.d2.s1")), 1);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.d2.**")), 2);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop")), 0);
-      assertEquals(manager.getAllTimeseriesCount(new PartialPath("root.laptop.d3.s1")), 0);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.**")), 6);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.**")), 6);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.*")), 1);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.*.*")), 4);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.*.**")), 5);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.*.*.t1")), 1);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.*.s1")), 2);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d1.**")), 3);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d1.*")), 2);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d2.s1")), 1);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d2.**")), 2);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop")), 0);
+      assertEquals(schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d3.s1")), 0);
 
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -456,23 +457,23 @@ public class MManagerBasicTest {
   @Test
   public void testSetStorageGroupAndExist() {
 
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      assertFalse(manager.isStorageGroup(new PartialPath("root")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root1.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root1.laptop.d2")));
 
-      manager.setStorageGroup(new PartialPath("root.laptop.d1"));
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d1")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d2")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d1.s1")));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d1"));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1.s1")));
 
-      manager.setStorageGroup(new PartialPath("root.laptop.d2"));
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d1")));
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d2")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d3")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop")));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d2"));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1")));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d3")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop")));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -482,28 +483,28 @@ public class MManagerBasicTest {
   @Test
   public void testRecover() throws Exception {
 
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
 
-      manager.setStorageGroup(new PartialPath("root.laptop.d1"));
-      manager.setStorageGroup(new PartialPath("root.laptop.d2"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d2"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d1")));
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d2")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d3")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop")));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1")));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d3")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop")));
       Set<String> devices =
           new TreeSet<String>() {
             {
@@ -514,33 +515,34 @@ public class MManagerBasicTest {
       // prefix with *
       assertEquals(
           devices,
-          manager.getMatchedDevices(new PartialPath("root.**"), false).stream()
+          schemaEngine.getMatchedDevices(new PartialPath("root.**"), false).stream()
               .map(PartialPath::getFullPath)
               .collect(Collectors.toSet()));
 
-      manager.deleteStorageGroups(Collections.singletonList(new PartialPath("root.laptop.d2")));
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d1")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d2")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d3")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop")));
+      schemaEngine.deleteStorageGroups(
+          Collections.singletonList(new PartialPath("root.laptop.d2")));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d3")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop")));
       devices.remove("root.laptop.d2");
       // prefix with *
       assertEquals(
           devices,
-          manager.getMatchedDevices(new PartialPath("root.**"), false).stream()
+          schemaEngine.getMatchedDevices(new PartialPath("root.**"), false).stream()
               .map(PartialPath::getFullPath)
               .collect(Collectors.toSet()));
 
       EnvironmentUtils.restartDaemon();
 
-      assertTrue(manager.isStorageGroup(new PartialPath("root.laptop.d1")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d2")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop.d3")));
-      assertFalse(manager.isStorageGroup(new PartialPath("root.laptop")));
+      assertTrue(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d1")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d2")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop.d3")));
+      assertFalse(schemaEngine.isStorageGroup(new PartialPath("root.laptop")));
       // prefix with *
       assertEquals(
           devices,
-          manager.getMatchedDevices(new PartialPath("root.**"), false).stream()
+          schemaEngine.getMatchedDevices(new PartialPath("root.**"), false).stream()
               .map(PartialPath::getFullPath)
               .collect(Collectors.toSet()));
 
@@ -553,17 +555,17 @@ public class MManagerBasicTest {
   @Test
   public void testGetAllFileNamesByPath() {
 
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop.d1"));
-      manager.setStorageGroup(new PartialPath("root.laptop.d2"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d1"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop.d2"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
@@ -573,12 +575,13 @@ public class MManagerBasicTest {
       List<PartialPath> list = new ArrayList<>();
 
       list.add(new PartialPath("root.laptop.d1"));
-      assertEquals(list, manager.getBelongedStorageGroups(new PartialPath("root.laptop.d1.s1")));
-      assertEquals(list, manager.getBelongedStorageGroups(new PartialPath("root.laptop.d1")));
+      assertEquals(
+          list, schemaEngine.getBelongedStorageGroups(new PartialPath("root.laptop.d1.s1")));
+      assertEquals(list, schemaEngine.getBelongedStorageGroups(new PartialPath("root.laptop.d1")));
 
       list.add(new PartialPath("root.laptop.d2"));
-      assertEquals(list, manager.getBelongedStorageGroups(new PartialPath("root.laptop.**")));
-      assertEquals(list, manager.getBelongedStorageGroups(new PartialPath("root.**")));
+      assertEquals(list, schemaEngine.getBelongedStorageGroups(new PartialPath("root.laptop.**")));
+      assertEquals(list, schemaEngine.getBelongedStorageGroups(new PartialPath("root.**")));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -587,40 +590,46 @@ public class MManagerBasicTest {
 
   @Test
   public void testCheckStorageExistOfPath() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      assertTrue(manager.getMeasurementPaths(new PartialPath("root")).isEmpty());
-      assertTrue(manager.getBelongedStorageGroups(new PartialPath("root")).isEmpty());
-      assertTrue(manager.getBelongedStorageGroups(new PartialPath("root.vehicle")).isEmpty());
+      assertTrue(schemaEngine.getMeasurementPaths(new PartialPath("root")).isEmpty());
+      assertTrue(schemaEngine.getBelongedStorageGroups(new PartialPath("root")).isEmpty());
+      assertTrue(schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle")).isEmpty());
       assertTrue(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle.device")).isEmpty());
+          schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle.device")).isEmpty());
       assertTrue(
-          manager
+          schemaEngine
               .getBelongedStorageGroups(new PartialPath("root.vehicle.device.sensor"))
               .isEmpty());
 
-      manager.setStorageGroup(new PartialPath("root.vehicle"));
-      assertFalse(manager.getBelongedStorageGroups(new PartialPath("root.vehicle")).isEmpty());
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+      assertFalse(schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle")).isEmpty());
       assertFalse(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle.device")).isEmpty());
+          schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle.device")).isEmpty());
       assertFalse(
-          manager
+          schemaEngine
               .getBelongedStorageGroups(new PartialPath("root.vehicle.device.sensor"))
               .isEmpty());
-      assertTrue(manager.getBelongedStorageGroups(new PartialPath("root.vehicle1")).isEmpty());
+      assertTrue(schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle1")).isEmpty());
       assertTrue(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle1.device")).isEmpty());
+          schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle1.device")).isEmpty());
 
-      manager.setStorageGroup(new PartialPath("root.vehicle1.device"));
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle1.device"));
       assertTrue(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle1.device1")).isEmpty());
+          schemaEngine
+              .getBelongedStorageGroups(new PartialPath("root.vehicle1.device1"))
+              .isEmpty());
       assertTrue(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle1.device2")).isEmpty());
+          schemaEngine
+              .getBelongedStorageGroups(new PartialPath("root.vehicle1.device2"))
+              .isEmpty());
       assertTrue(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle1.device3")).isEmpty());
+          schemaEngine
+              .getBelongedStorageGroups(new PartialPath("root.vehicle1.device3"))
+              .isEmpty());
       assertFalse(
-          manager.getBelongedStorageGroups(new PartialPath("root.vehicle1.device")).isEmpty());
+          schemaEngine.getBelongedStorageGroups(new PartialPath("root.vehicle1.device")).isEmpty());
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -629,22 +638,22 @@ public class MManagerBasicTest {
 
   @Test
   public void testShowChildNodesWithGivenPrefix() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
@@ -654,10 +663,11 @@ public class MManagerBasicTest {
       Set<String> nodes2 = new HashSet<>(Arrays.asList("laptop"));
       Set<String> nodes3 = new HashSet<>(Arrays.asList("d1", "d2"));
       Set<String> nexLevelNodes1 =
-          manager.getChildNodeNameInNextLevel(new PartialPath("root.laptop.d1"));
-      Set<String> nexLevelNodes2 = manager.getChildNodeNameInNextLevel(new PartialPath("root"));
+          schemaEngine.getChildNodeNameInNextLevel(new PartialPath("root.laptop.d1"));
+      Set<String> nexLevelNodes2 =
+          schemaEngine.getChildNodeNameInNextLevel(new PartialPath("root"));
       Set<String> nexLevelNodes3 =
-          manager.getChildNodeNameInNextLevel(new PartialPath("root.laptop"));
+          schemaEngine.getChildNodeNameInNextLevel(new PartialPath("root.laptop"));
       // usual condition
       assertEquals(nodes, nexLevelNodes1);
       assertEquals(nodes2, nexLevelNodes2);
@@ -704,11 +714,11 @@ public class MManagerBasicTest {
 
   @Test
   public void testSetStorageGroupWithIllegalName() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       PartialPath path1 = new PartialPath("root.laptop\n");
       try {
-        manager.setStorageGroup(path1);
+        schemaEngine.setStorageGroup(path1);
         fail();
       } catch (MetadataException e) {
       }
@@ -718,7 +728,7 @@ public class MManagerBasicTest {
     try {
       PartialPath path2 = new PartialPath("root.laptop\t");
       try {
-        manager.setStorageGroup(path2);
+        schemaEngine.setStorageGroup(path2);
         fail();
       } catch (MetadataException e) {
       }
@@ -729,11 +739,11 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateTimeseriesWithIllegalName() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       PartialPath path1 = new PartialPath("root.laptop.d1\n.s1");
       try {
-        manager.createTimeseries(
+        schemaEngine.createTimeseries(
             path1, TSDataType.INT32, TSEncoding.PLAIN, CompressionType.SNAPPY, null);
         fail();
       } catch (MetadataException e) {
@@ -744,7 +754,7 @@ public class MManagerBasicTest {
     try {
       PartialPath path2 = new PartialPath("root.laptop.d1\t.s1");
       try {
-        manager.createTimeseries(
+        schemaEngine.createTimeseries(
             path2, TSDataType.INT32, TSEncoding.PLAIN, CompressionType.SNAPPY, null);
         fail();
       } catch (MetadataException e) {
@@ -756,17 +766,17 @@ public class MManagerBasicTest {
 
   @Test
   public void testGetDevicesWithGivenPrefix() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
@@ -778,11 +788,11 @@ public class MManagerBasicTest {
       // usual condition
       assertEquals(
           devices,
-          manager.getMatchedDevices(new PartialPath("root.laptop.**"), false).stream()
+          schemaEngine.getMatchedDevices(new PartialPath("root.laptop.**"), false).stream()
               .map(PartialPath::getFullPath)
               .collect(Collectors.toSet()));
-      manager.setStorageGroup(new PartialPath("root.vehicle"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
@@ -792,7 +802,7 @@ public class MManagerBasicTest {
       // prefix with *
       assertEquals(
           devices,
-          manager.getMatchedDevices(new PartialPath("root.**"), false).stream()
+          schemaEngine.getMatchedDevices(new PartialPath("root.**"), false).stream()
               .map(PartialPath::getFullPath)
               .collect(Collectors.toSet()));
     } catch (MetadataException e) {
@@ -803,7 +813,7 @@ public class MManagerBasicTest {
 
   @Test
   public void testGetChildNodePathInNextLevel() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     String[] res =
         new String[] {
           "[root.laptop, root.vehicle]",
@@ -818,88 +828,95 @@ public class MManagerBasicTest {
         };
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.setStorageGroup(new PartialPath("root.vehicle"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
 
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b1.d1.s0"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b1.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b1.d2.s0"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b2.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b2.d1.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.b2.d2.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.b1.d0.s0"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.b1.d2.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.b1.d3.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.vehicle.b2.d0.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      assertEquals(res[0], manager.getChildNodePathInNextLevel(new PartialPath("root")).toString());
       assertEquals(
-          res[1], manager.getChildNodePathInNextLevel(new PartialPath("root.laptop")).toString());
+          res[0], schemaEngine.getChildNodePathInNextLevel(new PartialPath("root")).toString());
+      assertEquals(
+          res[1],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.laptop")).toString());
       assertEquals(
           res[2],
-          manager.getChildNodePathInNextLevel(new PartialPath("root.laptop.b1")).toString());
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.laptop.b1")).toString());
       assertEquals(
-          res[3], manager.getChildNodePathInNextLevel(new PartialPath("root.*")).toString());
+          res[3], schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.*")).toString());
       assertEquals(
-          res[4], manager.getChildNodePathInNextLevel(new PartialPath("root.*.b1")).toString());
+          res[4],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.*.b1")).toString());
       assertEquals(
-          res[5], manager.getChildNodePathInNextLevel(new PartialPath("root.l*.b1")).toString());
+          res[5],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.l*.b1")).toString());
       assertEquals(
-          res[6], manager.getChildNodePathInNextLevel(new PartialPath("root.v*.*")).toString());
+          res[6],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.v*.*")).toString());
       assertEquals(
-          res[7], manager.getChildNodePathInNextLevel(new PartialPath("root.l*.b*.*")).toString());
+          res[7],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.l*.b*.*")).toString());
       assertEquals(
-          res[8], manager.getChildNodePathInNextLevel(new PartialPath("root.laptopp")).toString());
+          res[8],
+          schemaEngine.getChildNodePathInNextLevel(new PartialPath("root.laptopp")).toString());
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -910,16 +927,16 @@ public class MManagerBasicTest {
   public void testTemplate() throws MetadataException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    MManager manager = IoTDB.metaManager;
-    manager.createSchemaTemplate(plan);
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.createSchemaTemplate(plan);
 
     // set device template
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg1.d1");
 
-    manager.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
 
-    IMNode node = manager.getDeviceNode(new PartialPath("root.sg1.d1"));
-    node = manager.setUsingSchemaTemplate(node);
+    IMNode node = schemaEngine.getDeviceNode(new PartialPath("root.sg1.d1"));
+    node = schemaEngine.setUsingSchemaTemplate(node);
 
     MeasurementSchema s11 =
         new MeasurementSchema("s11", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
@@ -931,23 +948,23 @@ public class MManagerBasicTest {
           "root.sg1.d1.vector" + TsFileConstant.PATH_SEPARATOR + schema.getMeasurementId());
     }
     for (MeasurementPath measurementPath :
-        manager.getMeasurementPaths(new PartialPath("root.sg1.**"))) {
+        schemaEngine.getMeasurementPaths(new PartialPath("root.sg1.**"))) {
       allSchema.remove(measurementPath.toString());
     }
     allSchema.remove("root.sg1.d1.vector.s11");
     assertTrue(allSchema.isEmpty());
 
-    IMeasurementMNode mNode = manager.getMeasurementMNode(new PartialPath("root.sg1.d1.s11"));
+    IMeasurementMNode mNode = schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.s11"));
     IMeasurementMNode mNode2 =
-        manager.getMeasurementMNode(new PartialPath("root.sg1.d1.vector.s2"));
+        schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.vector.s2"));
     assertNotNull(mNode);
     assertEquals(mNode.getSchema(), s11);
     assertNotNull(mNode2);
     assertEquals(
-        mNode2.getSchema(), manager.getTemplate("template1").getSchemaMap().get("vector.s2"));
+        mNode2.getSchema(), schemaEngine.getTemplate("template1").getSchemaMap().get("vector.s2"));
 
     try {
-      manager.getMeasurementMNode(new PartialPath("root.sg1.d1.s100"));
+      schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.s100"));
       fail();
     } catch (PathNotExistException e) {
       assertEquals("Path [root.sg1.d1.s100] does not exist", e.getMessage());
@@ -981,7 +998,7 @@ public class MManagerBasicTest {
       plan =
           new CreateTemplatePlan(
               "treeTemplate", measurementList, dataTypeList, encodingList, compressionTypes);
-      IoTDB.metaManager.createSchemaTemplate(plan);
+      IoTDB.schemaEngine.createSchemaTemplate(plan);
     } catch (MetadataException e) {
       assertEquals("encoding RLE does not support TEXT", e.getMessage());
     }
@@ -991,8 +1008,8 @@ public class MManagerBasicTest {
         new CreateTemplatePlan(
             "treeTemplate", measurementList, dataTypeList, encodingList, compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(planb);
-    Template template = IoTDB.metaManager.getTemplate("treeTemplate");
+    IoTDB.schemaEngine.createSchemaTemplate(planb);
+    Template template = IoTDB.schemaEngine.getTemplate("treeTemplate");
     assertEquals("[d1.s1, GPS.x, GPS.y, s2]", template.getAllMeasurementsPaths().toString());
 
     List<String> appendMeasurements = Arrays.asList("a1", "a2");
@@ -1009,7 +1026,7 @@ public class MManagerBasicTest {
             appendEncodings,
             appendCompressor);
     try {
-      IoTDB.metaManager.appendSchemaTemplate(plana);
+      IoTDB.schemaEngine.appendSchemaTemplate(plana);
     } catch (MetadataException e) {
       assertEquals("encoding RLE does not support TEXT", e.getMessage());
     }
@@ -1023,7 +1040,7 @@ public class MManagerBasicTest {
             appendDataTypes,
             appendEncodings,
             appendCompressor);
-    IoTDB.metaManager.appendSchemaTemplate(planab);
+    IoTDB.schemaEngine.appendSchemaTemplate(planab);
     assertEquals(
         "[a1, a2, d1.s1, GPS.x, GPS.y, s2]", template.getAllMeasurementsPaths().toString());
   }
@@ -1032,11 +1049,11 @@ public class MManagerBasicTest {
   public void testTemplateInnerTree() {
     CreateTemplatePlan plan = getTreeTemplatePlan();
     Template template;
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.createSchemaTemplate(plan);
-      template = manager.getTemplate("treeTemplate");
+      schemaEngine.createSchemaTemplate(plan);
+      template = schemaEngine.getTemplate("treeTemplate");
       assertEquals(4, template.getMeasurementsCount());
       assertEquals("d1", template.getPathNodeInTemplate("d1").getName());
       assertNull(template.getPathNodeInTemplate("notExists"));
@@ -1192,27 +1209,27 @@ public class MManagerBasicTest {
             compressionTypes);
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg.1");
     UnsetTemplatePlan unsetTemplatePlan = new UnsetTemplatePlan("root.sg.1", "template1");
-    MManager manager = IoTDB.metaManager;
-    manager.createSchemaTemplate(createTemplatePlan);
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.createSchemaTemplate(createTemplatePlan);
 
     // path does not exist test
     try {
-      manager.unsetSchemaTemplate(unsetTemplatePlan);
+      schemaEngine.unsetSchemaTemplate(unsetTemplatePlan);
       fail("No exception thrown.");
     } catch (Exception e) {
       assertEquals("Path [root.sg.1] does not exist", e.getMessage());
     }
 
-    manager.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
 
     // template unset test
-    manager.unsetSchemaTemplate(unsetTemplatePlan);
-    manager.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.unsetSchemaTemplate(unsetTemplatePlan);
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
 
     // no template on path test
-    manager.unsetSchemaTemplate(unsetTemplatePlan);
+    schemaEngine.unsetSchemaTemplate(unsetTemplatePlan);
     try {
-      manager.unsetSchemaTemplate(unsetTemplatePlan);
+      schemaEngine.unsetSchemaTemplate(unsetTemplatePlan);
       fail("No exception thrown.");
     } catch (Exception e) {
       assertEquals("NO template on root.sg.1", e.getMessage());
@@ -1222,15 +1239,15 @@ public class MManagerBasicTest {
   @Test
   public void testTemplateAndTimeSeriesCompatibility() throws MetadataException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
-    MManager manager = IoTDB.metaManager;
-    manager.createSchemaTemplate(plan);
-    manager.createSchemaTemplate(getTreeTemplatePlan());
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.createSchemaTemplate(plan);
+    schemaEngine.createSchemaTemplate(getTreeTemplatePlan());
 
     // set device template
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg1.d1");
 
-    manager.setSchemaTemplate(setTemplatePlan);
-    manager.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.sg0"));
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.sg0"));
 
     CreateTimeSeriesPlan createTimeSeriesPlan =
         new CreateTimeSeriesPlan(
@@ -1243,7 +1260,7 @@ public class MManagerBasicTest {
             null,
             null);
 
-    manager.createTimeseries(createTimeSeriesPlan);
+    schemaEngine.createTimeseries(createTimeSeriesPlan);
 
     CreateTimeSeriesPlan createTimeSeriesPlan2 =
         new CreateTimeSeriesPlan(
@@ -1257,7 +1274,7 @@ public class MManagerBasicTest {
             null);
 
     try {
-      manager.createTimeseries(createTimeSeriesPlan2);
+      schemaEngine.createTimeseries(createTimeSeriesPlan2);
       fail();
     } catch (Exception e) {
       assertEquals("Path [root.sg1.d1.s11] already exists in [template1]", e.getMessage());
@@ -1275,7 +1292,7 @@ public class MManagerBasicTest {
             null);
 
     try {
-      manager.createTimeseries(createTimeSeriesPlan3);
+      schemaEngine.createTimeseries(createTimeSeriesPlan3);
       fail();
     } catch (Exception e) {
       assertEquals(
@@ -1293,15 +1310,15 @@ public class MManagerBasicTest {
             null,
             null);
 
-    manager.createTimeseries(createTimeSeriesPlan4);
+    schemaEngine.createTimeseries(createTimeSeriesPlan4);
   }
 
   @Test
   public void testTemplateAndNodePathCompatibility() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     CreateTemplatePlan plan = getCreateTemplatePlan();
-    manager.createSchemaTemplate(plan);
-    manager.createSchemaTemplate(getTreeTemplatePlan());
+    schemaEngine.createSchemaTemplate(plan);
+    schemaEngine.createSchemaTemplate(getTreeTemplatePlan());
 
     // set device template
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg1.d1");
@@ -1319,9 +1336,9 @@ public class MManagerBasicTest {
             null,
             null);
 
-    manager.createTimeseries(createTimeSeriesPlan);
+    schemaEngine.createTimeseries(createTimeSeriesPlan);
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             new PartialPath("root.tree.sg0.s1"),
             TSDataType.INT32,
@@ -1332,7 +1349,7 @@ public class MManagerBasicTest {
             null,
             null));
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             new PartialPath("root.tree.sg1.dn.sn"),
             TSDataType.INT32,
@@ -1343,7 +1360,7 @@ public class MManagerBasicTest {
             null,
             null));
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             new PartialPath("root.tree.sg2.dn.sn"),
             TSDataType.INT32,
@@ -1354,7 +1371,7 @@ public class MManagerBasicTest {
             null,
             null));
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             new PartialPath("root.tree.sg3.dn.sn"),
             TSDataType.INT32,
@@ -1377,12 +1394,12 @@ public class MManagerBasicTest {
     SetTemplatePlan planEx1 = new SetTemplatePlan("treeTemplate", "root.tree.sg1");
     SetTemplatePlan planEx2 = new SetTemplatePlan("treeTemplate", "root.tree.sg2");
     SetTemplatePlan planEx3 = new SetTemplatePlan("treeTemplate", "root.tree.sg3");
-    manager.setSchemaTemplate(planEx1);
-    manager.setSchemaTemplate(planEx2);
-    manager.setSchemaTemplate(planEx3);
+    schemaEngine.setSchemaTemplate(planEx1);
+    schemaEngine.setSchemaTemplate(planEx2);
+    schemaEngine.setSchemaTemplate(planEx3);
 
     try {
-      manager.unsetSchemaTemplate(new UnsetTemplatePlan("root.tree.*", "treeTemplate"));
+      schemaEngine.unsetSchemaTemplate(new UnsetTemplatePlan("root.tree.*", "treeTemplate"));
       fail();
     } catch (IllegalPathException e) {
       assertEquals(
@@ -1390,10 +1407,10 @@ public class MManagerBasicTest {
           e.getMessage());
     }
 
-    manager.setSchemaTemplate(setSchemaTemplatePlan2);
-    manager.unsetSchemaTemplate(new UnsetTemplatePlan("root.tree.sg0", "treeTemplate"));
+    schemaEngine.setSchemaTemplate(setSchemaTemplatePlan2);
+    schemaEngine.unsetSchemaTemplate(new UnsetTemplatePlan("root.tree.sg0", "treeTemplate"));
     try {
-      manager.setSchemaTemplate(setTemplatePlan);
+      schemaEngine.setSchemaTemplate(setTemplatePlan);
       fail();
     } catch (MetadataException e) {
       assertEquals(
@@ -1401,7 +1418,7 @@ public class MManagerBasicTest {
           e.getMessage());
     }
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             new PartialPath("root.tree.sg0.GPS.speed"),
             TSDataType.INT32,
@@ -1413,7 +1430,7 @@ public class MManagerBasicTest {
             null));
 
     try {
-      manager.setSchemaTemplate(setSchemaTemplatePlan2);
+      schemaEngine.setSchemaTemplate(setSchemaTemplatePlan2);
       fail();
     } catch (MetadataException e) {
       assertEquals(
@@ -1421,7 +1438,7 @@ public class MManagerBasicTest {
           e.getMessage());
     }
 
-    manager.deleteTimeseries(new PartialPath("root.sg1.d1.s11"));
+    schemaEngine.deleteTimeseries(new PartialPath("root.sg1.d1.s11"));
   }
 
   @Test
@@ -1499,38 +1516,38 @@ public class MManagerBasicTest {
 
     SetTemplatePlan setPlan5 = new SetTemplatePlan("template2", "root.sg1.d1");
 
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
-    manager.createSchemaTemplate(plan1);
-    manager.createSchemaTemplate(plan2);
+    schemaEngine.createSchemaTemplate(plan1);
+    schemaEngine.createSchemaTemplate(plan2);
 
-    manager.setStorageGroup(new PartialPath("root.sg1"));
-    manager.setStorageGroup(new PartialPath("root.sg2"));
-    manager.setStorageGroup(new PartialPath("root.sg3"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg1"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg2"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg3"));
 
     try {
-      manager.setSchemaTemplate(setPlan1);
-      manager.setSchemaTemplate(setPlan2);
+      schemaEngine.setSchemaTemplate(setPlan1);
+      schemaEngine.setSchemaTemplate(setPlan2);
     } catch (MetadataException e) {
       fail();
     }
 
     try {
-      manager.setSchemaTemplate(setPlan3);
+      schemaEngine.setSchemaTemplate(setPlan3);
       fail();
     } catch (MetadataException e) {
       assertEquals("Template already exists on root.sg1", e.getMessage());
     }
 
     try {
-      manager.setSchemaTemplate(setPlan4);
+      schemaEngine.setSchemaTemplate(setPlan4);
       fail();
     } catch (MetadataException e) {
       assertEquals("Template already exists on root.sg2.d1", e.getMessage());
     }
 
     try {
-      manager.setSchemaTemplate(setPlan5);
+      schemaEngine.setSchemaTemplate(setPlan5);
       fail();
     } catch (MetadataException e) {
       assertEquals("Template already exists on root.sg1", e.getMessage());
@@ -1539,9 +1556,9 @@ public class MManagerBasicTest {
 
   @Test
   public void testShowTimeseries() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -1553,7 +1570,7 @@ public class MManagerBasicTest {
           new ShowTimeSeriesPlan(
               new PartialPath("root.laptop.d1.s0"), false, null, null, 0, 0, false);
       List<ShowTimeSeriesResult> result =
-          manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+          schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
       assertEquals(1, result.size());
       assertEquals("root.laptop.d1.s0", result.get(0).getName());
     } catch (MetadataException e) {
@@ -1609,26 +1626,28 @@ public class MManagerBasicTest {
             encodingList,
             compressionTypes);
     CreateTemplatePlan treePlan = getTreeTemplatePlan();
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.createSchemaTemplate(plan);
-      manager.createSchemaTemplate(treePlan);
+      schemaEngine.createSchemaTemplate(plan);
+      schemaEngine.createSchemaTemplate(treePlan);
 
       // set device template
 
       SetTemplatePlan setSchemaTemplatePlan = new SetTemplatePlan("template1", "root.laptop.d1");
       SetTemplatePlan setSchemaTemplatePlan1 = new SetTemplatePlan("treeTemplate", "root.tree.d0");
-      manager.setSchemaTemplate(setSchemaTemplatePlan);
-      manager.setSchemaTemplate(setSchemaTemplatePlan1);
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.laptop.d1")));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0")));
+      schemaEngine.setSchemaTemplate(setSchemaTemplatePlan);
+      schemaEngine.setSchemaTemplate(setSchemaTemplatePlan1);
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.laptop.d1")));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.tree.d0")));
 
       // show timeseries root.tree.d0
       ShowTimeSeriesPlan showTreeTSPlan =
           new ShowTimeSeriesPlan(
               new PartialPath("root.tree.d0.**"), false, null, null, 0, 0, false);
       List<ShowTimeSeriesResult> treeShowResult =
-          manager.showTimeseries(showTreeTSPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+          schemaEngine.showTimeseries(showTreeTSPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
       assertEquals(4, treeShowResult.size());
       Set<String> checkSet = new HashSet<>();
       checkSet.add("root.tree.d0.d1.s1");
@@ -1645,7 +1664,7 @@ public class MManagerBasicTest {
           new ShowTimeSeriesPlan(
               new PartialPath("root.laptop.d1.s0"), false, null, null, 0, 0, false);
       List<ShowTimeSeriesResult> result =
-          manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+          schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
       assertEquals(1, result.size());
       assertEquals("root.laptop.d1.s0", result.get(0).getName());
 
@@ -1653,7 +1672,7 @@ public class MManagerBasicTest {
       showTimeSeriesPlan =
           new ShowTimeSeriesPlan(
               new PartialPath("root.laptop.d1.vector.s1"), false, null, null, 0, 0, false);
-      result = manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+      result = schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
 
       assertEquals(1, result.size());
       assertEquals("root.laptop.d1.vector.s1", result.get(0).getName());
@@ -1661,7 +1680,7 @@ public class MManagerBasicTest {
       // show timeseries root.laptop.d1.(s1,s2,s3)
       showTimeSeriesPlan =
           new ShowTimeSeriesPlan(new PartialPath("root.laptop.**"), false, null, null, 0, 0, false);
-      result = manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+      result = schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
       assertEquals(4, result.size());
       Set<String> set = new HashSet<>();
       for (int i = 1; i < result.size(); i++) {
@@ -1684,7 +1703,7 @@ public class MManagerBasicTest {
       ShowTimeSeriesPlan showTimeSeriesPlan =
           new ShowTimeSeriesPlan(
               new PartialPath("root.laptop.d1.(s0,s1)"), false, null, null, 0, 0, false);
-      manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+      schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
     } catch (MetadataException e) {
       assertEquals(
           "Cannot get node of children in different aligned timeseries (Path: (s0,s1))",
@@ -1694,19 +1713,20 @@ public class MManagerBasicTest {
 
   @Test
   public void minimumTestForWildcardInTemplate() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     CreateTemplatePlan treePlan = getTreeTemplatePlan();
-    manager.createSchemaTemplate(treePlan);
+    schemaEngine.createSchemaTemplate(treePlan);
 
     // set device template
     SetTemplatePlan setSchemaTemplatePlan1 = new SetTemplatePlan("treeTemplate", "root.tree.d0");
-    manager.setSchemaTemplate(setSchemaTemplatePlan1);
-    manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0")));
+    schemaEngine.setSchemaTemplate(setSchemaTemplatePlan1);
+    schemaEngine.setUsingSchemaTemplate(
+        schemaEngine.getDeviceNode(new PartialPath("root.tree.d0")));
 
     ShowTimeSeriesPlan showTimeSeriesPlan =
         new ShowTimeSeriesPlan(new PartialPath("root.tree.**.s1"), false, null, null, 0, 0, false);
     List<ShowTimeSeriesResult> result =
-        manager.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
+        schemaEngine.showTimeseries(showTimeSeriesPlan, EnvironmentUtils.TEST_QUERY_CONTEXT);
     assertEquals(1, result.size());
   }
 
@@ -1741,18 +1761,19 @@ public class MManagerBasicTest {
             dataTypeList,
             encodingList,
             compressionTypes);
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.createSchemaTemplate(plan);
-      manager.createSchemaTemplate(getTreeTemplatePlan());
+      schemaEngine.createSchemaTemplate(plan);
+      schemaEngine.createSchemaTemplate(getTreeTemplatePlan());
 
       // set device template
       SetTemplatePlan setSchemaTemplatePlan = new SetTemplatePlan("template1", "root.laptop.d1");
-      manager.setSchemaTemplate(setSchemaTemplatePlan);
-      manager.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.d0"));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.laptop.d1")));
+      schemaEngine.setSchemaTemplate(setSchemaTemplatePlan);
+      schemaEngine.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.d0"));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.laptop.d1")));
 
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.computer.d1.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
@@ -1760,22 +1781,32 @@ public class MManagerBasicTest {
           null);
 
       SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.computer");
-      manager.setSchemaTemplate(setTemplatePlan);
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.computer.d1")));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0")));
-      manager.getDeviceNodeWithAutoCreate(new PartialPath("root.tree.d0.v0"));
-      manager.getDeviceNodeWithAutoCreate(new PartialPath("root.tree.d0.v1"));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0.v0")));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0.v1")));
-
-      Assert.assertEquals(2, manager.getAllTimeseriesCount(new PartialPath("root.laptop.d1.**")));
-      Assert.assertEquals(1, manager.getAllTimeseriesCount(new PartialPath("root.laptop.d1.s1")));
-      Assert.assertEquals(1, manager.getAllTimeseriesCount(new PartialPath("root.computer.d1.s1")));
-      Assert.assertEquals(1, manager.getAllTimeseriesCount(new PartialPath("root.computer.d1.s2")));
-      Assert.assertEquals(3, manager.getAllTimeseriesCount(new PartialPath("root.computer.d1.**")));
-      Assert.assertEquals(3, manager.getAllTimeseriesCount(new PartialPath("root.computer.**")));
-      Assert.assertEquals(12, manager.getAllTimeseriesCount(new PartialPath("root.tree.**")));
-      Assert.assertEquals(17, manager.getAllTimeseriesCount(new PartialPath("root.**")));
+      schemaEngine.setSchemaTemplate(setTemplatePlan);
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.computer.d1")));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.tree.d0")));
+      schemaEngine.getDeviceNodeWithAutoCreate(new PartialPath("root.tree.d0.v0"));
+      schemaEngine.getDeviceNodeWithAutoCreate(new PartialPath("root.tree.d0.v1"));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.tree.d0.v0")));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.tree.d0.v1")));
+
+      Assert.assertEquals(
+          2, schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d1.**")));
+      Assert.assertEquals(
+          1, schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.d1.s1")));
+      Assert.assertEquals(
+          1, schemaEngine.getAllTimeseriesCount(new PartialPath("root.computer.d1.s1")));
+      Assert.assertEquals(
+          1, schemaEngine.getAllTimeseriesCount(new PartialPath("root.computer.d1.s2")));
+      Assert.assertEquals(
+          3, schemaEngine.getAllTimeseriesCount(new PartialPath("root.computer.d1.**")));
+      Assert.assertEquals(
+          3, schemaEngine.getAllTimeseriesCount(new PartialPath("root.computer.**")));
+      Assert.assertEquals(12, schemaEngine.getAllTimeseriesCount(new PartialPath("root.tree.**")));
+      Assert.assertEquals(17, schemaEngine.getAllTimeseriesCount(new PartialPath("root.**")));
 
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -1814,62 +1845,64 @@ public class MManagerBasicTest {
             dataTypeList,
             encodingList,
             compressionTypes);
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.createSchemaTemplate(plan);
-      manager.createSchemaTemplate(getTreeTemplatePlan());
+      schemaEngine.createSchemaTemplate(plan);
+      schemaEngine.createSchemaTemplate(getTreeTemplatePlan());
       // set device template
       SetTemplatePlan setSchemaTemplatePlan = new SetTemplatePlan("template1", "root.laptop.d1");
-      manager.setSchemaTemplate(setSchemaTemplatePlan);
-      manager.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.d0"));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.laptop.d1")));
-      manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.tree.d0")));
+      schemaEngine.setSchemaTemplate(setSchemaTemplatePlan);
+      schemaEngine.setSchemaTemplate(new SetTemplatePlan("treeTemplate", "root.tree.d0"));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.laptop.d1")));
+      schemaEngine.setUsingSchemaTemplate(
+          schemaEngine.getDeviceNode(new PartialPath("root.tree.d0")));
 
       try {
-        manager.setUsingSchemaTemplate(
+        schemaEngine.setUsingSchemaTemplate(
             new ActivateTemplatePlan(new PartialPath("root.non.existed.path")));
         fail();
       } catch (MetadataException e) {
         assertEquals("Path [root.non.existed.path] has not been set any template.", e.getMessage());
       }
 
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      Assert.assertEquals(1, manager.getDevicesNum(new PartialPath("root.laptop.d1")));
-      Assert.assertEquals(1, manager.getDevicesNum(new PartialPath("root.laptop.d2")));
-      Assert.assertEquals(2, manager.getDevicesNum(new PartialPath("root.laptop.*")));
-      Assert.assertEquals(2, manager.getDevicesNum(new PartialPath("root.laptop.**")));
-      Assert.assertEquals(3, manager.getDevicesNum(new PartialPath("root.tree.**")));
-      Assert.assertEquals(5, manager.getDevicesNum(new PartialPath("root.**")));
+      Assert.assertEquals(1, schemaEngine.getDevicesNum(new PartialPath("root.laptop.d1")));
+      Assert.assertEquals(1, schemaEngine.getDevicesNum(new PartialPath("root.laptop.d2")));
+      Assert.assertEquals(2, schemaEngine.getDevicesNum(new PartialPath("root.laptop.*")));
+      Assert.assertEquals(2, schemaEngine.getDevicesNum(new PartialPath("root.laptop.**")));
+      Assert.assertEquals(3, schemaEngine.getDevicesNum(new PartialPath("root.tree.**")));
+      Assert.assertEquals(5, schemaEngine.getDevicesNum(new PartialPath("root.**")));
 
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.a.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.a.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      Assert.assertEquals(4, manager.getDevicesNum(new PartialPath("root.laptop.**")));
+      Assert.assertEquals(4, schemaEngine.getDevicesNum(new PartialPath("root.laptop.**")));
 
-      manager.deleteTimeseries(new PartialPath("root.laptop.d2.s1"));
-      Assert.assertEquals(3, manager.getDevicesNum(new PartialPath("root.laptop.**")));
-      manager.deleteTimeseries(new PartialPath("root.laptop.d2.a.s3"));
-      Assert.assertEquals(2, manager.getDevicesNum(new PartialPath("root.laptop.**")));
-      manager.deleteTimeseries(new PartialPath("root.laptop.d1.a.s3"));
-      Assert.assertEquals(1, manager.getDevicesNum(new PartialPath("root.laptop.**")));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d2.s1"));
+      Assert.assertEquals(3, schemaEngine.getDevicesNum(new PartialPath("root.laptop.**")));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d2.a.s3"));
+      Assert.assertEquals(2, schemaEngine.getDevicesNum(new PartialPath("root.laptop.**")));
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d1.a.s3"));
+      Assert.assertEquals(1, schemaEngine.getDevicesNum(new PartialPath("root.laptop.**")));
 
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -1879,54 +1912,54 @@ public class MManagerBasicTest {
 
   @Test
   public void testTotalSeriesNumber() throws Exception {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d0"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s2.t1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s3"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s1"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d2.s2"),
           TSDataType.INT32,
           TSEncoding.PLAIN,
           CompressionType.GZIP,
           null);
 
-      assertEquals(6, manager.getTotalSeriesNumber());
+      assertEquals(6, schemaEngine.getTotalSeriesNumber());
       EnvironmentUtils.restartDaemon();
-      assertEquals(6, manager.getTotalSeriesNumber());
-      manager.deleteTimeseries(new PartialPath("root.laptop.d2.s1"));
-      assertEquals(5, manager.getTotalSeriesNumber());
-      manager.deleteStorageGroups(Collections.singletonList(new PartialPath("root.laptop")));
-      assertEquals(0, manager.getTotalSeriesNumber());
+      assertEquals(6, schemaEngine.getTotalSeriesNumber());
+      schemaEngine.deleteTimeseries(new PartialPath("root.laptop.d2.s1"));
+      assertEquals(5, schemaEngine.getTotalSeriesNumber());
+      schemaEngine.deleteStorageGroups(Collections.singletonList(new PartialPath("root.laptop")));
+      assertEquals(0, schemaEngine.getTotalSeriesNumber());
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
@@ -1935,27 +1968,27 @@ public class MManagerBasicTest {
 
   @Test
   public void testStorageGroupNameWithHyphen() throws IllegalPathException {
-    MManager manager = IoTDB.metaManager;
-    assertTrue(manager.isPathExist(new PartialPath("root")));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root")));
 
-    assertFalse(manager.isPathExist(new PartialPath("root.group-with-hyphen")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.group-with-hyphen")));
 
     try {
-      manager.setStorageGroup(new PartialPath("root.group-with-hyphen"));
+      schemaEngine.setStorageGroup(new PartialPath("root.group-with-hyphen"));
     } catch (MetadataException e) {
       e.printStackTrace();
       fail(e.getMessage());
     }
 
-    assertTrue(manager.isPathExist(new PartialPath("root.group-with-hyphen")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.group-with-hyphen")));
   }
 
   @Test
   public void testCreateAlignedTimeseriesAndInsertWithMismatchDataType() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createAlignedTimeSeries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createAlignedTimeSeries(
           new PartialPath("root.laptop.d1.aligned_device"),
           Arrays.asList("s1", "s2", "s3"),
           Arrays.asList(
@@ -1988,8 +2021,8 @@ public class MManagerBasicTest {
           new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
 
       // call getSeriesSchemasAndReadLockDevice
-      IMNode node = manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
-      assertEquals(3, manager.getAllTimeseriesCount(node.getPartialPath().concatNode("**")));
+      IMNode node = schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      assertEquals(3, schemaEngine.getAllTimeseriesCount(node.getPartialPath().concatNode("**")));
 
     } catch (Exception e) {
       e.printStackTrace();
@@ -1999,10 +2032,10 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateAlignedTimeseriesAndInsertWithNotAlignedData() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createAlignedTimeSeries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createAlignedTimeSeries(
           new PartialPath("root.laptop.d1.aligned_device"),
           Arrays.asList("s1", "s2", "s3"),
           Arrays.asList(
@@ -2017,7 +2050,7 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new CreateTimeSeriesPlan(
               new PartialPath("root.laptop.d1.aligned_device.s4"),
               TSDataType.valueOf("FLOAT"),
@@ -2057,7 +2090,7 @@ public class MManagerBasicTest {
           new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
 
       // call getSeriesSchemasAndReadLockDevice
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
       fail();
     } catch (Exception e) {
       Assert.assertEquals(
@@ -2068,10 +2101,10 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateTimeseriesAndInsertWithMismatchDataType() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -2092,8 +2125,8 @@ public class MManagerBasicTest {
           new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
 
       // call getSeriesSchemasAndReadLockDevice
-      IMNode node = manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
-      assertEquals(1, manager.getAllTimeseriesCount(node.getPartialPath().concatNode("**")));
+      IMNode node = schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      assertEquals(1, schemaEngine.getAllTimeseriesCount(node.getPartialPath().concatNode("**")));
       assertNull(insertRowPlan.getMeasurementMNodes()[0]);
       assertEquals(1, insertRowPlan.getFailedMeasurementNumber());
 
@@ -2105,16 +2138,16 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateTimeseriesAndInsertWithAlignedData() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.aligned_device.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.aligned_device.s2"),
           TSDataType.valueOf("INT64"),
           TSEncoding.valueOf("RLE"),
@@ -2125,7 +2158,7 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.createAlignedTimeSeries(
+      schemaEngine.createAlignedTimeSeries(
           new PartialPath("root.laptop.d1.aligned_device"),
           Arrays.asList("s3", "s4", "s5"),
           Arrays.asList(
@@ -2163,7 +2196,7 @@ public class MManagerBasicTest {
           new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
 
       // call getSeriesSchemasAndReadLockDevice
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
       fail();
     } catch (Exception e) {
       Assert.assertEquals(
@@ -2174,14 +2207,14 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateAlignedTimeseriesWithIllegalNames() throws Exception {
-    MManager manager = IoTDB.metaManager;
-    manager.setStorageGroup(new PartialPath("root.laptop"));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
     PartialPath deviceId = new PartialPath("root.laptop.d1");
     String[] measurementIds = {"a.b", "time", "timestamp", "TIME", "TIMESTAMP"};
     for (String measurementId : measurementIds) {
       PartialPath path = deviceId.concatNode(measurementId);
       try {
-        manager.createAlignedTimeSeries(
+        schemaEngine.createAlignedTimeSeries(
             path,
             Arrays.asList("s1", "s2", "s3"),
             Arrays.asList(
@@ -2204,7 +2237,7 @@ public class MManagerBasicTest {
     PartialPath path = deviceId.concatNode("t1");
     for (String measurementId : measurementIds) {
       try {
-        manager.createAlignedTimeSeries(
+        schemaEngine.createAlignedTimeSeries(
             path,
             Arrays.asList(measurementId, "s2", "s3"),
             Arrays.asList(
@@ -2223,8 +2256,8 @@ public class MManagerBasicTest {
 
   @Test
   public void testCreateAlignedTimeseriesWithAliasAndTags() throws Exception {
-    MManager manager = IoTDB.metaManager;
-    manager.setStorageGroup(new PartialPath("root.laptop"));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
     PartialPath devicePath = new PartialPath("root.laptop.device");
     List<String> measurements = Arrays.asList("s1", "s2", "s3", "s4", "s5");
     List<TSDataType> tsDataTypes =
@@ -2267,15 +2300,16 @@ public class MManagerBasicTest {
             aliasList,
             tagList,
             null);
-    manager.createAlignedTimeSeries(createAlignedTimeSeriesPlan);
+    schemaEngine.createAlignedTimeSeries(createAlignedTimeSeriesPlan);
 
-    Assert.assertEquals(5, manager.getAllTimeseriesCount(new PartialPath("root.laptop.device.*")));
-    Assert.assertTrue(manager.isPathExist(new PartialPath("root.laptop.device.alias2")));
+    Assert.assertEquals(
+        5, schemaEngine.getAllTimeseriesCount(new PartialPath("root.laptop.device.*")));
+    Assert.assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.device.alias2")));
 
     ShowTimeSeriesPlan showTimeSeriesPlan =
         new ShowTimeSeriesPlan(new PartialPath("root.**"), false, "key", "value", 0, 0, false);
     List<ShowTimeSeriesResult> showTimeSeriesResults =
-        manager.showTimeseries(showTimeSeriesPlan, null);
+        schemaEngine.showTimeseries(showTimeSeriesPlan, null);
     Assert.assertEquals(2, showTimeSeriesResults.size());
     showTimeSeriesResults =
         showTimeSeriesResults.stream()
@@ -2292,7 +2326,7 @@ public class MManagerBasicTest {
 
   @Test
   public void testAutoCreateAlignedTimeseriesWhileInsert() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
       long time = 1L;
@@ -2313,22 +2347,22 @@ public class MManagerBasicTest {
       insertRowPlan.setMeasurementMNodes(
           new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
 
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
 
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s1")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s2")));
 
       insertRowPlan.setMeasurements(new String[] {"s3", "s4"});
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s4")));
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s3")));
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s4")));
 
       insertRowPlan.setMeasurements(new String[] {"s2", "s5"});
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
-      assertTrue(manager.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s5")));
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      assertTrue(schemaEngine.isPathExist(new PartialPath("root.laptop.d1.aligned_device.s5")));
 
       insertRowPlan.setMeasurements(new String[] {"s2", "s3"});
-      manager.getSeriesSchemasAndReadLockDevice(insertRowPlan);
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertRowPlan);
 
     } catch (MetadataException | IOException e) {
       fail();
@@ -2337,7 +2371,7 @@ public class MManagerBasicTest {
 
   @Test
   public void testGetStorageGroupNodeByPath() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     PartialPath partialPath = null;
 
     try {
@@ -2347,7 +2381,7 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.setStorageGroup(partialPath);
+      schemaEngine.setStorageGroup(partialPath);
     } catch (MetadataException e) {
       fail(e.getMessage());
     }
@@ -2359,7 +2393,7 @@ public class MManagerBasicTest {
     }
 
     try {
-      manager.getStorageGroupNodeByPath(partialPath);
+      schemaEngine.getStorageGroupNodeByPath(partialPath);
     } catch (StorageGroupNotSetException e) {
       Assert.assertEquals(
           "Storage group is not set for current seriesPath: [root.ln.sg2.device1.sensor1]",
@@ -2374,29 +2408,29 @@ public class MManagerBasicTest {
 
   @Test
   public void testMeasurementIdWhileInsert() throws Exception {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     PartialPath deviceId = new PartialPath("root.sg.d");
     InsertPlan insertPlan;
 
     insertPlan = getInsertPlan("\"a+b\"");
-    manager.getSeriesSchemasAndReadLockDevice(insertPlan);
-    assertTrue(manager.isPathExist(deviceId.concatNode("\"a+b\"")));
+    schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
+    assertTrue(schemaEngine.isPathExist(deviceId.concatNode("\"a+b\"")));
 
     insertPlan = getInsertPlan("\"a.b\"");
-    manager.getSeriesSchemasAndReadLockDevice(insertPlan);
-    assertTrue(manager.isPathExist(deviceId.concatNode("\"a.b\"")));
+    schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
+    assertTrue(schemaEngine.isPathExist(deviceId.concatNode("\"a.b\"")));
 
     insertPlan = getInsertPlan("\"a“(Φ)”b\"");
-    manager.getSeriesSchemasAndReadLockDevice(insertPlan);
-    assertTrue(manager.isPathExist(deviceId.concatNode("\"a“(Φ)”b\"")));
+    schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
+    assertTrue(schemaEngine.isPathExist(deviceId.concatNode("\"a“(Φ)”b\"")));
 
     String[] illegalMeasurementIds = {"a.b", "time", "timestamp", "TIME", "TIMESTAMP"};
     for (String measurementId : illegalMeasurementIds) {
       insertPlan = getInsertPlan(measurementId);
       try {
-        manager.getSeriesSchemasAndReadLockDevice(insertPlan);
-        assertFalse(manager.isPathExist(deviceId.concatNode(measurementId)));
+        schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
+        assertFalse(schemaEngine.isPathExist(deviceId.concatNode(measurementId)));
       } catch (MetadataException e) {
         e.printStackTrace();
       }
@@ -2416,12 +2450,12 @@ public class MManagerBasicTest {
 
   @Test
   public void testTemplateSchemaNameCheckWhileCreate() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     String[] illegalSchemaNames = {"a+b", "time", "timestamp", "TIME", "TIMESTAMP"};
     for (String schemaName : illegalSchemaNames) {
       CreateTemplatePlan plan = getCreateTemplatePlan(schemaName);
       try {
-        manager.createSchemaTemplate(plan);
+        schemaEngine.createSchemaTemplate(plan);
       } catch (MetadataException e) {
         Assert.assertEquals(String.format("%s is an illegal name.", schemaName), e.getMessage());
       }
@@ -2450,10 +2484,10 @@ public class MManagerBasicTest {
 
   @Test
   public void testDeviceNodeAfterAutoCreateTimeseriesFailure() throws Exception {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     PartialPath sg1 = new PartialPath("root.a.sg");
-    manager.setStorageGroup(sg1);
+    schemaEngine.setStorageGroup(sg1);
 
     PartialPath deviceId = new PartialPath("root.a.d");
     String[] measurementList = {"s"};
@@ -2464,51 +2498,51 @@ public class MManagerBasicTest {
     insertPlan.getDataTypes()[0] = TSDataType.INT32;
 
     try {
-      manager.getSeriesSchemasAndReadLockDevice(insertPlan);
+      schemaEngine.getSeriesSchemasAndReadLockDevice(insertPlan);
       fail();
     } catch (MetadataException e) {
       Assert.assertEquals(
           "some children of root.a have already been set to storage group", e.getMessage());
-      Assert.assertFalse(manager.isPathExist(new PartialPath("root.a.d")));
+      Assert.assertFalse(schemaEngine.isPathExist(new PartialPath("root.a.d")));
     }
   }
 
   @Test
   public void testTimeseriesDeletionWithEntityUsingTemplate() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
-    manager.setStorageGroup(new PartialPath("root.sg"));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.setStorageGroup(new PartialPath("root.sg"));
 
     CreateTemplatePlan plan = getCreateTemplatePlan("s1");
-    manager.createSchemaTemplate(plan);
+    schemaEngine.createSchemaTemplate(plan);
     SetTemplatePlan setPlan = new SetTemplatePlan("template1", "root.sg.d1");
-    manager.setSchemaTemplate(setPlan);
-    manager.createTimeseries(
+    schemaEngine.setSchemaTemplate(setPlan);
+    schemaEngine.createTimeseries(
         new PartialPath("root.sg.d1.s2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    manager.setUsingSchemaTemplate(manager.getDeviceNode(new PartialPath("root.sg.d1")));
-    manager.deleteTimeseries(new PartialPath("root.sg.d1.s2"));
-    assertTrue(manager.isPathExist(new PartialPath("root.sg.d1")));
+    schemaEngine.setUsingSchemaTemplate(schemaEngine.getDeviceNode(new PartialPath("root.sg.d1")));
+    schemaEngine.deleteTimeseries(new PartialPath("root.sg.d1.s2"));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.sg.d1")));
 
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.sg.d2.s2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    manager.deleteTimeseries(new PartialPath("root.sg.d2.s2"));
-    assertFalse(manager.isPathExist(new PartialPath("root.sg.d2")));
+    schemaEngine.deleteTimeseries(new PartialPath("root.sg.d2.s2"));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.sg.d2")));
   }
 
   @Test
   public void testTagIndexRecovery() throws Exception {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     PartialPath path = new PartialPath("root.sg.d.s");
     Map<String, String> tags = new HashMap<>();
     tags.put("description", "oldValue");
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new CreateTimeSeriesPlan(
             path,
             TSDataType.valueOf("INT32"),
@@ -2523,38 +2557,38 @@ public class MManagerBasicTest {
         new ShowTimeSeriesPlan(
             new PartialPath("root.sg.d.s"), true, "description", "Value", 0, 0, false);
     List<ShowTimeSeriesResult> results =
-        manager.showTimeseries(showTimeSeriesPlan, new QueryContext());
+        schemaEngine.showTimeseries(showTimeSeriesPlan, new QueryContext());
 
     assertEquals(1, results.size());
     Map<String, String> resultTag = results.get(0).getTag();
     assertEquals("oldValue", resultTag.get("description"));
 
     tags.put("description", "newValue");
-    manager.upsertTagsAndAttributes(null, tags, null, path);
+    schemaEngine.upsertTagsAndAttributes(null, tags, null, path);
 
     showTimeSeriesPlan =
         new ShowTimeSeriesPlan(
             new PartialPath("root.sg.d.s"), true, "description", "Value", 0, 0, false);
-    results = manager.showTimeseries(showTimeSeriesPlan, new QueryContext());
+    results = schemaEngine.showTimeseries(showTimeSeriesPlan, new QueryContext());
 
     assertEquals(1, results.size());
     resultTag = results.get(0).getTag();
     assertEquals("newValue", resultTag.get("description"));
 
-    manager.clear();
-    manager.init();
+    schemaEngine.clear();
+    schemaEngine.init();
 
     showTimeSeriesPlan =
         new ShowTimeSeriesPlan(
             new PartialPath("root.sg.d.s"), true, "description", "oldValue", 0, 0, false);
-    results = manager.showTimeseries(showTimeSeriesPlan, new QueryContext());
+    results = schemaEngine.showTimeseries(showTimeSeriesPlan, new QueryContext());
 
     assertEquals(0, results.size());
 
     showTimeSeriesPlan =
         new ShowTimeSeriesPlan(
             new PartialPath("root.sg.d.s"), true, "description", "Value", 0, 0, false);
-    results = manager.showTimeseries(showTimeSeriesPlan, new QueryContext());
+    results = schemaEngine.showTimeseries(showTimeSeriesPlan, new QueryContext());
 
     assertEquals(1, results.size());
     resultTag = results.get(0).getTag();
@@ -2563,7 +2597,7 @@ public class MManagerBasicTest {
 
   @Test
   public void testTagCreationViaMLogPlanDuringMetadataSync() throws Exception {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     PartialPath path = new PartialPath("root.sg.d.s");
     Map<String, String> tags = new HashMap<>();
@@ -2581,16 +2615,16 @@ public class MManagerBasicTest {
     // mock that the plan has already been executed on sender and receiver will redo this plan
     plan.setTagOffset(10);
 
-    manager.operation(plan);
+    schemaEngine.operation(plan);
 
     ShowTimeSeriesPlan showTimeSeriesPlan =
         new ShowTimeSeriesPlan(new PartialPath("root.sg.d.s"), true, "type", "test", 0, 0, false);
     List<ShowTimeSeriesResult> results =
-        manager.showTimeseries(showTimeSeriesPlan, new QueryContext());
+        schemaEngine.showTimeseries(showTimeSeriesPlan, new QueryContext());
     assertEquals(1, results.size());
     Map<String, String> resultTag = results.get(0).getTag();
     assertEquals("test", resultTag.get("type"));
 
-    assertEquals(0, manager.getMeasurementMNode(path).getOffset());
+    assertEquals(0, schemaEngine.getMeasurementMNode(path).getOffset());
   }
 }
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineImproveTest.java
similarity index 83%
rename from server/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java
rename to server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineImproveTest.java
index 72f18ae..9d50012 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerImproveTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaEngineImproveTest.java
@@ -45,24 +45,24 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-public class MManagerImproveTest {
+public class SchemaEngineImproveTest {
 
-  private static Logger logger = LoggerFactory.getLogger(MManagerImproveTest.class);
+  private static Logger logger = LoggerFactory.getLogger(SchemaEngineImproveTest.class);
 
   private static final int TIMESERIES_NUM = 1000;
   private static final int DEVICE_NUM = 10;
-  private static MManager mManager = null;
+  private static SchemaEngine schemaEngine = null;
 
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    mManager = IoTDB.metaManager;
-    mManager.setStorageGroup(new PartialPath("root.t1.v2"));
+    schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.setStorageGroup(new PartialPath("root.t1.v2"));
 
     for (int j = 0; j < DEVICE_NUM; j++) {
       for (int i = 0; i < TIMESERIES_NUM; i++) {
         String p = "root.t1.v2.d" + j + ".s" + i;
-        mManager.createTimeseries(
+        schemaEngine.createTimeseries(
             new PartialPath(p),
             TSDataType.TEXT,
             TSEncoding.PLAIN,
@@ -74,16 +74,16 @@ public class MManagerImproveTest {
 
   @Test
   public void checkSetUp() throws IllegalPathException {
-    mManager = IoTDB.metaManager;
+    schemaEngine = IoTDB.schemaEngine;
 
-    assertTrue(mManager.isPathExist(new PartialPath("root.t1.v2.d3.s5")));
-    assertFalse(mManager.isPathExist(new PartialPath("root.t1.v2.d9.s" + TIMESERIES_NUM)));
-    assertFalse(mManager.isPathExist(new PartialPath("root.t10")));
+    assertTrue(schemaEngine.isPathExist(new PartialPath("root.t1.v2.d3.s5")));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.t1.v2.d9.s" + TIMESERIES_NUM)));
+    assertFalse(schemaEngine.isPathExist(new PartialPath("root.t10")));
   }
 
   @Test
   public void analyseTimeCost() throws MetadataException {
-    mManager = IoTDB.metaManager;
+    schemaEngine = IoTDB.schemaEngine;
 
     long string_combine, path_exist, list_init, check_filelevel, get_seriestype;
     string_combine = path_exist = list_init = check_filelevel = get_seriestype = 0;
@@ -94,7 +94,7 @@ public class MManagerImproveTest {
 
     long startTime = System.currentTimeMillis();
     for (int i = 0; i < 100000; i++) {
-      assertTrue(mManager.isPathExist(new PartialPath(path)));
+      assertTrue(schemaEngine.isPathExist(new PartialPath(path)));
     }
     long endTime = System.currentTimeMillis();
     path_exist += endTime - startTime;
@@ -105,7 +105,7 @@ public class MManagerImproveTest {
 
     startTime = System.currentTimeMillis();
     for (int i = 0; i < 100000; i++) {
-      TSDataType dataType = mManager.getSeriesType(new PartialPath(path));
+      TSDataType dataType = schemaEngine.getSeriesType(new PartialPath(path));
       assertEquals(TSDataType.TEXT, dataType);
     }
     endTime = System.currentTimeMillis();
@@ -122,8 +122,8 @@ public class MManagerImproveTest {
       throws MetadataException {
     for (String measurement : measurementList) {
       String path = deviceId + TsFileConstant.PATH_SEPARATOR + measurement;
-      assertTrue(mManager.isPathExist(new PartialPath(path)));
-      TSDataType dataType = mManager.getSeriesType(new PartialPath(path));
+      assertTrue(schemaEngine.isPathExist(new PartialPath(path)));
+      TSDataType dataType = schemaEngine.getSeriesType(new PartialPath(path));
       assertEquals(TSDataType.TEXT, dataType);
     }
   }
@@ -132,14 +132,14 @@ public class MManagerImproveTest {
       throws MetadataException {
     for (String measurement : measurementList) {
       String path = deviceId + TsFileConstant.PATH_SEPARATOR + measurement;
-      TSDataType dataType = mManager.getSeriesType(new PartialPath(path));
+      TSDataType dataType = schemaEngine.getSeriesType(new PartialPath(path));
       assertEquals(TSDataType.TEXT, dataType);
     }
   }
 
   private void doCacheTest(String deviceId, List<String> measurementList) throws MetadataException {
     try {
-      IMNode node = mManager.getDeviceNodeWithAutoCreate(new PartialPath(deviceId));
+      IMNode node = schemaEngine.getDeviceNodeWithAutoCreate(new PartialPath(deviceId));
       for (String s : measurementList) {
         assertTrue(node.hasChild(s));
         IMeasurementMNode measurementNode = node.getChild(s).getAsMeasurementMNode();
@@ -153,7 +153,7 @@ public class MManagerImproveTest {
 
   @Test
   public void improveTest() throws MetadataException {
-    mManager = IoTDB.metaManager;
+    schemaEngine = IoTDB.schemaEngine;
 
     String[] deviceIdList = new String[DEVICE_NUM];
     for (int i = 0; i < DEVICE_NUM; i++) {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
index 289e17e..b15af5b 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/TemplateTest.java
@@ -77,16 +77,16 @@ public class TemplateTest {
   public void testTemplate() throws MetadataException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    MManager manager = IoTDB.metaManager;
-    manager.createSchemaTemplate(plan);
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.createSchemaTemplate(plan);
 
     // set device template
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg1.d1");
 
-    manager.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
 
-    IMNode node = manager.getDeviceNode(new PartialPath("root.sg1.d1"));
-    node = manager.setUsingSchemaTemplate(node);
+    IMNode node = schemaEngine.getDeviceNode(new PartialPath("root.sg1.d1"));
+    node = schemaEngine.setUsingSchemaTemplate(node);
 
     MeasurementSchema s11 =
         new MeasurementSchema("s11", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
@@ -94,23 +94,23 @@ public class TemplateTest {
 
     Set<IMeasurementSchema> allSchema =
         new HashSet<>(node.getSchemaTemplate().getSchemaMap().values());
-    manager.getAllMeasurementByDevicePath(new PartialPath("root.sg1.d1")).stream()
+    schemaEngine.getAllMeasurementByDevicePath(new PartialPath("root.sg1.d1")).stream()
         .map(MeasurementPath::getMeasurementSchema)
         .forEach(allSchema::remove);
 
     assertTrue(allSchema.isEmpty());
 
-    IMeasurementMNode mNode = manager.getMeasurementMNode(new PartialPath("root.sg1.d1.s11"));
+    IMeasurementMNode mNode = schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.s11"));
     IMeasurementMNode mNode2 =
-        manager.getMeasurementMNode(new PartialPath("root.sg1.d1.vector.s2"));
+        schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.vector.s2"));
     assertNotNull(mNode);
     assertEquals(mNode.getSchema(), s11);
     assertNotNull(mNode2);
     assertEquals(
-        mNode2.getSchema(), manager.getTemplate("template1").getSchemaMap().get("vector.s2"));
+        mNode2.getSchema(), schemaEngine.getTemplate("template1").getSchemaMap().get("vector.s2"));
 
     try {
-      manager.getMeasurementMNode(new PartialPath("root.sg1.d1.s100"));
+      schemaEngine.getMeasurementMNode(new PartialPath("root.sg1.d1.s100"));
       fail();
     } catch (PathNotExistException e) {
       assertEquals("Path [root.sg1.d1.s100] does not exist", e.getMessage());
@@ -121,11 +121,11 @@ public class TemplateTest {
   public void testTemplateInnerTree() {
     CreateTemplatePlan plan = getTreeTemplatePlan();
     Template template;
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.createSchemaTemplate(plan);
-      template = manager.getTemplate("treeTemplate");
+      schemaEngine.createSchemaTemplate(plan);
+      template = schemaEngine.getTemplate("treeTemplate");
       assertEquals(4, template.getMeasurementsCount());
       assertEquals("d1", template.getPathNodeInTemplate("d1").getName());
       assertEquals(null, template.getPathNodeInTemplate("notExists"));
@@ -299,35 +299,35 @@ public class TemplateTest {
    */
   @Test
   public void testShowTemplates() throws MetadataException, QueryProcessException {
-    MManager manager = IoTDB.metaManager;
-    assertEquals(0, manager.getAllTemplates().size());
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    assertEquals(0, schemaEngine.getAllTemplates().size());
     CreateTemplatePlan plan1 = getTreeTemplatePlan();
     CreateTemplatePlan plan2 = getCreateTemplatePlan();
-    manager.createSchemaTemplate(plan1);
-    manager.createSchemaTemplate(plan2);
+    schemaEngine.createSchemaTemplate(plan1);
+    schemaEngine.createSchemaTemplate(plan2);
 
-    assertEquals("[template1, treeTemplate]", manager.getAllTemplates().toString());
+    assertEquals("[template1, treeTemplate]", schemaEngine.getAllTemplates().toString());
 
     for (int i = 0; i < 3; i++) {
       SetTemplatePlan setTemplatePlan =
           new SetTemplatePlan("template1", String.format("root.sg%d.d%d", i, i + 1));
-      manager.setSchemaTemplate(setTemplatePlan);
+      schemaEngine.setSchemaTemplate(setTemplatePlan);
     }
 
     assertEquals(
         new HashSet<>(Arrays.asList("root.sg1.d2", "root.sg0.d1", "root.sg2.d3")),
-        manager.getPathsSetTemplate("*"));
-    assertEquals(new HashSet<>(Arrays.asList()), manager.getPathsSetTemplate("treeTemplate"));
+        schemaEngine.getPathsSetTemplate("*"));
+    assertEquals(new HashSet<>(Arrays.asList()), schemaEngine.getPathsSetTemplate("treeTemplate"));
 
     for (int i = 0; i < 3; i++) {
       SetTemplatePlan setTemplatePlan =
           new SetTemplatePlan("treeTemplate", String.format("root.tsg%d.d%d", i + 9, i + 10));
-      manager.setSchemaTemplate(setTemplatePlan);
+      schemaEngine.setSchemaTemplate(setTemplatePlan);
     }
 
     assertEquals(
         new HashSet<>(Arrays.asList("root.tsg10.d11", "root.tsg11.d12", "root.tsg9.d10")),
-        manager.getPathsSetTemplate("treeTemplate"));
+        schemaEngine.getPathsSetTemplate("treeTemplate"));
     assertEquals(
         new HashSet<>(
             Arrays.asList(
@@ -337,7 +337,7 @@ public class TemplateTest {
                 "root.sg1.d2",
                 "root.sg0.d1",
                 "root.sg2.d3")),
-        manager.getPathsSetTemplate("*"));
+        schemaEngine.getPathsSetTemplate("*"));
 
     PlanExecutor exe1 = new PlanExecutor();
     exe1.insert(getInsertRowPlan("root.sg0.d1", "s11"));
@@ -346,17 +346,17 @@ public class TemplateTest {
 
     assertEquals(
         new HashSet<>(Arrays.asList("root.tsg10.d11", "root.sg1.d2", "root.sg0.d1")),
-        manager.getPathsUsingTemplate("*"));
+        schemaEngine.getPathsUsingTemplate("*"));
 
     try {
-      manager.createSchemaTemplate(plan1);
+      schemaEngine.createSchemaTemplate(plan1);
       fail();
     } catch (MetadataException e) {
       assertEquals("Duplicated template name: treeTemplate", e.getMessage());
     }
 
     try {
-      manager.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
+      schemaEngine.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
       fail();
     } catch (MetadataException e) {
       assertEquals(
@@ -366,39 +366,39 @@ public class TemplateTest {
 
   @Test
   public void testShowAllSchemas() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     CreateTemplatePlan plan1 = getTreeTemplatePlan();
     CreateTemplatePlan plan2 = getCreateTemplatePlan();
-    manager.createSchemaTemplate(plan1);
-    manager.createSchemaTemplate(plan2);
-    assertEquals(4, manager.getSchemasInTemplate("treeTemplate", "").size());
-    assertEquals(2, manager.getSchemasInTemplate("treeTemplate", "GPS").size());
-    assertEquals(11, manager.getSchemasInTemplate("template1", "").size());
-    assertEquals(10, manager.getSchemasInTemplate("template1", "vector").size());
+    schemaEngine.createSchemaTemplate(plan1);
+    schemaEngine.createSchemaTemplate(plan2);
+    assertEquals(4, schemaEngine.getSchemasInTemplate("treeTemplate", "").size());
+    assertEquals(2, schemaEngine.getSchemasInTemplate("treeTemplate", "GPS").size());
+    assertEquals(11, schemaEngine.getSchemasInTemplate("template1", "").size());
+    assertEquals(10, schemaEngine.getSchemasInTemplate("template1", "vector").size());
   }
 
   @Test
   public void testDropTemplate() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     CreateTemplatePlan plan1 = getTreeTemplatePlan();
     CreateTemplatePlan plan2 = getCreateTemplatePlan();
-    manager.createSchemaTemplate(plan1);
-    manager.createSchemaTemplate(plan2);
+    schemaEngine.createSchemaTemplate(plan1);
+    schemaEngine.createSchemaTemplate(plan2);
 
-    assertEquals("[template1, treeTemplate]", manager.getAllTemplates().toString());
+    assertEquals("[template1, treeTemplate]", schemaEngine.getAllTemplates().toString());
 
     try {
-      manager.createSchemaTemplate(plan2);
+      schemaEngine.createSchemaTemplate(plan2);
       fail();
     } catch (MetadataException e) {
       assertEquals("Duplicated template name: template1", e.getMessage());
     }
 
     SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg.d0");
-    manager.setSchemaTemplate(setTemplatePlan);
+    schemaEngine.setSchemaTemplate(setTemplatePlan);
 
     try {
-      manager.dropSchemaTemplate(new DropTemplatePlan("template1"));
+      schemaEngine.dropSchemaTemplate(new DropTemplatePlan("template1"));
       fail();
     } catch (MetadataException e) {
       assertEquals(
@@ -406,47 +406,47 @@ public class TemplateTest {
     }
 
     UnsetTemplatePlan unsetPlan = new UnsetTemplatePlan("root.sg.d0", "template1");
-    manager.unsetSchemaTemplate(unsetPlan);
-
-    manager.dropSchemaTemplate(new DropTemplatePlan("template1"));
-    assertEquals("[treeTemplate]", manager.getAllTemplates().toString());
-    manager.createSchemaTemplate(plan2);
-    assertEquals("[template1, treeTemplate]", manager.getAllTemplates().toString());
-    manager.dropSchemaTemplate(new DropTemplatePlan("template1"));
-    manager.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
+    schemaEngine.unsetSchemaTemplate(unsetPlan);
+
+    schemaEngine.dropSchemaTemplate(new DropTemplatePlan("template1"));
+    assertEquals("[treeTemplate]", schemaEngine.getAllTemplates().toString());
+    schemaEngine.createSchemaTemplate(plan2);
+    assertEquals("[template1, treeTemplate]", schemaEngine.getAllTemplates().toString());
+    schemaEngine.dropSchemaTemplate(new DropTemplatePlan("template1"));
+    schemaEngine.dropSchemaTemplate(new DropTemplatePlan("treeTemplate"));
   }
 
   @Test
   public void testTemplateAlignment() throws MetadataException {
-    MManager manager = IoTDB.metaManager;
-    manager.createTimeseries(
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d0"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.GZIP,
         null);
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d1.s1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.GZIP,
         null);
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d1.s2"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.GZIP,
         null);
-    manager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d1.ss.t1"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         CompressionType.GZIP,
         null);
 
-    manager.createSchemaTemplate(getDirectAlignedTemplate());
+    schemaEngine.createSchemaTemplate(getDirectAlignedTemplate());
     try {
-      manager.setSchemaTemplate(new SetTemplatePlan("templateDA", "root.laptop.d1"));
+      schemaEngine.setSchemaTemplate(new SetTemplatePlan("templateDA", "root.laptop.d1"));
       fail();
     } catch (Exception e) {
       assertEquals(
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
index 2c17245..e404d71 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.lastCache.container.ILastCacheContainer;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
@@ -94,10 +94,10 @@ public class IDTableTest {
 
   @Test
   public void testCreateAlignedTimeseriesAndInsert() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
       CreateAlignedTimeSeriesPlan plan =
           new CreateAlignedTimeSeriesPlan(
               new PartialPath("root.laptop.d1.aligned_device"),
@@ -113,7 +113,7 @@ public class IDTableTest {
               null,
               null);
 
-      manager.createAlignedTimeSeries(plan);
+      schemaEngine.createAlignedTimeSeries(plan);
 
       IDTable idTable = IDTableManager.getInstance().getIDTable(new PartialPath("root.laptop"));
 
@@ -175,10 +175,10 @@ public class IDTableTest {
 
   @Test
   public void testCreateAlignedTimeseriesAndInsertNotAlignedData() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
       CreateAlignedTimeSeriesPlan plan =
           new CreateAlignedTimeSeriesPlan(
               new PartialPath("root.laptop.d1.aligned_device"),
@@ -194,7 +194,7 @@ public class IDTableTest {
               null,
               null);
 
-      manager.createAlignedTimeSeries(plan);
+      schemaEngine.createAlignedTimeSeries(plan);
 
       IDTable idTable = IDTableManager.getInstance().getIDTable(new PartialPath("root.laptop"));
 
@@ -240,10 +240,10 @@ public class IDTableTest {
 
   @Test
   public void testCreateTimeseriesAndInsert() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
@@ -295,16 +295,16 @@ public class IDTableTest {
 
   @Test
   public void testCreateTimeseriesAndInsertWithAlignedData() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s2"),
           TSDataType.valueOf("INT64"),
           TSEncoding.valueOf("RLE"),
@@ -348,7 +348,7 @@ public class IDTableTest {
 
   @Test
   public void testInsertAndAutoCreate() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       // construct an insertRowPlan with mismatched data type
       long time = 1L;
@@ -374,13 +374,13 @@ public class IDTableTest {
 
       idTable.getSeriesSchemas(insertRowPlan);
 
-      // check mmanager
+      // check schemaEngine
       IMeasurementMNode s1Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s1"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s1"));
       assertEquals("s1", s1Node.getName());
       assertEquals(TSDataType.INT32, s1Node.getSchema().getType());
       IMeasurementMNode s2Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s2"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s2"));
       assertEquals("s2", s2Node.getName());
       assertEquals(TSDataType.INT64, s2Node.getSchema().getType());
 
@@ -432,7 +432,7 @@ public class IDTableTest {
 
   @Test
   public void testAlignedInsertAndAutoCreate() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       // construct an insertRowPlan with mismatched data type
       long time = 1L;
@@ -458,13 +458,13 @@ public class IDTableTest {
 
       idTable.getSeriesSchemas(insertRowPlan);
 
-      // check mmanager
+      // check schemaEngine
       IMeasurementMNode s1Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.aligned_device.s1"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.aligned_device.s1"));
       assertEquals("s1", s1Node.getName());
       assertEquals(TSDataType.INT32, s1Node.getSchema().getType());
       IMeasurementMNode s2Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.aligned_device.s2"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.aligned_device.s2"));
       assertEquals("s2", s2Node.getName());
       assertEquals(TSDataType.INT64, s2Node.getSchema().getType());
       assertTrue(s2Node.getParent().isAligned());
@@ -517,18 +517,18 @@ public class IDTableTest {
 
   @Test
   public void testTriggerAndInsert() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       long time = 1L;
 
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s2"),
           TSDataType.valueOf("INT64"),
           TSEncoding.valueOf("RLE"),
@@ -565,15 +565,15 @@ public class IDTableTest {
 
       idTable.getSeriesSchemas(insertRowPlan);
 
-      // check mmanager
+      // check schemaEngine
       IMeasurementMNode s1Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s1"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s1"));
       assertEquals("s1", s1Node.getName());
       assertEquals(TSDataType.INT32, s1Node.getSchema().getType());
       assertNotNull(s1Node.getTriggerExecutor());
 
       IMeasurementMNode s2Node =
-          manager.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s2"));
+          schemaEngine.getMeasurementMNode(new PartialPath("root.laptop.d1.non_aligned_device.s2"));
       assertEquals("s2", s2Node.getName());
       assertEquals(TSDataType.INT64, s2Node.getSchema().getType());
       assertNull(s2Node.getTriggerExecutor());
@@ -594,18 +594,18 @@ public class IDTableTest {
 
   @Test
   public void testFlushTimeAndLastCache() {
-    MManager manager = IoTDB.metaManager;
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
     try {
       long time = 1L;
 
-      manager.setStorageGroup(new PartialPath("root.laptop"));
-      manager.createTimeseries(
+      schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s1"),
           TSDataType.valueOf("INT32"),
           TSEncoding.valueOf("RLE"),
           compressionType,
           Collections.emptyMap());
-      manager.createTimeseries(
+      schemaEngine.createTimeseries(
           new PartialPath("root.laptop.d1.non_aligned_device.s2"),
           TSDataType.valueOf("INT64"),
           TSEncoding.valueOf("RLE"),
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java
index e70e5ee..16dc956 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java
@@ -176,8 +176,8 @@ public class InsertWithIDTableTest {
             encodingList,
             compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
 
     IoTDBDescriptor.getInstance().getConfig().setAutoCreateSchemaEnabled(false);
 
@@ -269,8 +269,8 @@ public class InsertWithIDTableTest {
         new CreateTemplatePlan(
             "template1", measurementList, dataTypesList, encodingList, compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1.GPS"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1.GPS"));
 
     IoTDBDescriptor.getInstance().getConfig().setAutoCreateSchemaEnabled(false);
 
@@ -499,8 +499,8 @@ public class InsertWithIDTableTest {
           QueryFilterOptimizationException, StorageEngineException, IOException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
     InsertTabletPlan tabletPlan = getAlignedInsertTabletPlan();
 
     PlanExecutor executor = new PlanExecutor();
@@ -517,7 +517,7 @@ public class InsertWithIDTableTest {
 
     // test recover
     EnvironmentUtils.stopDaemon();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     // wait for close
     try {
       Thread.sleep(1000);
@@ -542,8 +542,8 @@ public class InsertWithIDTableTest {
           QueryFilterOptimizationException, StorageEngineException, IOException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
 
     InsertTabletPlan tabletPlan = getAlignedInsertTabletPlan();
 
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSGTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSGTest.java
index 2623d0f..b8ff6c2 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSGTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeAboveSGTest.java
@@ -20,7 +20,7 @@ package org.apache.iotdb.db.metadata.mtree;
 
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -266,7 +266,7 @@ public class MTreeAboveSGTest {
     root.setStorageGroup(new PartialPath("root.sg1"));
 
     root.setStorageGroup(new PartialPath("root.sg2"));
-    MManager.StorageGroupFilter filter = storageGroup -> storageGroup.equals("root.sg1");
+    SchemaEngine.StorageGroupFilter filter = storageGroup -> storageGroup.equals("root.sg1");
 
     Pair<List<PartialPath>, Set<IStorageGroupMNode>> result =
         root.getNodesListInGivenLevel(new PartialPath("root.**"), 3, null);
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
index 0ed58fd..b4d4187 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGTest.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.MeasurementMNode;
 import org.apache.iotdb.db.metadata.path.MeasurementPath;
@@ -618,7 +618,7 @@ public class MTreeBelowSGTest {
 
   @Test
   public void testGetNodeListInLevel() throws MetadataException {
-    MManager.StorageGroupFilter filter = sg -> sg.equals("root.sg1");
+    SchemaEngine.StorageGroupFilter filter = sg -> sg.equals("root.sg1");
 
     MTreeBelowSG storageGroup = getStorageGroup(new PartialPath("root.sg1"));
     storageGroup.createTimeseries(
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgradeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgradeTest.java
index 0c6cca8..0af7e7c 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgradeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/upgrade/MetadataUpgradeTest.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.metadata.upgrade;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
-import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.metadata.MetadataConstant;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.logfile.MLogWriter;
 import org.apache.iotdb.db.metadata.mnode.EntityMNode;
 import org.apache.iotdb.db.metadata.mnode.IEntityMNode;
@@ -90,18 +90,18 @@ public class MetadataUpgradeTest {
     prepareTagFile();
     prepareMLog();
 
-    MManager manager = IoTDB.metaManager;
-    manager.clear();
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.clear();
     MetadataUpgrader.upgrade();
-    manager.init();
+    schemaEngine.init();
 
-    Assert.assertEquals(8, manager.getStorageGroupNum(new PartialPath("root.**"), false));
-    Assert.assertEquals(10, manager.getAllTimeseriesCount(new PartialPath("root.**")));
+    Assert.assertEquals(8, schemaEngine.getStorageGroupNum(new PartialPath("root.**"), false));
+    Assert.assertEquals(10, schemaEngine.getAllTimeseriesCount(new PartialPath("root.**")));
 
     ShowTimeSeriesPlan showTimeSeriesPlan =
         new ShowTimeSeriesPlan(
             new PartialPath("root.**"), false, "t-k-0", "t-k-0-v-0", 0, 0, false);
-    List<ShowTimeSeriesResult> resultList = manager.showTimeseries(showTimeSeriesPlan, null);
+    List<ShowTimeSeriesResult> resultList = schemaEngine.showTimeseries(showTimeSeriesPlan, null);
     Assert.assertEquals(1, resultList.size());
     ShowTimeSeriesResult result = resultList.get(0);
     Assert.assertEquals("root.test.sg1.d1.s1", result.getName());
@@ -109,7 +109,7 @@ public class MetadataUpgradeTest {
     showTimeSeriesPlan =
         new ShowTimeSeriesPlan(
             new PartialPath("root.**"), false, "t-k-1", "t-k-1-v-1", 0, 0, false);
-    resultList = manager.showTimeseries(showTimeSeriesPlan, null);
+    resultList = schemaEngine.showTimeseries(showTimeSeriesPlan, null);
     resultList =
         resultList.stream()
             .sorted(Comparator.comparing(ShowTimeSeriesResult::getName))
@@ -120,11 +120,11 @@ public class MetadataUpgradeTest {
     result = resultList.get(1);
     Assert.assertEquals("root.test.sg2.d1.s1", result.getName());
 
-    Assert.assertEquals(4, manager.getPathsSetTemplate("template").size());
-    Assert.assertEquals(0, manager.getPathsSetTemplate("unsetTemplate").size());
+    Assert.assertEquals(4, schemaEngine.getPathsSetTemplate("template").size());
+    Assert.assertEquals(0, schemaEngine.getPathsSetTemplate("unsetTemplate").size());
 
     Assert.assertEquals(
-        "root.test.sg3.d3", new ArrayList<>(manager.getPathsUsingTemplate("template")).get(0));
+        "root.test.sg3.d3", new ArrayList<>(schemaEngine.getPathsUsingTemplate("template")).get(0));
   }
 
   private void prepareMLog() throws Exception {
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java b/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
index a5d824d..ef50aa0 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.exception.runtime.SQLParserException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
@@ -60,85 +60,85 @@ public class PlannerTest {
 
   private CompressionType compressionType =
       TSFileDescriptor.getInstance().getConfig().getCompressor();
-  private MManager mManager = IoTDB.metaManager;
+  private SchemaEngine schemaEngine = IoTDB.schemaEngine;
   private Planner processor = new Planner();
 
   static {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    mManager.setStorageGroup(new PartialPath("root.vehicle"));
-    mManager.setStorageGroup(new PartialPath("root.vehicle1"));
-    mManager.createTimeseries(
+    schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    schemaEngine.setStorageGroup(new PartialPath("root.vehicle1"));
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device1.sensor1"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device1.sensor2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device1.sensor3"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device2.sensor1"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device2.sensor2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.device2.sensor3"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device1.sensor1"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device1.sensor2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device1.sensor3"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device2.sensor1"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device2.sensor2"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
         compressionType,
         Collections.emptyMap());
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.vehicle1.device2.sensor3"),
         TSDataType.valueOf("INT32"),
         TSEncoding.valueOf("RLE"),
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java b/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
index 44b103b..2d95a68 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
@@ -176,10 +176,10 @@ public class LogicalPlanSmallTest {
         "select s1 from root.vehicle.d1 where s1 < 20 and time <= now() slimit 2 soffset 1";
     QueryOperator operator =
         (QueryOperator) LogicalGenerator.generate(sqlStr, ZoneId.systemDefault());
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     ConcatPathOptimizer concatPathOptimizer = new ConcatPathOptimizer();
     concatPathOptimizer.transform(operator);
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     // expected to throw LogicalOptimizeException: The value of SOFFSET (%d) is equal to or exceeds
     // the number of sequences (%d) that can actually be returned.
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/physical/ConcatOptimizerTest.java b/server/src/test/java/org/apache/iotdb/db/qp/physical/ConcatOptimizerTest.java
index b3784d4..6f73fb6 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/physical/ConcatOptimizerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/physical/ConcatOptimizerTest.java
@@ -52,39 +52,39 @@ public class ConcatOptimizerTest {
   @Before
   public void before() throws MetadataException {
     processor = new Planner();
-    IoTDB.metaManager.init();
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.laptop"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.init();
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.laptop"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d1.s1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d1.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d2.s1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d2.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d3.s1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.laptop.d3.s2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -94,7 +94,7 @@ public class ConcatOptimizerTest {
 
   @After
   public void after() throws IOException {
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertRowPlanTest.java b/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertRowPlanTest.java
index a050570..608d031 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertRowPlanTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertRowPlanTest.java
@@ -141,8 +141,8 @@ public class InsertRowPlanTest {
         new CreateTemplatePlan(
             "templateN", measurementList, dataTypesList, encodingList, compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("templateN", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("templateN", "root.isp.d1"));
 
     IoTDBDescriptor.getInstance().getConfig().setAutoCreateSchemaEnabled(false);
 
@@ -230,8 +230,8 @@ public class InsertRowPlanTest {
             encodingList,
             compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
 
     IoTDBDescriptor.getInstance().getConfig().setAutoCreateSchemaEnabled(false);
 
@@ -322,8 +322,8 @@ public class InsertRowPlanTest {
         new CreateTemplatePlan(
             "template1", measurementList, dataTypesList, encodingList, compressionTypes);
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
 
     IoTDBDescriptor.getInstance().getConfig().setAutoCreateSchemaEnabled(false);
 
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertTabletPlanTest.java b/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertTabletPlanTest.java
index 75213a2..42fed52 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertTabletPlanTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/physical/InsertTabletPlanTest.java
@@ -294,8 +294,8 @@ public class InsertTabletPlanTest {
           QueryFilterOptimizationException, StorageEngineException, IOException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
     InsertTabletPlan tabletPlan = getAlignedInsertTabletPlan();
 
     PlanExecutor executor = new PlanExecutor();
@@ -312,7 +312,7 @@ public class InsertTabletPlanTest {
 
     // test recover
     EnvironmentUtils.stopDaemon();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     // wait for close
     try {
       Thread.sleep(1000);
@@ -337,8 +337,8 @@ public class InsertTabletPlanTest {
           QueryFilterOptimizationException, StorageEngineException, IOException {
     CreateTemplatePlan plan = getCreateTemplatePlan();
 
-    IoTDB.metaManager.createSchemaTemplate(plan);
-    IoTDB.metaManager.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
+    IoTDB.schemaEngine.createSchemaTemplate(plan);
+    IoTDB.schemaEngine.setSchemaTemplate(new SetTemplatePlan("template1", "root.isp.d1"));
 
     InsertTabletPlan tabletPlan = getAlignedInsertTabletPlan();
 
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/physical/PhysicalPlanTest.java b/server/src/test/java/org/apache/iotdb/db/qp/physical/PhysicalPlanTest.java
index 76fe66a..2cf8052 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/physical/PhysicalPlanTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/physical/PhysicalPlanTest.java
@@ -103,26 +103,26 @@ public class PhysicalPlanTest {
   @Before
   public void before() throws MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d3.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d4.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
@@ -1432,7 +1432,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testRegexpQuery() throws QueryProcessException, MetadataException {
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d5.s1"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/physical/SerializationTest.java b/server/src/test/java/org/apache/iotdb/db/qp/physical/SerializationTest.java
index b0c1d20..4675c19 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/physical/SerializationTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/physical/SerializationTest.java
@@ -54,27 +54,27 @@ public class SerializationTest {
 
   @Before
   public void before() throws MetadataException {
-    IoTDB.metaManager.init();
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.init();
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d3.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d4.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
@@ -84,7 +84,7 @@ public class SerializationTest {
 
   @After
   public void clean() throws IOException {
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
index 07fad6d..32adab4 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithValueFilterTest.java
@@ -80,7 +80,7 @@ public class EngineDataSetWithValueFilterTest {
   };
 
   static {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   public EngineDataSetWithValueFilterTest() throws QueryProcessException {}
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
index 34d7edc..ad5c6be 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
@@ -78,38 +78,38 @@ public class UDTFAlignByTimeDataSetTest {
   @BeforeClass
   public static void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.vehicle"));
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d1.s2"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d2.s2"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d3.s1"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
         CompressionType.UNCOMPRESSED,
         null);
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.vehicle.d3.s2"),
         TSDataType.FLOAT,
         TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByDataSetTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByDataSetTest.java
index 58041d1..4015a50 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByDataSetTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByDataSetTest.java
@@ -83,7 +83,7 @@ public class GroupByDataSetTest {
   };
 
   static {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   public GroupByDataSetTest() throws QueryProcessException {}
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSetTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSetTest.java
index ba6578a..e5694e0 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSetTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByFillDataSetTest.java
@@ -62,7 +62,7 @@ public class GroupByFillDataSetTest {
   };
 
   static {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   public GroupByFillDataSetTest() throws QueryProcessException {}
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByLevelDataSetTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByLevelDataSetTest.java
index ca48d26..ef89996 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByLevelDataSetTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/groupby/GroupByLevelDataSetTest.java
@@ -84,7 +84,7 @@ public class GroupByLevelDataSetTest {
   };
 
   static {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
   }
 
   public GroupByLevelDataSetTest() throws QueryProcessException {}
diff --git a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
index d5b8ae1..191e044 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
@@ -65,7 +65,7 @@ public class SeriesReaderTestUtil {
       List<TsFileResource> seqResources,
       List<TsFileResource> unseqResources)
       throws MetadataException, IOException, WriteProcessException {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prepareSeries(measurementSchemas, deviceIds);
     prepareFiles(seqResources, unseqResources, measurementSchemas, deviceIds);
   }
@@ -77,7 +77,7 @@ public class SeriesReaderTestUtil {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     EnvironmentUtils.cleanAllDir();
   }
 
@@ -179,10 +179,10 @@ public class SeriesReaderTestUtil {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds.add(SERIES_READER_TEST_SG + PATH_SEPARATOR + "device" + i);
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(SERIES_READER_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(SERIES_READER_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             new PartialPath(device + PATH_SEPARATOR + measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java b/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
index bc43c2c..220eb1a 100644
--- a/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
@@ -80,7 +80,7 @@ public class ResourceManagerTest {
 
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     prevTimeIndexMemoryProportion = CONFIG.getTimeIndexMemoryProportion();
     timeIndexLevel = CONFIG.getTimeIndexLevel();
     prepareSeries();
@@ -98,7 +98,7 @@ public class ResourceManagerTest {
     tsFileResourceManager.setTimeIndexMemoryThreshold(prevTimeIndexMemoryThreshold);
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     TsFileResourceManager.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
   }
@@ -114,11 +114,11 @@ public class ResourceManagerTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = RESOURCE_MANAGER_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.metaManager.setStorageGroup(new PartialPath(RESOURCE_MANAGER_TEST_SG));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath(RESOURCE_MANAGER_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             devicePath.concatNode(measurementSchema.getMeasurementId()),
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java b/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
index 36bb003..8f1eabf 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/receiver/load/FileLoaderTest.java
@@ -27,7 +27,7 @@ import org.apache.iotdb.db.engine.storagegroup.VirtualStorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.sync.conf.SyncConstant;
@@ -77,11 +77,11 @@ public class FileLoaderTest {
   }
 
   private void initMetadata() throws MetadataException {
-    MManager mmanager = IoTDB.metaManager;
-    mmanager.init();
-    mmanager.setStorageGroup(new PartialPath("root.sg0"));
-    mmanager.setStorageGroup(new PartialPath("root.sg1"));
-    mmanager.setStorageGroup(new PartialPath("root.sg2"));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.init();
+    schemaEngine.setStorageGroup(new PartialPath("root.sg0"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg1"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg2"));
   }
 
   @After
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java b/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
index 9865c08..75bd42d 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/receiver/recover/SyncReceiverLogAnalyzerTest.java
@@ -28,7 +28,7 @@ import org.apache.iotdb.db.exception.DiskSpaceInsufficientException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.sync.conf.SyncConstant;
@@ -80,11 +80,11 @@ public class SyncReceiverLogAnalyzerTest {
   }
 
   private void initMetadata() throws MetadataException {
-    MManager mmanager = IoTDB.metaManager;
-    mmanager.init();
-    mmanager.setStorageGroup(new PartialPath("root.sg0"));
-    mmanager.setStorageGroup(new PartialPath("root.sg1"));
-    mmanager.setStorageGroup(new PartialPath("root.sg2"));
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.init();
+    schemaEngine.setStorageGroup(new PartialPath("root.sg0"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg1"));
+    schemaEngine.setStorageGroup(new PartialPath("root.sg2"));
   }
 
   @After
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManagerTest.java b/server/src/test/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManagerTest.java
index a6ed41a..2ec4d69 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/sender/manage/SyncFileManagerTest.java
@@ -76,7 +76,7 @@ public class SyncFileManagerTest {
 
     Random r = new Random(0);
     for (int i = 0; i < 3; i++) {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(getSgName(i)));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(getSgName(i)));
     }
     for (int i = 0; i < 3; i++) {
       for (int j = 0; j < 5; j++) {
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/sender/recover/SyncSenderLogAnalyzerTest.java b/server/src/test/java/org/apache/iotdb/db/sync/sender/recover/SyncSenderLogAnalyzerTest.java
index 22113ae..8212f1e 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/sender/recover/SyncSenderLogAnalyzerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/sender/recover/SyncSenderLogAnalyzerTest.java
@@ -84,7 +84,7 @@ public class SyncSenderLogAnalyzerTest {
     Map<String, Map<Long, Map<Long, Set<File>>>> allFileList = new HashMap<>();
 
     for (int i = 0; i < 3; i++) {
-      IoTDB.metaManager.setStorageGroup(new PartialPath(getSgName(i)));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath(getSgName(i)));
     }
     Random r = new Random(0);
     for (int i = 0; i < 3; i++) {
diff --git a/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java b/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
index e3bd5c0..85eeb55 100644
--- a/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
@@ -90,7 +90,7 @@ public class MLogParserTest {
             plan.setDataType(TSDataType.INT32);
             plan.setEncoding(TSEncoding.PLAIN);
             plan.setCompressor(CompressionType.GZIP);
-            IoTDB.metaManager.createTimeseries(plan);
+            IoTDB.schemaEngine.createTimeseries(plan);
           } catch (MetadataException e) {
             e.printStackTrace();
           }
@@ -99,27 +99,27 @@ public class MLogParserTest {
     }
 
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath("root.ln.cc"));
-      IoTDB.metaManager.setStorageGroup(new PartialPath("root.sgcc"));
-      IoTDB.metaManager.setTTL(new PartialPath("root.sgcc"), 1234L);
-      IoTDB.metaManager.deleteTimeseries(new PartialPath("root.sg1.device1.s1"));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.ln.cc"));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sgcc"));
+      IoTDB.schemaEngine.setTTL(new PartialPath("root.sgcc"), 1234L);
+      IoTDB.schemaEngine.deleteTimeseries(new PartialPath("root.sg1.device1.s1"));
       List<PartialPath> paths = new ArrayList<>();
       paths.add(new PartialPath("root.ln.cc"));
-      IoTDB.metaManager.deleteStorageGroups(paths);
+      IoTDB.schemaEngine.deleteStorageGroups(paths);
       Map<String, String> tags = new HashMap<String, String>();
       tags.put("tag1", "value1");
-      IoTDB.metaManager.addTags(tags, new PartialPath("root.sg1.device1.s2"));
-      IoTDB.metaManager.changeAlias(new PartialPath("root.sg1.device1.s3"), "hello");
+      IoTDB.schemaEngine.addTags(tags, new PartialPath("root.sg1.device1.s2"));
+      IoTDB.schemaEngine.changeAlias(new PartialPath("root.sg1.device1.s3"), "hello");
     } catch (MetadataException | IOException e) {
       e.printStackTrace();
     }
 
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg"));
-      IoTDB.metaManager.createSchemaTemplate(genCreateSchemaTemplatePlan());
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg"));
+      IoTDB.schemaEngine.createSchemaTemplate(genCreateSchemaTemplatePlan());
       SetTemplatePlan setTemplatePlan = new SetTemplatePlan("template1", "root.sg");
-      IoTDB.metaManager.setSchemaTemplate(setTemplatePlan);
-      IoTDB.metaManager.setUsingSchemaTemplate(
+      IoTDB.schemaEngine.setSchemaTemplate(setTemplatePlan);
+      IoTDB.schemaEngine.setUsingSchemaTemplate(
           new ActivateTemplatePlan(new PartialPath("root.sg.d1")));
     } catch (MetadataException e) {
       e.printStackTrace();
@@ -158,7 +158,7 @@ public class MLogParserTest {
 
     File file;
 
-    IoTDB.metaManager.forceMlog();
+    IoTDB.schemaEngine.forceMlog();
     for (int i = 0; i < storageGroups.length; i++) {
       testParseMLog(storageGroups[i], mlogLineNum[i]);
       file = new File("target" + File.separator + "tmp" + File.separator + "text.mlog");
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
index 9f5e015..c6a931c 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
@@ -19,7 +19,7 @@
 package org.apache.iotdb.db.utils;
 
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.constant.SQLConstant;
 import org.apache.iotdb.db.service.IoTDB;
@@ -36,13 +36,13 @@ import java.util.List;
 public class SchemaUtilsTest {
   @Test
   public void registerTimeseriesTest() throws MetadataException {
-    MManager mmanager = IoTDB.metaManager;
-    mmanager.init();
+    SchemaEngine schemaEngine = IoTDB.schemaEngine;
+    schemaEngine.init();
 
     String tsPath = "root.sg.d1.s1";
     TimeseriesSchema timeseriesSchema = new TimeseriesSchema(tsPath, TSDataType.INT32);
     SchemaUtils.registerTimeseries(timeseriesSchema);
-    Assert.assertTrue(IoTDB.metaManager.isPathExist(new PartialPath(tsPath)));
+    Assert.assertTrue(IoTDB.schemaEngine.isPathExist(new PartialPath(tsPath)));
   }
 
   @Test
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/PerformanceTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/PerformanceTest.java
index 0f22639..0290fe9 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/PerformanceTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/PerformanceTest.java
@@ -149,28 +149,28 @@ public class PerformanceTest {
     tempProcessorStore.createNewFile();
 
     try {
-      IoTDB.metaManager.setStorageGroup(new PartialPath("root.logTestDevice"));
+      IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.logTestDevice"));
     } catch (MetadataException ignored) {
     }
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.logTestDevice.s1"),
         TSDataType.DOUBLE,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.logTestDevice.s2"),
         TSDataType.INT32,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.logTestDevice.s3"),
         TSDataType.TEXT,
         TSEncoding.PLAIN,
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.logTestDevice.s4"),
         TSDataType.BOOLEAN,
         TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/DeviceStringTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/DeviceStringTest.java
index 8d209de..882c34e 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/DeviceStringTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/DeviceStringTest.java
@@ -25,7 +25,7 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.SchemaEngine;
 import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
@@ -59,7 +59,7 @@ public class DeviceStringTest {
   private String logNodePrefix = TestConstant.OUTPUT_DATA_DIR.concat("testNode/0");
   private Schema schema;
   private TsFileResource resource;
-  private MManager mManager = IoTDB.metaManager;
+  private SchemaEngine schemaEngine = IoTDB.schemaEngine;
 
   @Before
   public void setup() throws IOException, WriteProcessException, MetadataException {
@@ -71,7 +71,7 @@ public class DeviceStringTest {
     schema.registerTimeseries(
         new Path("root.sg.device99"),
         new MeasurementSchema("sensor4", TSDataType.INT64, TSEncoding.PLAIN));
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor4"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -80,7 +80,7 @@ public class DeviceStringTest {
     schema.registerTimeseries(
         new Path("root.sg.device99"),
         new MeasurementSchema("sensor2", TSDataType.INT64, TSEncoding.PLAIN));
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -89,7 +89,7 @@ public class DeviceStringTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor1", TSDataType.INT64, TSEncoding.PLAIN));
-    mManager.createTimeseries(
+    schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -126,7 +126,7 @@ public class DeviceStringTest {
     resource.deserialize();
     assertFalse(resource.getDevices().isEmpty());
     for (String device : resource.getDevices()) {
-      assertSame(device, mManager.getDeviceId(new PartialPath(device)));
+      assertSame(device, schemaEngine.getDeviceId(new PartialPath(device)));
     }
   }
 }
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java
index b63cd8f..38d5165 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/LogReplayerTest.java
@@ -92,11 +92,11 @@ public class LogReplayerTest {
     TsFileResource tsFileResource = new TsFileResource(tsFile);
     IMemTable memTable = new PrimitiveMemTable();
 
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg"));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg"));
     try {
       for (int i = 0; i <= 5; i++) {
         for (int j = 0; j <= 5; j++) {
-          IoTDB.metaManager.createTimeseries(
+          IoTDB.schemaEngine.createTimeseries(
               new PartialPath("root.sg.device" + i + ".sensor" + j),
               TSDataType.INT64,
               TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
index 8e6ac73..1531b65 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
@@ -99,7 +99,7 @@ public class RecoverResourceFromReaderTest {
         MeasurementSchema measurementSchema =
             new MeasurementSchema("sensor" + j, TSDataType.INT64, TSEncoding.PLAIN);
         schema.registerTimeseries(new Path(path.toTSFilePath().getDevice()), measurementSchema);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
@@ -110,7 +110,7 @@ public class RecoverResourceFromReaderTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor4", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor4"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -119,7 +119,7 @@ public class RecoverResourceFromReaderTest {
     schema.registerTimeseries(
         new Path("root.sg.device99"),
         new MeasurementSchema("sensor2", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -128,7 +128,7 @@ public class RecoverResourceFromReaderTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor1", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
index d467a37..b5c2885 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
@@ -122,10 +122,10 @@ public class SeqTsFileRecoverTest {
   }
 
   private void prepareData() throws IOException, MetadataException, WriteProcessException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg"));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg"));
     for (int i = 0; i < 10; i++) {
       for (int j = 0; j < 10; j++) {
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             new PartialPath("root.sg.device" + i + ".sensor" + j),
             TSDataType.INT64,
             TSEncoding.PLAIN,
@@ -206,9 +206,9 @@ public class SeqTsFileRecoverTest {
 
   private void prepareDataWithDeletion()
       throws IOException, MetadataException, WriteProcessException {
-    IoTDB.metaManager.setStorageGroup(new PartialPath("root.sg"));
+    IoTDB.schemaEngine.setStorageGroup(new PartialPath("root.sg"));
     for (int i = 0; i < 4; i++) {
-      IoTDB.metaManager.createTimeseries(
+      IoTDB.schemaEngine.createTimeseries(
           new PartialPath("root.sg.device" + i + ".sensor1"),
           TSDataType.INT64,
           TSEncoding.PLAIN,
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java
index d853276..7abe810 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/UnseqTsFileRecoverTest.java
@@ -108,7 +108,7 @@ public class UnseqTsFileRecoverTest {
         MeasurementSchema measurementSchema =
             new MeasurementSchema("sensor" + j, TSDataType.INT64, TSEncoding.PLAIN);
         schema.registerTimeseries(new Path(path.toTSFilePath().getDevice()), measurementSchema);
-        IoTDB.metaManager.createTimeseries(
+        IoTDB.schemaEngine.createTimeseries(
             path,
             measurementSchema.getType(),
             measurementSchema.getEncodingType(),
@@ -119,7 +119,7 @@ public class UnseqTsFileRecoverTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor4", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor4"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -128,7 +128,7 @@ public class UnseqTsFileRecoverTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor2", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor2"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
@@ -137,7 +137,7 @@ public class UnseqTsFileRecoverTest {
     schema.registerTimeseries(
         new Path(("root.sg.device99")),
         new MeasurementSchema("sensor1", TSDataType.INT64, TSEncoding.PLAIN));
-    IoTDB.metaManager.createTimeseries(
+    IoTDB.schemaEngine.createTimeseries(
         new PartialPath("root.sg.device99.sensor1"),
         TSDataType.INT64,
         TSEncoding.PLAIN,
diff --git a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
index 5f54ad3..d01fccf 100644
--- a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
+++ b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
@@ -122,7 +122,7 @@ public class EnvironmentUtils {
       BloomFilterCache.getInstance().clear();
     }
     // close metadata
-    IoTDB.metaManager.clear();
+    IoTDB.schemaEngine.clear();
     MetricsService.getInstance().stop();
     // delete all directory
     cleanAllDir();
@@ -157,7 +157,7 @@ public class EnvironmentUtils {
 
   /** disable memory control</br> this function should be called before all code in the setup */
   public static void envSetUp() throws StartupException {
-    IoTDB.metaManager.init();
+    IoTDB.schemaEngine.init();
     createAllDir();
     IAuthorizer authorizer;
     try {