我需要一个解决方案来在我的 SQL 数据库中同时插入大量行。
我有一个规则,每次插入交易表时,我都需要一个由 currentTime+transactionSource+sequenceNumber 组成的唯一 ID。我的问题是,当我使用 Jmeter 测试我的服务时,当并发插入进程达到 3000 行时,服务就会关闭。问题在于我生成的唯一 ID 的重复。所以,有一些重复。在我的假设中,重复发生是因为先前的插入过程尚未完成,但还有另一个插入过程。因此,它会生成唯一的 ID 重复项。 谁能给我建议最好的方法是什么?谢谢。
最佳答案
MySQL 有三种奇妙的方法来确保 id 是唯一的:
自动增量
列uuid()
uuid_short()
使用它们!实现唯一 id 的最常见方法是第一种:
create table t (
t_id int auto_increment primar key,
. . .
)
我强烈建议您不要维护自己的 id。你会得到竞争条件(正如你所看到的)。您的代码的效率将低于数据库中的代码。如果您需要单独的组件,可以将它们实现为表中的列。
换句话说,你的根本问题是你的“规则”。世界上有无数的数据库在没有这样的规则的情况下也能正常工作。
关于mysql - 插入数据库的查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51871068/