.move extents 命令

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer

此命令在特定数据库的上下文中运行。 它将指定的区从源表移到目标表。

注意

  • 若要详细了解区,请参阅区(数据分片)概述。
  • 对于所有源盘区,.move 命令要么完成,要么失败。 不会出现部分完成或失败的结果。

权限

必须至少具有源表和目标表的 Table Admin 权限。

限制

  • 源表和目标表都必须位于上下文数据库中。
  • 源表中的所有列均应以相同的名称和数据类型存在于目标表中。
  • 如果目标表是具体化视图的源表,则命令可能会失败,因为具体化视图不会处理移动盘区中的记录。 在具体化视图限制页中查看更多详细信息。 可以通过在移动命令期间设置新的引入时间来解决此错误。 请参阅setNewIngestionTime中的 。

语法

移动所有区:

.move [async] extentsallfromtablesourceTableNametotableDestinationTableName [ with(PropertyName=PropertyValue [, ...])]

移动 ID 指定的区:

.move[async] extentsfromtableSourceTableNametotableDestinationTableName [ with(PropertyName=PropertyValue [, ...])] (GUID [, ...])

移动查询结果指定的区:

.move [async] extentstotableDestinationTableName [ with(PropertyName=PropertyValue [,...])] <|查询

详细了解语法约定。

参数

客户 类型 必需 说明
async string 如果指定此参数,命令将以异步方式运行。
SourceTableName string ✔️ 包含要移动的区的表的名称。
DestinationTableName string ✔️ 要将区移动到其中的表的名称。
PropertyName、PropertyValue string 一个或多个支持的属性。
查询 string ✔️ 此 Kusto 查询语言 (KQL) 查询的结果指定源表以及要从中移动的盘区 ID。 应返回一个具有“ExtentId”和“TableName”列的记录集。

支持的属性

属性名称 类型 必需 说明
setNewIngestionTime bool 如果设置为 true,则会为要移动的区内的所有记录分配一个新的引入时间。 当记录应由依赖于数据库游标的工作负荷(例如具体化视图和连续数据导出)处理时,这很有用。
extentCreatedOnFrom datetime ✔️ 应用于在此时间点之后创建的区。
extentCreatedOnTo datetime ✔️ 应用于在此时间点之前创建的区。

注意

为了提高性能,请将 extentCreatedOnFrom 和 extentCreatedOnTo 参数设置为尽可能小的范围。

返回

同步运行此命令时,将返回具有以下架构的表。

输出参数 类型 说明
OriginalExtentId string 源表中原始盘区的唯一标识符 (GUID),该标识符已移至目标表。
ResultExtentId string 已从源表移至目标表的结果区的唯一标识符 (GUID)。 失败时 -“已失败”。
详细信息 string 包括失败详细信息(如果操作失败)。

异步运行此命令时,将返回操作 ID (GUID)。 使用 .show operations 命令监视操作的状态,使用 .show operation details 命令检索成功的执行的结果。

示例

移动所有区

将表 MyTable 中的所有区都移到表 MyOtherTable:

.move extents all from table MyTable to table MyOtherTable

在指定的创建时间范围内移动两个特定盘区

在指定的创建时间范围内将两个特定盘区(通过其盘区 ID)从表 MyTable 移到表 MyOtherTable:

.move extents from table MyTable to table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) (AE6CD250-BE62-4978-90F2-5CB7A10D16D7,399F9254-4751-49E3-8192-C1CA78020706)

从特定表移动指定创建时间范围内的所有盘区

将指定创建时间范围内的所有盘区从特定表(MyTable1、MyTable2)移到表 MyOtherTable:

.move extents to table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <| .show tables (MyTable1,MyTable2) extents

移动所有带设置的新引入时间的盘区

.move extents all from table MyTable to table MyOtherTable with (setNewIngestionTime=true)

示例输出

OriginalExtentId ResultExtentId 详细信息
e133f050-a1e2-4dad-8552-1f5cf47cab69 0d96ab2d-9dd2-4d2c-a45e-b24c65aa6687
cdbeb35b-87ea-499f-b545-defbae091b57 a90a303c-8a14-4207-8f35-d8ea94ca45be
4fcb4598-9a31-4614-903c-0c67c286da8c 97aafea1-59ff-4312-b06b-08f42187872f
2dfdef64-62a3-4950-a130-96b5b1083b5a 0fb7f3da-5e28-4f09-a000-e62eb41592df