2016-07-29 29 views
2

我已将我的数据集划分为两个单独的5M行集。每个分区都被加载到自己机器上的一个表中。我使用中央monetdb实例,将两个表都注册为远程表并将它们添加到合并表中。当使用合并表时,MonetDB是否支持并行查询执行?

当我在合并表上运行查询时,我期望MonetDB将查询并行分发到两个分区表。但是,在查看使用层析成像仪创建的结果时,我会看到每个远程表都按顺序查询。

我使用最近的源代码tarball自己编译MonetDB。我禁用了geom并确保嵌入式python可用。除此之外,我没有改变任何设置或配置标志。拥有这些分区的两台机器是具有4GB内存的1个核心虚拟机。中央机器是我的笔记本电脑,它有4个内核和16GB的内存。我还使用与分区具有相同配置的中央节点运行此实验。

我创造了这样的表:

-- On each partition (X = {1, 2}): 
CREATE TABLE responses_pX (
    r_id int primary key, 
    r_date date, 
    r_status tinyint, 
    age tinyint, 
    movie varchar(25), 
    score tinyint 
); 

-- On central node: 
CREATE MERGE TABLE responses (
    r_id int primary key, 
    r_date date, 
    r_status tinyint, 
    age tinyint, 
    movie varchar(25), 
    score tinyint 
); 

-- For both partitions 
CREATE REMOTE TABLE responses_pX (
    r_id int primary key, 
    r_date date, 
    r_status tinyint, 
    age tinyint, 
    movie varchar(25), 
    score tinyint 
) ON 'mapi:monetdb://partitionX:50000/partitionX'; 

ALTER TABLE responses ADD TABLE responses_pX; 

我运行中心节点上以下查询:

SELECT COUNT(*) FROM responses; 
SELECT COUNT(*), SUM(score) FROM responses; 
SELECT r_date, age, SUM(score)/COUNT(score) as avg_score FROM responses GROUP BY r_date, age; 

所有查询由tomograph工具报告的并行度没有更高比2.11%

回答

0

是的,MonetDB尽可能使用并行处理。请参阅文档 https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DistributedQueryProcessing

+0

这是我用来设置我的表格的页面,但是,基准测试显示了非常小的并行性,我期望得到更多。例如,我希望可以并行查询两个分区表,但是,根据'tomograph'这两个子查询是按顺序运行的......对此有任何解释吗?有没有我可能配置错误的东西? – vdeurzen