然后其他大部分讲的都还是上面我所说的两种情况。
然后就寻求帮助,问了好多人后,都说,如果用uuid主键做排序的话,再分页肯定不可能的,就让我把SQL发给他们,看了一下,得出结论如下:
然后按照这个修改后,依旧还是重复,然后就又请教大佬
然后我又再程序中加了一步,去重的操作
再尝试依旧不行,还是主键重复问题,
对,肯定是我太着急了,一心都以为是数据重复的问题,没有想其他的,然后我就静了静心,加了处理保存了插入的id,然后再执行到这一步的时候,提示主键重复,我就拿程序重复的数据,开始查id,结果发现并未重复,好了,那就可以排除分页数据重复问题了
询问度娘以后,找到相似的问题如下
mysql主键设置成auto_increment时,进行并发性能测试出现主键反复Duplicate entry'xxx'for key'PRIMARY' 解决方法: 在my.cnf的[mysqld]片段中加入设置innodb_autoinc_lock_mode=0 同一时候注意调大jdbc的活跃链接数,如设置 jdbc.maxActive=300,由于设置innodb_autoinc_lock_mode=0可能导致链接过多。 注意,这样的方式仅仅须要在并发性能测试时设置,由于这样的方式在插入记录时需进行全表锁定,性能较差,平时生产环境中仅仅需使用默认的设置innodb_autoinc_lock_mode=1就可以,mysql的官方文档有说明: 1、innodb_autoinc_lock_mode=0(“traditional” lock mode) 这样的方式就和mysql5.1.22曾经一样,这样的方式的特点就是“表级锁定”,并发性较差 2、innodb_autoinc_lock_mode=1(“consecutive” lock mode) 这样的方式是新版本号中的默认方式,推荐使用,并发性相对较高,特点是“consecutive”,即保证同一条insert语句中新插入的auto_increment id都是连续的。 这样的模式下: “Simple inserts”:直接通过分析语句,获得要插入的数量,然后一次性分配足够的auto_increment id,仅仅会将整个分配的过程锁住。 “Bulk inserts”:由于不能确定插入的数量,因此使用和曾经的模式同样的表级锁定。 “Mixed-mode inserts”:直接分析语句,获得最坏情况下须要插入的数量,然后一次性分配足够的auto_increment id,仅仅会将整个分配的过程锁住。须要注意的是,这样的方式下,会分配过多的id,而导致”浪费“。