項目中有一張表是記錄人員,在每個新用戶調用接口認證通過了之后,會有一個往該表插入這個新用戶信息的操作。
但是在線上環境中,發現該表的自增id不連續,且間隔都是差了2,比如上一個人的id是10,下一個人的id就是12,而在前端頁面中,一個用戶認證通過后,會調用3個接口,初步排查是MySQL並發操作導致了自增id不連續的情況
在這篇文章中,列舉了導致自增id不連續的幾個原因,這次遇到的就是第一種情況,因為個人的信息中我設置了唯一索引:
https://www.jianshu.com/p/957f605a646c
<1>、唯一鍵沖突是導致自增主鍵id不連續的第一種原因
<2>、事務回滾是導致自增主鍵id不連續的第二種原因
<3>、批量申請自增id的策略是導致自增主鍵id不連續的第三種原因
在這篇文章中提到了MySQL默認的innodb_autoinc_lock_mode=1,當innodb_autoinc_lock_mode=1和innodb_autoinc_lock_mode=2的情況下,自增id可能會出現不連續
在innodb_autoinc_lock_mode=0的時候,自增id是連續的,但是會導致鎖表,影響並發性能
https://www.cnblogs.com/zhoujinyi/p/3433823.html
https://www.jianshu.com/p/369559f399d0
解決方法:
1.https://blog.csdn.net/yang5726685/article/details/78161105