我正在使用mySql数据库在注册期间将用户详细信息存储在表User中。
用户表具有列ID自动增量主键。
我理解,如果两个用户同时注册,则两个请求在数据库中排队。插入时将锁放在桌子上。
当15000个用户同时注册时如何处理?所有这些请求都在数据库中排队?如果是,它会减慢网页性能吗?我该如何扩展它?
关键是要理解“同时”的含义。
即使有15,000人在同一分钟内使用他们的浏览器进行注册,但是很可能只有少数人同时在MySQL中执行INSERT。
我在公司管理一些非常繁忙的MySQL实例。我看过程表,但我很少看到20个并发执行的线程。即使是每小时处理数百万笔交易的生产数据库。
大多数情况下,MySQL中的一个线程处于空闲状态,等待连接到数据库的应用程序在SQL查询之间运行代码。通常会看到进程列表中有数百行表示“睡眠”,而有6-12个线程实际执行SQL查询。
鉴于此,MySQL并不难以按照要求的速度快速分配自动增量值。