.drop extents 命令
适用于:✅Azure 数据资源管理器
从指定的数据库或表中删除区。
该命令有多个变体:在一个变体中,要删除的区由 Kusto 查询指定。 在其他变体中,区是通过使用下面所述的迷你语言指定的。
注意
数据分片称为“区”,所有命令都将“extent”或“extents”作为同义词使用。 有关盘区的详细信息,请参阅盘区(数据分片)概述。
注意
如果删除某个盘区,将删除此盘区中的所有行。 若要删除单个记录,请使用软删除。
权限
如果指定了 TableName,则必须至少具有表管理员权限才能运行此命令。
如果未指定 TableName,则必须至少具有数据库管理员权限才能运行此命令。
语法
使用查询删除区
.drop
extents
[whatif
] <|
Query
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
whatif |
string |
如果指定此项,则将报告盘区,而不是将其删除。 | |
查询 | string |
✔️ | 此 Kusto 查询语言 (KQL) 查询的结果指定源表以及要从中删除的盘区 ID。 应返回一个具有“ExtentId”和“TableName”列的记录集。 |
删除特定盘区或多个盘区
.drop
extents
(
ExtentIds)
from
TableName
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
ExtentIds | guid |
✔️ | 要删除的盘区的一个或多个逗号分隔的唯一标识符。 |
TableName | string |
要删除的盘区所在的表的名称。 |
按指定的属性删除区
.drop
extents
[older
N (days
| hours
)] from
(TableName | all
tables
) [trim
by
(extentsize
| datasize
) Size (MB
| GB
| bytes
)] [limit
LimitCount]
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
N | int |
✔️ | 删除存在时间超过 N 天/小时的盘区。 |
TableName | string |
要删除的盘区所在的表的名称 | |
大小 | int |
✔️ | 剪裁数据库中的数据,直到盘区总数与所需大小 (MaxSize) 匹配为止。 |
LimitCount | int |
✔️ | 应用于前 LimitCount 个盘区。 |
此命令支持仿真模式,该模式生成输出,就好像该命令已运行,但实际上并没有执行。 请使用 .drop-pretend
,而不是 .drop
。
返回
此命令返回包含以下信息的表。
输出参数 | 类型 | 说明 |
---|---|---|
ExtentId | string |
由于该命令而删除的 ExtentId |
TableName | string |
盘区所属的表名 |
CreatedOn | dateTime |
时间戳,它保留有关最初创建该区的时间的信息 |
例如,命令的返回值可能如下表所示。
区 ID | 表名称 | 创建时间 |
---|---|---|
43c6e03f-1713-4ca7-a52a-5db8a4e8b87d | TestTable | 2015-01-12 12:48:49.4298178 |
示例
删除特定区
使用盘区 ID 删除特定盘区。
.drop extent 609ad1e2-5b1c-4b79-90c0-1dec262e9f46 from Table1
删除多个盘区
使用盘区 ID 列表删除多个盘区。
.drop extents (609ad1e2-5b1c-4b79-90c0-1dec262e9f46, 310a60c6-8529-4cdf-a309-fe6aa7857e1d) from Table1
按创建时间删除所有区
从数据库 MyDatabase
的所有表中删除创建时间早于 10 天前的所有区
.drop extents <| .show database MyDatabase extents | where CreatedOn < now() - time(10d)
按创建时间删除某些区
删除表 Table1
和 Table2
中创建时间早于 10 天前的所有区
.drop extents older 10 days from tables (Table1, Table2)
使用 extent_id() 删除盘区
使用内置 extent_id()
函数从表中移除某个盘区。
.drop extents <|
StormEvents
| where EventId == '66144'
| summarize by ExtentId = extent_id(), TableName = "StormEvents"
仿真模式:显示哪些区会由该命令删除
注意
区 ID 参数不适用于此命令。
.drop-pretend extents older 10 days from all tables
从“TestTable”中删除所有区
.drop extents from TestTable
注意
如果启用了流式引入,则删除所有盘区不一定会删除表中的所有数据。 若要清除表的所有数据,请使用 .clear table data TestTable
。