当我们使用-s时,主线程将一些工作委托给从线程。
我使用3个从线程运行下面的代码:q -s 3
select from t where date within 2019.01.18 2019.01.20试图了解Q如何在内部使用线程进行上述查询。
kdb内部是否使用每个子线程来获取日期的数据,然后主线程在结束时合并数据?
类似于:
main thread looking for slave threads and assigning work
slave 1: t1: select from t where date within 2019.01.18
slave 2: t2: select from t where date within 2019.01.19
slave 3: t3: select from t where date within 2019.01.20
main thread: t1,t2,t3每个从线程做什么工作,主线程做什么工作?
发布于 2019-06-24 09:10:37
如果您的表是分段的,并且使用多个线程,那么分区将被并行处理。更多细节:Kdb+/#1442-segmentation-vs-partitions和https://code.kx.com/v2/kb/partition/
发布于 2019-06-24 09:57:21
使用从线程调用映射和约简框架,其中每个线程执行分配的任务,并返回其结果的副本,以便主线程进行聚合。
在您的特定情况下,如果您要查询的表是分区的,那么查询将有效地并行化。由于它将引入所有列,所以查询将是I/O绑定的,这意味着您不会看到太多/任何加速。
发布于 2019-06-24 20:27:33
尝试以下{select从t where date=x}桃(日期在2019.01.18 2019.01.20内)
它应该更快
https://stackoverflow.com/questions/56732019
复制相似问题