首页 > 解决方案 > 插入数据库的查询优化

问题描述

我需要一个解决方案来在我的 sql DB 中同时插入大量行。

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

标签: mysqlsqldatabaseoptimization

解决方案


MySQL 有三个绝妙的方法来确保一个 id 是唯一的:

  • auto_increment
  • uuid()
  • uuid_short()

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

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

我强烈,强烈建议您不要维护自己的身份。你会得到比赛条件(如你所见)。您的代码将比数据库中的代码效率低。如果您需要单独的组件,您可以将它们实现为表中的

换句话说,您的根本问题是您的“规则”。世界上有数以万计的数据库在没有这样的规则的情况下运行良好。


推荐阅读