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而无意更新就不会发生锁定,您应该看到性能提升(至少是次要的). 然而,还有许多其他因素决定引擎是否会使用并行性.服务器(多核)等的硬件配置还可以确定查询引擎是否采用并行或排队方法. 顺便说一下你在两种方法中观察到的时间差异有多大.您的数据量是多少? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |