如何处理到表中的多个插入,这些插入会生成自动递增的主ID?

时间:2019-04-24 18:07:47

标签: mysql database batch-processing auto-increment database-locking

我正在使用mySql数据库在注册过程中将用户详细信息存储在表 User 中。

用户表的列ID为 自动增量主键

我了解如果两个用户同时注册,则两个请求在数据库中排队。一次插入时在桌子上放一把锁。

当15000个用户同时注册时,我该如何处理?所有这些请求都在数据库中排队?如果是,它会降低网页性能,对吗?如何缩放?

1 个答案:

答案 0 :(得分:0)

关键是要了解“同时”的含义。

即使有15,000人在同一分钟内使用他们的浏览器进行注册,也很可能只有少数人同时在MySQL中执行INSERT。

我在公司管理一些非常大且繁忙的MySQL实例。我看了进程列表,但是很少看到同时执行的20个线程。甚至在每小时每小时处理数百万笔交易的生产数据库中。

大多数情况下,MySQL中的线程处于空闲状态,等待连接到数据库的应用程序在SQL查询之间在其端运行代码。在进程列表中有数百行显示“休眠”是很常见的,而实际上有6-12个线程实际上在执行SQL查询。

鉴于此,对于MySQL而言,设法自动分配自动增量值并不困难。