insert到数据库的查询优化

s4chpxco  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(673)

我需要一个解决方案,在sqldb中同时插入大量行。
我有一个规则,每次我插入到我的事务表,我需要一个唯一的id,由currenttime+transactionsource+sequencenumber组成。我的问题是,当我使用jmeter测试我的服务时,当并发插入进程达到3000行时,服务就停止了。问题在于,我生成的唯一id的重复。所以,有一些重复。在我的假设中,重复发生是因为前一个插入过程尚未完成,但还有另一个插入过程。因此,它会生成唯一的id复制。谁能给我一个建议,用什么方法做这件事最好?谢谢您。

crcmnpdw

crcmnpdw1#

为什么不让数据库处理insert id,然后用包含所需格式的辅助字段更新行呢?如果有两个副本,则可以始终将行id附加到此标识符,以便它始终是唯一的。

dw1jzc5e

dw1jzc5e2#

mysql有三种很好的方法来确保id的唯一性: auto_increment
uuid() uuid_short() 使用它们!实现唯一id的最常见方法是第一种:

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

我强烈建议你不要保留自己的身份证。你会得到比赛条件(如你所见)。您的代码的效率将低于数据库中的代码。如果需要单独的组件,可以将它们实现为表中的列。
换句话说,你的根本问题是你的“规则”。世界上有无数的数据库在没有这样一个规则的情况下工作得非常好。

相关问题