mysql - 插入数据库的查询优化

标签 mysql sql database optimization

我需要一个解决方案来在我的 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/

相关文章:

PHP - 指定端口设置的 MySQL 连接

sql - 在 MDX 查询上添加过滤器

mysql - 插入触发器: issue with constraint

sql - 在多个列上使用索引

mysql - 如何找到sql选择的字符的位置

java - 如何在 LIKE 运算符中使用占位符 '?'?

php - Mysql无法插入记录

mysql - 使用具有相同 where 子句的 2 个子查询合并 SQL 查询

database - 使用虚拟列导出架构

mysql - 将大型分隔文件导入 MySQL 表并添加新标识符