我需要一个解决方案来在我的sql DB中以并发时间插入很多行。
我有一个规则,每次我在我的transaction表中插入数据时,我都需要一个由currentTime+transactionSource+sequenceNumber组成的惟一ID。我的问题是,当我使用Jmeter测试我的服务时,当并发插入进程达到3000行时,服务就会关闭。问题依赖于我生成的唯一ID的重复。所以,有一些重复的东西。在我的假设中,复制的发生是因为之前的一个插入过程还没有完成,但还有另一个插入过程。因此,它会生成唯一的ID副本。有没有人能给我一些建议,最好的方法是什么?谢谢。
发布于 2018-08-16 18:54:27
MySQL有三种很好的方法来确保id的唯一性:
auto_increment columnsuuid()uuid_short()使用它们!实现唯一id的最常见方法是第一种:
create table t (
t_id int auto_increment primar key,
. . .
)我强烈地,强烈地建议你不要维护你自己的身份。你得到了竞态条件(正如你所看到的)。您的代码的效率将低于数据库中的代码。如果需要单独的组件,可以将它们实现为表中的列。
换句话说,你的根本问题是你的“规则”。世界上有无数的数据库在没有这样的规则的情况下也能很好地工作。
发布于 2018-08-16 16:19:20
为什么不让数据库处理插入id,然后用包含所需格式的辅助字段更新行?如果你有副本,你总是可以把行id附加到这个标识符上,这样它就永远是唯一的。
https://stackoverflow.com/questions/51871068
复制相似问题