我在注册期间使用 mySql 数据库将用户详细信息存储在表User中。
用户表具有列 ID 自动增量主键。
我知道如果两个用户同时注册,两个请求会在数据库中排队。插入时在桌子上放一把锁。
15000个用户同时注册如何处理?所有这些请求都在数据库中排队吗?如果是,它会降低网页性能,对吗?我该如何扩展它?
我在注册期间使用 mySql 数据库将用户详细信息存储在表User中。
用户表具有列 ID 自动增量主键。
我知道如果两个用户同时注册,两个请求会在数据库中排队。插入时在桌子上放一把锁。
15000个用户同时注册如何处理?所有这些请求都在数据库中排队吗?如果是,它会降低网页性能,对吗?我该如何扩展它?
关键是要理解“同时”是什么意思。
即使有 15,000 人在同一分钟内使用他们的浏览器进行注册,其中超过少数人同时在 MySQL 中执行 INSERT 的可能性也非常低。
我在公司管理一些相当大且繁忙的 MySQL 实例。我查看了进程列表,但我很少看到有更多的 20 个线程同时执行。即使在每小时处理数百万个事务的生产数据库上也是如此。
大多数时候,MySQL 中的线程处于空闲状态,等待连接到数据库的应用程序在 SQL 查询之间运行代码。通常会在进程列表中看到数百行显示“Sleep”,而实际上有 6-12 个线程正在执行 SQL 查询。
鉴于此,MySQL 不难按要求分配自增值。