如何处理多个插入到生成自动增量主ID的表中?

问题描述 投票:0回答:1

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

用户表具有列ID自动增量主键。

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

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

mysql database batch-processing auto-increment database-locking
1个回答
0
投票

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

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

我在公司管理一些非常繁忙的MySQL实例。我看过程表,但我很少看到20个并发执行的线程。即使是每小时处理数百万笔交易的生产数据库。

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

鉴于此,MySQL并不难以按照要求的速度快速分配自动增量值。

© www.soinside.com 2019 - 2024. All rights reserved.