在表格存储中,您可以根据主键信息直接批量删除数据,或者通过配置数据生命周期(TTL)的方式自动删除过期数据。
数据删除后将不可恢复,请谨慎操作。
根据主键直接删除数据
表格存储支持根据主键信息批量删除数据。您可以在查询到待删除数据的主键信息后,通过调用 BatchWriteRow 接口批量删除数据。具体步骤如下:
根据实际情况选择合适的方式查询待删除数据的主键信息。
如果要删除指定主键范围内的数据,请调用 GetRange 接口,查询指定主键范围内的数据,并获取待删除数据的主键信息。具体操作,请参见读取数据。
如果要删除满足指定条件的数据,并且该数据表存在多元索引,请使用多元索引查询满足条件的数据,并获取待删除数据的主键信息。具体操作,请参见基础查询。
如果要根据非主键字段(如用户 ID、标签等)批量删除多张表中的关联数据,需要先查询满足条件数据的主键信息,再调用
BatchWriteRow批量删除。获取主键信息,可以选择以下任意一种方式:多元索引方案:为数据表创建多元索引,将非主键字段设置为 KEYWORD 类型。索引创建后需等待约 40~70 秒完成数据同步,之后可通过
TermQuery等查询接口检索获取主键信息。SQL JOIN 方案:为多张表创建 SQL 映射关系,使用 SELECT JOIN 关联查询获取主键信息。例如:
SELECT a.id AS qa_id, b.id AS ans_id FROM qa_table a JOIN ans_table b ON a.qaid = b.qaid WHERE a.qaid = 'qa001'
如果要删除数据表中所有数据,推荐您直接删除该数据表,然后重新创建一张配置相同的数据表。
您也可以调用 GetRange 接口,通过设置完整主键范围均为虚拟点INF_MIN(无穷小)和INF_MAX(无穷大)进行全表数据扫描,获取所有数据的主键信息。但是执行此操作会消耗较多计算资源,请谨慎使用。
调用 BatchWriteRow 接口,根据主键信息批量删除数据。具体操作,请参见写入数据。
说明虽然 BatchWriteRow 限制单次只能写入 200 行数据,但是您可以使用 TableStoreWriter 进行并发写操作。同时 SDK 支持异步删除,数据删除速度与用户业务侧的 CPU 和网络能力相关。关于并发写的更多信息,请参见使用 TableStoreWriter 进行高并发、高吞吐的数据写入。
配置TTL自动删除过期数据
数据生命周期是数据表的一个属性,即数据的保存时间。当属性列中数据的保留时间超过设置的TTL时,系统将自动异步清理该属性列中超过保留时间的数据。如果一行中所有属性列数据的保留时间均超过了TTL,则系统将自动异步清理该行数据。
具体步骤如下:
调用 UpdateTable 接口,修改数据表的TTL。
重要如果数据表已经创建多元索引或二级索引了,则要求索引的TTL值必须小于或等于数据表的TTL值。在修改数据表的TTL时,请确保新设置的TTL值符合此约束条件。
超过TTL的过期数据为无效数据,系统将自动执行异步清理操作。
即使系统还未删除数据,用户也无法读取对应数据。