У меня есть таблица БД, в которой в каждой строке есть случайно сгенерированный первичный ключ, сообщение и пользователь. У каждого пользователя есть около 10-100 сообщений, но есть от 10 до 50 тысяч пользователей.
Я пишу сообщения ежедневно для каждого пользователя за один раз. Я хочу выбросить старые сообщения для каждого пользователя, прежде чем писать новые, чтобы таблица была как можно меньше.
Прямо сейчас я эффективно делаю это:
delete from table where user='mk'
Затем напишите все сообщения для этого пользователя. Я вижу много споров, потому что у меня много потоков, делающих это одновременно.
У меня есть дополнительное требование сохранять самый последний набор сообщений для каждого пользователя.
У меня нет доступа к БД напрямую. Я пытаюсь угадать проблему, основываясь на некоторой обратной связи. Причина, по которой я сосредотачиваюсь на этом сценарии, заключается в том, что запрос на удаление показывает много времени ожидания (опять же, насколько мне известно), а также недавно добавленную функциональность.
Может кто-нибудь дать совет?
Было бы лучше:
select key from table where user='mk'
Тогда удалить отдельные строки оттуда? Я думаю, что это может привести к менее жестокой блокировке.