两个问题。
1、你的应用逻辑就是这样的,所以才会出现这种情况,如若不然,则是程序出现了逻辑错误。
2、你说的运行缓慢,是和什么情况下做比较的?回答好自己这个问题,你可以做下监控,在执行插入动作的前后做一个数据库的snapshot,生成这个时间段内的awr报告。以此为基础来判断缓慢的原因。
这就是自己实现一个ID自增的东西。
比如的你有个公用类专门用来生成后面的数字,所有需要用到的方法都调用这个类的一个方法我们就叫它nextId吧,只要这个方法是线程安全的就可以了。
IdUtilsnextId()
int nextId() {
lock(this){
return thisid++;
}
}
应用启动的时候从数据库查询一下id的最大值并设置给工具类的id,让它接着增长就行了。
具体实现看你用什么语言。
请仔细阅读别人回答的是什么意思。想想oracle的sequence的实现,是不是类似?
如果遇到这个问题了有一个办法可以实现你的要求将读取存储过程的代码块加锁达到线程安全就OK了
怎么会呢
每个对象都只有一个锁标记,只有获得锁标记的进程才能执行里面的代码
不是几核的问题CPU看似可以处理很多请求其实一个时刻也只能处理一个请求因为它的速度相当快所以我们就觉得它是一次处理很多请求
首先你要确保数据存储是否有重复情况。
其次,如果是多表关联查询也会出现,比如,人员信息查询,关联到部门,一个部门有多个人是正常。
另外语法不正确也有可能的。
具体原因还是要看详细情况,光这一句话是判断不出来的。
以上就是关于oracle重复插入多条数据,甚至ID都是一样的,为什么会出现这种情况全部的内容,包括:oracle重复插入多条数据,甚至ID都是一样的,为什么会出现这种情况、mysql数据库insert插入重复问题、为什么Java程序在并发的情况下数据库会出现重复记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)