大并发情况下,避免竞争数据库中同一个资源的规避方法
2011-11-08 10:17
387 查看
1、用select ... for update nowait;如果锁定出现异常,则在外围捕捉,同时循环加1,试图去锁定下一哥资源。
2、用序列:大并发情况下,不同请求进入函数得到序列号不同来选定不同的数据资源。类似于下面这样的代码
db.SetSQL("select SEQ_SELECT_NUMBER.nextval cur_seq_pos from dual");
db.Open();
db.Next();
iNumSeq = db.GetInt("cur_seq_pos");
snprintf(pszPagedSQL, CIMLenDef::IM_SQL_LEN,
" select * from (select rownum row_num,t1.* from (%s) t1 where rownum<:iMaxCount+1) "
" where row_num=iNumSeq ",
pszSQL);
2、用序列:大并发情况下,不同请求进入函数得到序列号不同来选定不同的数据资源。类似于下面这样的代码
db.SetSQL("select SEQ_SELECT_NUMBER.nextval cur_seq_pos from dual");
db.Open();
db.Next();
iNumSeq = db.GetInt("cur_seq_pos");
snprintf(pszPagedSQL, CIMLenDef::IM_SQL_LEN,
" select * from (select rownum row_num,t1.* from (%s) t1 where rownum<:iMaxCount+1) "
" where row_num=iNumSeq ",
pszSQL);
相关文章推荐
- 原因分析如下: 遇到这种情况,很有可能是把一个int型业务数据的 设置setText()或者类似的方法中, 这样Android系统就会主动去资源文件当中寻找, 但是它不是一个资源文件ID, 所
- 数据库高并发情况下重复值写入的避免 字段组合约束
- 避免资源泄露的一个方法
- 数据库高并发情况下重复值写入的避免 字段组合约束
- 一个数据库只剩下mdf文件了,用附加数据库的方法不行,怎么办 来自天地的专栏
- 数据库并发导致的脏读 不可重复读 幻读的处理方法
- Golang goroutine协程(二) 并发资源竞争
- 嵌入式 一个基于linux的聊天软件(并发服务器,sqlite3数据库,有注释)
- 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est
- C/C++截取字符串,考虑中文情况避免乱码的方法。
- 并发数据库事务缺锁导致的数据不一致情况:丢失更新,脏读,不可重复读,幻读
- 自己总结线程并发的访问资源的解决方法
- 一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句
- 关于一个类中方法调用种种情况
- 不在lvm的情况下,利用lvm把2个分区合并成一个分区的方法
- vs2005里,建立一个MFC单文档程序,未选择数据库支持,后来需要用sql server的处理方法
- 高并发访问数据库优化方法
- Try finally的一个实验和为什么避免重载 finalize()方法--例子
- 针对死链接占用资源的情况的解决方法
- (JDBC)利用Java反射编写一个万能的数据库表查询方法