diff --git a/src/.vuepress/sidebar/V1.3.x/en.ts b/src/.vuepress/sidebar/V1.3.x/en.ts
index 5ef54a0..818c65b 100644
--- a/src/.vuepress/sidebar/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar/V1.3.x/en.ts
@@ -97,6 +97,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar/V1.3.x/zh.ts b/src/.vuepress/sidebar/V1.3.x/zh.ts
index 024e2c3..e62f674 100644
--- a/src/.vuepress/sidebar/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar/V1.3.x/zh.ts
@@ -85,6 +85,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar/V2.0.x/en-Table.ts b/src/.vuepress/sidebar/V2.0.x/en-Table.ts
index 14903f8..566f097 100644
--- a/src/.vuepress/sidebar/V2.0.x/en-Table.ts
+++ b/src/.vuepress/sidebar/V2.0.x/en-Table.ts
@@ -84,6 +84,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete-Data' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar/V2.0.x/en-Tree.ts b/src/.vuepress/sidebar/V2.0.x/en-Tree.ts
index 42df7c0..8e417c5 100644
--- a/src/.vuepress/sidebar/V2.0.x/en-Tree.ts
+++ b/src/.vuepress/sidebar/V2.0.x/en-Tree.ts
@@ -89,6 +89,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
index a681d47..70a6ebe 100644
--- a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
+++ b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts
@@ -77,6 +77,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete-Data' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar/V2.0.x/zh-Tree.ts b/src/.vuepress/sidebar/V2.0.x/zh-Tree.ts
index 589b77c..2333d0d 100644
--- a/src/.vuepress/sidebar/V2.0.x/zh-Tree.ts
+++ b/src/.vuepress/sidebar/V2.0.x/zh-Tree.ts
@@ -77,6 +77,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
index 1edccc9..95e61bb 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
@@ -106,6 +106,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
index ae5b24f..95030af 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
@@ -88,6 +88,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
index e62ec26..9c8e854 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts
@@ -88,6 +88,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete-Data' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/en-Tree.ts b/src/.vuepress/sidebar_timecho/V2.0.x/en-Tree.ts
index 2548b31..ecbfffc 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/en-Tree.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/en-Tree.ts
@@ -98,6 +98,7 @@
           children: [
             { text: 'Delete Data', link: 'Delete-Data' },
             { text: 'TTL Delete Data', link: 'TTL-Delete' },
+            { text: 'SpaceTL Delete Data', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
index 7160527..955d52a 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts
@@ -79,6 +79,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete-Data' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Tree.ts b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Tree.ts
index 121ee1a..354fb06 100644
--- a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Tree.ts
+++ b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Tree.ts
@@ -80,6 +80,7 @@
           children: [
             { text: '数据删除', link: 'Delete-Data' },
             { text: '数据保留时间', link: 'TTL-Delete' },
+            { text: 'SpaceTL 删除', link: 'SpaceTL-Delete' },
           ],
         },
       ],
diff --git a/src/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..1a16a9c
--- /dev/null
+++ b/src/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..1a16a9c
--- /dev/null
+++ b/src/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..c3e9a8e
--- /dev/null
+++ b/src/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB(V1.3.2+) supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..c3e9a8e
--- /dev/null
+++ b/src/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB(V1.3.2+) supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..1a16a9c
--- /dev/null
+++ b/src/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md b/src/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..1a16a9c
--- /dev/null
+++ b/src/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL Delete
+
+## 1. Overview
+
+IoTDB supports configuring the SpaceTL deletion policy through parameters: when the storage space of the last-level storage tier (object storage space is considered unlimited) is insufficient, users can choose whether to trigger the SpaceTL deletion mechanism to free up space.
+
+Note: This mechanism only deletes files in the last storage tier.
+
+## 2. Parameter Introduction
+
+| Parameter Name            | Description                                                                                                                                                                    | Default Value | Effective Mode |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------- |
+| `dn_tier_full_policy` | Behavior policy when the storage space of the last-level storage tier is insufficient. Configurable options:1. NULL: Take no action.2. DELETE: Enable SpaceTL data deletion. | NULL          | Hot Reload     |
+
+Parameter Explanation:
+
+* If the last-level storage tier includes object storage, SpaceTL will not be triggered.
+* This parameter works in conjunction with the `dn_default_space_usage_thresholds`parameter. SpaceTL is triggered when the available space of the last-level storage tier falls below the `space_usage_thresholds`. By default, deletion begins when disk space usage reaches 85% and continues until usage drops below 85%.
+
+## 3. Usage Example
+
+In a three-tier storage setup, when the storage space of the last tier reaches 85%, the SpaceTL deletion mechanism is triggered to start deleting files.
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+In this example, three tiers of storage are configured as follows:
+
+| Tier Level | Storage Directories           | Data Retention Time                                 | Disk Storage Space Threshold                                                            |
+| ------------ | ------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| Tier 1     | `/data1/data`             | Retained for 1 day; exceeded data moves to Tier 2   | Data moves to Tier 2 when disk usage reaches 75%                                        |
+| Tier 2     | `/data2/data,/data3/data` | Retained for 10 days; exceeded data moves to Tier 3 | Data moves to Tier 3 when disk usage reaches 80%                                        |
+| Tier 3     | `/data4/data`             | No expiration time; data is stored indefinitely     | Deletes some files when disk usage reaches 85% (due to`dn_tier_full_policy=DELETE`) |
diff --git a/src/zh/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..62b7a56
--- /dev/null
+++ b/src/zh/UserGuide/Master/Table/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
diff --git a/src/zh/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..62b7a56
--- /dev/null
+++ b/src/zh/UserGuide/Master/Tree/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
diff --git a/src/zh/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..2bcab3f
--- /dev/null
+++ b/src/zh/UserGuide/V1.3.x/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB(V1.3.2+) 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
diff --git a/src/zh/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..2bcab3f
--- /dev/null
+++ b/src/zh/UserGuide/dev-1.3/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB(V1.3.2+) 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
diff --git a/src/zh/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..62b7a56
--- /dev/null
+++ b/src/zh/UserGuide/latest-Table/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
diff --git a/src/zh/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md b/src/zh/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md
new file mode 100644
index 0000000..62b7a56
--- /dev/null
+++ b/src/zh/UserGuide/latest/Basic-Concept/SpaceTL-Delete.md
@@ -0,0 +1,89 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+        http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# SpaceTL 删除
+
+## 1. 概述
+
+IoTDB 支持通过参数配置 SpaceTL 删除策略：即当最后一级存储层（对象存储空间被视为无限）的存储空间不足时，可选择是否触发 SpaceTL 删除机制以释放空间。
+
+注意：该机制仅会删除最后一个存储层中的文件。
+
+## 2. 参数介绍
+
+| 参数名                 | 描述                                                                                                    | 默认值 | 生效方式 |
+| ------------------------ | --------------------------------------------------------------------------------------------------------- | -------- | ---------- |
+| dn\_tier\_full\_policy | 最后一级存储层存储空间不足时的行为策略。可配置：1. NULL：不做任何处理1. DELETE：开启 SpaceTL 删除数据。 | NULL   | 热加载   |
+
+参数说明：
+
+* 若最后一级存储层包含**对象存储**则不触发 SpaceTL
+* 该参数和 dn\_default\_space\_usage\_thresholds 参数联动，当最后一级存储层的可用空间低于 space\_usage\_thresholds 时触发 SpaceTL；默认当磁盘空间占用到达 85% 的时候开始删除直至空间占用降到 85% 以下才会停止
+
+## 3. 使用示例
+
+以三级存储为例，当最后一级存储空间到达85%时，触发 SpaceTL 删除机制开始删除文件。
+
+```Properties
+# data dirs
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
+# If it is absolute, system will save the data in exact location it points to.
+# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
+# If there are more than one directory, please separate them by commas ",".
+# If tiered storage is enabled, please separate directories of different tiers by semicolons ";".
+# Use keyword OBJECT_STORAGE to denote object storage media, object storage can only exist on the last tier and must have local dirs in the front tiers.
+# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
+# effectiveMode: hot_reload
+# For windows platform
+# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
+# dn_data_dirs=data\\datanode\\data
+# For Linux platform
+# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
+dn_data_dirs=/data1/data;/data2/data,/data3/data;/data4/data
+
+# Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier.
+# Negative value means the tier TTL is unlimited.
+# effectiveMode: restart
+# Datatype: long
+# Unit: ms
+tier_ttl_in_ms=86400000;864000000;-1
+
+# Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.
+# If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";".
+# effectiveMode: hot_reload
+# Datatype: double(percentage)
+dn_default_space_usage_thresholds=0.75;0.8;0.85
+
+# How to deal with the last tier?s data when its used space has been higher than its dn_default_space_usage_thresholds.
+# The info of the two policies are as follows:
+# effectiveMode: hot_reload
+# 1. NULL: do nothing.
+# 2. DELETE: delete the oldest data.
+dn_tier_full_policy=DELETE
+```
+
+在该示例中，共配置了三个层级的存储，具体为：
+
+| 层级   | 存储目录                | 数据保留时间                      | 磁盘存储空间阈值                                                 |
+| -------- | ------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
+| 层级一 | /data1/data             | 只保留 1 天，超过后会移动到第二级 | 磁盘达到 75% 会移动部分文件到第二级                              |
+| 层级二 | /data2/data,/data3/data | 只保留 10 天，超过后到第三级      | 磁盘达到 80% 会移动部分文件到第三级                              |
+| 层级三 | /data4/data             | 没有过期时间，会一直存储          | 磁盘达到 85% 会删除部分文件（因为dn\_tier\_full\_policy=DELETE） |
