我有一个数据库表,其中每一行都有一个随机生成的主键、一条消息和一个用户。每个用户大约有 10-100 条消息,但有 10k-50k 用户。
我每天一次为每个用户写消息。我想在编写新消息之前为每个用户丢弃旧消息,以使表格尽可能小。
现在我有效地做到了这一点:
delete from table where user='mk'
然后为该用户编写所有消息。我看到很多争论,因为我有很多线程同时在做这件事。
我确实有一个额外的要求,即为每个用户保留最新的一组消息。
我无法直接访问数据库。我试图根据一些二手反馈来猜测问题。我关注这种情况的原因是删除查询显示了很多等待时间(再次 - 据我所知),而且它是一个新添加的功能。
任何人都可以提供任何建议吗?
是否会更好:
select key from table where user='mk'
然后从那里删除个别行?我认为这可能会导致不那么残酷的锁定。