查询优化以插入数据库

时间:2018-08-16 06:44:53

标签: mysql sql database optimization

我需要一种解决方案,以便在并发时间内在sql DB中插入很多行。

我有一条规则,每次插入交易表时,我都需要一个由currentTime + transactionSource + sequenceNumber组成的唯一ID。我的问题是,当我使用Jmeter测试服务时,当并发插入过程最多达到3000行时,该服务将关闭。问题取决于我生成的唯一ID的重复。因此,有一些重复项。在我的假设中,重复发生是因为先前的插入过程尚未完成,但是还有另一个插入过程。因此,它会生成唯一的ID重复。 谁能以最好的方式给我建议?谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不让数据库处理插入ID,然后使用包含所需格式的辅助字段更新行?如果您有重复项,则始终可以将行ID附加到此标识符上,这样它将始终是唯一的。

答案 1 :(得分:0)

MySQL有三种很棒的方法来确保id是唯一的:

  • auto_increment
  • uuid()
  • uuid_short()

使用它们!实现唯一ID的最常见方法是第一个:

create table t (
    t_id int auto_increment primar key,
    . . .
)

我强烈建议您不要保留自己的ID。您将获得比赛条件(如您所见)。您的代码将比数据库中的代码效率低。如果需要单独的组件,则可以在表中将其作为来实现。

换句话说,您的基本问题是您的“规则”。没有这样的规则,世界上有成千上万的数据库可以很好地运行。