我们有一个具有多个线程的应用程序,它重用一个 KDB 连接。 从性能角度来看,打开与多线程 KDB 实例的多个连接以加快进程会好吗?同样有趣的是,如果我们从多个线程发布到单个连接,会有任何潜在的负面影响:我们有 java 应用程序并使用 exxeleron java 库。
最佳答案
除了与 KDB 的单个套接字连接本身并不是非常消耗资源这一事实之外,最终我认为您会发现磁盘查找和内存分配是迄今为止最大的瓶颈,而不是您有多少个连接必须有一个数据库。也就是说,既然你问了……
让我们进行简单的假设:
- KDB 数据库是一个历史数据库。该侧的多线程选项是负端口号和
-s
- 不能同时设置 - 您有一个进程,我们称之为
A
,访问它
使用负端口号,您将获得多线程输入队列。所以如果 A
能够执行多个查询,它们可以同时分派(dispatch),并且 KDB+ 不会在每次调用时阻塞。然而A
以某种方式需要能够将传入的结果流识别为对特定查询的响应。你可以这样查询 (<queryId>;<actualQuery>)
我想并解析第一个元素以进行识别。然而,在这个用例中,听起来您应该有多个 A
的。
与 -s
你会得到多线程查询,所以你必须这样编写查询(有时你可以免费获得它,比如跨分区查询)。您将阻止每个调用,因此拥有多个 A
并没有真正的优势的。
关于java - 从多个线程发布到 KDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207145/