如果两个用户同时注册一个帐户,MYSQL是否自动递增?

如果两个用户同时注册一个帐户,MYSQL是否自动递增?,mysql,Mysql,我只是想知道如果两个用户同时注册一个帐户会发生什么。 自动增量id号是相同的还是不同的?自动增量锁定 自动递增主键的便利性涉及到与并发性的一些折衷。在最简单的情况下,如果一个事务正在向表中插入值,则任何其他事务都必须等待自己向该表中插入值,以便第一个事务插入的行接收连续的主键值。InnoDB包括优化和InnoDB_autoinc_lock_mode选项,因此您可以选择如何在可预测的自动增量值序列和插入操作的最大并发性之间进行权衡 如果是通过一个网站,那么一次只可能有一个连接(好的,有负载平衡之

我只是想知道如果两个用户同时注册一个帐户会发生什么。
自动增量id号是相同的还是不同的?

自动增量锁定

自动递增主键的便利性涉及到与并发性的一些折衷。在最简单的情况下,如果一个事务正在向表中插入值,则任何其他事务都必须等待自己向该表中插入值,以便第一个事务插入的行接收连续的主键值。InnoDB包括优化和InnoDB_autoinc_lock_mode选项,因此您可以选择如何在可预测的自动增量值序列和插入操作的最大并发性之间进行权衡


如果是通过一个网站,那么一次只可能有一个连接(好的,有负载平衡之类的事情,但这里不要太复杂),理论上不会发生

假设有多个连接,则发生的情况取决于数据库使用的存储引擎。MyISAM实现表锁,而InnoDB实现行锁。两者都应该确保一次只能获得一个id


另请参见MySQL中的

,自动递增功能保证表中的每一行都有一个唯一的数字。按照MySQL的设置方式,它使用联锁来序列化这些递增操作:也就是说,在开始另一个操作之前先完成一个操作。因此,即使它们在同一时刻以某种方式呈现给服务器,数字也会有所不同


这种技术有一个小缺点。如果您尝试几乎同时插入多行,则自动递增序列号的顺序可能(极不可能,但也有可能)与您期望的顺序不同。服务器必须先选择一个,从应用程序程序员的角度来看,服务器可以任意选择。也就是说,它被允许以一种形式上不可预测的方式进行选择。

极不可能,一个总是在另一个之前。这将是不同的。@daniel IF*相同的时间意味着非常精确的/瞬间/毫秒,或者如果两个同时命中,就好像只有在CERN中才能找到某种精度,你是什么意思?我认为无论你想做什么,你都想得太多了。你不仅不可能同时完成两个这样的动作,而且由于内部计算的方式,从科学上讲,不可能得到两个相同的自动增量。底线是你绝对不必担心它