mysql - 插入数据库的查询优化
问题描述
我需要一个解决方案来在我的 sql DB 中同时插入大量行。
我有一条规则,每次插入事务表时,我都需要一个由 currentTime+transactionSource+sequenceNumber 组成的唯一 ID。我的问题是,当我使用 Jmeter 测试我的服务时,当并发插入过程达到 3000 行时,服务就会关闭。问题依赖于我生成的唯一 ID 的重复。所以,有一些重复。在我的假设中,重复发生是因为先前的插入过程尚未完成,但还有另一个插入过程。因此,它会生成唯一的 ID 重复。谁能给我建议最好的方法是什么?谢谢你。
解决方案
MySQL 有三个绝妙的方法来确保一个 id 是唯一的:
auto_increment
列uuid()
uuid_short()
使用它们!实现唯一 id 的最常见方法是第一种:
create table t (
t_id int auto_increment primar key,
. . .
)
我强烈,强烈建议您不要维护自己的身份。你会得到比赛条件(如你所见)。您的代码将比数据库中的代码效率低。如果您需要单独的组件,您可以将它们实现为表中的列。
换句话说,您的根本问题是您的“规则”。世界上有数以万计的数据库在没有这样的规则的情况下运行良好。