加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 并行线程中的数据库访问,可行的选择?

发布时间:2020-12-16 07:35:31 所属栏目:百科 来源:网络整理
导读:我有以下情况 main(){ hnd = CreateTHread( func1 ); // Call fun2() wait(hnd); return ;}fun2(){ //Access database to perform some read operation on TAble A}func1(){//Access database to perform some read operation on TAble A// Recursive operat
我有以下情况

main()
{

   hnd = CreateTHread( func1 );

   // Call fun2()

   wait(hnd);

   return ;

}


fun2()
{
  //Access database to perform some read operation on TAble A
}


func1()
{

//Access database to perform some read operation on TAble A
// Recursive operations
}

我观察到的是,如果我使用线程方法,fun2()需要更长的时间才能完成.可能是因为THread func和fuc2正在同一个表上工作.注意,两个函数中只有读操作. AWR报告表明,使用线程方法时,查询exectutions的数量增加了

解决方法

一个类似的问题 – Multi-threaded database read access

Oracle JDBC接口以及Oracle本机驱动程序(我猜)能够处理多线程请求(http://www.cs.umbc.edu/portal/help/oracle8/java.815/a64685/tips1.htm)

但是,当涉及到数据库引擎中的实现时 – 这一点尚不清楚.从当前文档中我的理解是,只要您的请求是READONLY而无意更新就不会发生锁定,您应该看到性能提升(至少是次要的).

然而,还有许多其他因素决定引擎是否会使用并行性.服务器(多核)等的硬件配置还可以确定查询引擎是否采用并行或排队方法.

顺便说一下你在两种方法中观察到的时间差异有多大.您的数据量是多少?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读