mysql中insert_id受并发的影响有多大?

haixia9060
  • 679

用户插入数据后获取自增长的id, $db->insert_id。

如果一旦出现并发的情况,还能否获得准确的id?

回复
阅读 1.1k
5 个回答

不受影响,insert_id与特定链接关联,它返回的是特定连接上一次执行insert操作的id
不同的数据库连接同时insert也互不干扰insert_id

打个比方
php文件内容为

<?php
    $ip=$_SERVER["REMOTE_ADDR"];;
    echo $ip;

A.用户,B用户,他们同时打开 A用户会echo到B用户的值吗?

做redis队列,然后从redis逐条存入mysql,获取id再返回给相应用户,并发量大的情况下可以限制几秒类操作一次,几秒内操作一次,不过用户就需要等几秒了

SQL server 里的 @@IDENTITY 是线程安全的。

不会出现有:

插入后再查询一次获得的可不一定是正确的ID,如果两个用户同时插入了数据,顺序是:
user1: do insert
user2: do insert
user1: do query
user2: do query

user1得到的id是user2的


这样的情况。

可以查SQL server的帮助。

mysql的锁是由mysql去维护的,对于主键id的insert,跟语言没关系。不用担心重复的问题。

你知道吗?

宣传栏