关于Delete的性能问题

Viewed 54

在看release的记录时,发现有这么一个操作。

就是通常我们加工数据时 先 delete 然后在insert 的操作。

但是 我看在删除的文档中有这么一个描述

说是如果频繁的删除,会对查询性能有影响。

所以这里就有几个疑问,如果遇到需要先删除,然后在插入的需求。

问题1:比如每天都需要做这种数据加工,使用 delete xxxxx ; insert into select xxxx 这种方式可行吗 ? 若不可行,应该使用什么方式 ?
问题2:这里所说的delete 会影响查询性能,是指在删除时对查询有影响,还是说删除后,会一直存在影响?并且删除的越多,影响越严重,随着删除的不断累积,查询性能会严重受影响 ?

1 Answers

问题1: 先 delete 再 insert,只要不是很频繁,比如实时导入这种场景,查询性能通常可以满足需求。当然如果需要频繁更新数据,更建议用 merge on write 的主键模型,参考文档:

https://doris.apache.org/docs/dev/data-operate/update/update-overview?_highlight=mow#update-in-primary-key-unique-model

问题2: 在 delete 后一定时间内影响性能,等做完 compaction 把版本合并后就恢复如初了,所以只要不是太频繁问题不大。