删除
目录
删除
作为一个时间序列数据库,InfluxDB 并未针对交互式删除进行优化。通常,数据会根据桶的保留策略过期而被删除。因此,与写入和查询相比,InfluxDB 中的删除操作计算成本高且速度慢。可以删除未因保留策略而过期的数据,但必须注意性能影响。
您可以使用以下任一方法删除时间序列数据:
- InfluxDB CLI 命令 influx delete。
- InfluxDB v2 API delete 端点。
使用 InfluxDB CLI 从特定时间范围、测量值和标签内的桶中删除数据。例如,如果我们想从 Air Sensor 示例数据集中删除一些传感器数据,我们可以使用以下命令:
influx delete --bucket 'Air sensor sample dataset' \
--start 'rfc3339time1' \
--stop 'rfc3339time2' \
--predicate '_measurement="airSensors" AND sensor_id="TM0100"'
请记住,rfc3339time
时间戳的格式为 %Y-%m-%dT%H:%M:%SZ
,例如:2020-03-01T00:00:00Z
。执行删除操作后,以下查询将不返回任何结果:
from(bucket: "Air sensor sample dataset")
|> range(start: rfc33391, stop: rfc33392)
|> filter(fn: (r) => r._measurement == "airSensors")
|> filter(fn: (r) => r.sensor_id == "TM0100")
同样,您可以使用 InfluxDB v2 API 删除相同的数据:
curl -i -XPOST '<yourInflxDBURL>api/v2/delete?orgID=<yourOrgID>bucket=<yourBucketID>\
--header 'Authorization: Token <yourToken>' \
--data-raw '{
"start": "rfc3339time1",
"stop": "rfc3339time2",
"predicate": '_measurement=\"airSensors\" and sensor_id=\"TM0100\"'
}'
请记住,您需要将 <yourInflxDBURL>
替换为:
- InfluxDB OSS URL
- 默认情况下为
[https://127.0.0.1:8086/](https://127.0.0.1:8086/)
- 默认情况下为
- 来自您所在区域和提供商的 InfluxDB Cloud URL
- 例如
https://us-west-2-1.aws.cloud2.influxdata.com/
- 例如
请回顾第一部分,了解如何获取您的 <yourbucketid>
和 <yourorgid>
。
删除桶
如上所述,最常见的删除数据方法是简单地让数据根据保留策略过期。但是,有时您可能希望删除大量数据。这可以通过删除整个桶来实现。如果您需要保留桶中的某些数据,可以使用以下步骤:
- 创建一个新桶,使用任意名称。
- 创建一个查询以检索您想要保留的数据,并将其复制到新桶中。
- 删除原始桶。
- 将新桶重命名为原始桶名称,以便现有查询继续工作(假设查询使用桶名称而不是桶 ID)。