失败事务mysql的可伸缩性

时间:2010-10-14 20:12:52

标签: mysql transactions scalability

我有一个表,可以将消息从一个用户存储到另一个用户。消息(USER_ID,friend_id,消息,CREATED_DATE)。我的主键是(friend_id,created_date)。这可以防止重复消息(AFAIK),因为它们将无法插入。

现在这是可以的,因为我的代码每个用户一次生成大约20个这样的查询,而我只有一个用户。但是,如果有数百或数千个用户会在我的数据库中创建所有失败事务的瓶颈吗?如果我能做些什么来改善这种情况呢?

编辑: 简而言之的问题是我应该使用主键约束,在mysql之外检查,还是使用其他一些mysql功能来保留重复数据库的数据?

1 个答案:

答案 0 :(得分:1)

应该没问题,因为mysql会在内部执行主键查找并忽略记录(我假设你正在使用INSERT IGNORE)。如果在插入之前检查它们是否存在,则在插入时mysql仍会再次检查。这意味着如果大多数插入成功,那么您将保存额外的检查。如果绝大多数插入失败(不太可能),那么不发送不必要数据的节省可能会超过偶尔的重复检查。