我正在使用Oracle 12c数据库,我想知道哪个是在选择查询结果中迭代C#的最佳方式。一旦我得到行值,我就用它做一些工作。
我的想法是使用完整的处理器容量,所以我认为每个cpu核心需要一个线程,每个线程都有自己的连接,用于获取(从表中条件选择count(*))/(核心)行然后每个线程使工作。
每个表都有500000行。
我是对还是有更好的方法来做到这一点?
提前谢谢你,我为我的英语道歉。
答案 0 :(得分:0)
这一切都取决于......:)。
这一切都在同一个盒子上吗? Oracle和你的程序?
如果没有那么连接数不应该是CPU核心数量的函数!它应该取决于您的网络基础结构,程序框与数据库框之间的连接数。有时即使在一个物理连接上也可以通过多个数据库连接获得更高的吞吐量,但它有自己的限制,只要数据库不为一个请求提供最大资源,而是为多个请求共享资源,以及在何时,生成请求需要每个生成的结果行花费时间。但这最好通过基准测试来决定。
如果您的程序和数据库共享同一个框,那么它就是不同的场景。在这种情况下,我通常会在我的应用程序中使用较少或相等一半的可用内核,因为数据库也需要处理内核,并且大量结果行不断出现...
这还取决于你接下来要对行做什么。