2016-07-29 3 views
2

Ich habe meinen Datensatz in zwei separate Sätze von 5M Zeilen aufgeteilt. Jede Partition wird in eine Tabelle auf einer eigenen Maschine geladen. Ich verwende eine zentrale monetdb-Instanz, in der ich beide Tabellen als entfernte Tabellen anmelde und sie zu einer Zusammenführungstabelle hinzufüge.Unterstützt MonetDB die parallele Ausführung von Abfragen bei Verwendung von Merge-Tabellen?

Wenn ich eine Abfrage für die Zusammenführungstabelle ausführen, würde ich erwarten, dass MonetDB die Abfrage parallel an beide Partitionstabellen verteilt. Wenn ich jedoch die mit Tomograph erzeugten Ergebnisse ansehe, sehe ich, dass jede entfernte Tabelle sequentiell abgefragt wird.

Ich habe MonetDB selbst mit einer aktuellen Quelle Tarball kompiliert. Ich habe geom deaktiviert und dafür gesorgt, dass embedded python verfügbar war. Ansonsten habe ich keine Einstellungen geändert oder Flags konfiguriert. Die beiden Rechner mit den Partitionen sind 1 Kern-VMs mit 4 GB Speicher. Die zentrale Maschine ist mein Laptop, der 4 Kerne und 16 GB Speicher hat. Ich habe dieses Experiment auch mit einem zentralen Knoten mit der gleichen Konfiguration wie die Partitionen ausgeführt.

Ich habe die Tabellen wie folgt aus:

-- 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; 

Ich bin auf dem zentralen Knoten die folgenden Abfragen ausgeführt werden:

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; 

Für alle die Parallelität der tomograph Werkzeug wird nicht berichtet, fragt höher als 2.11%.

Antwort

0

ja, MonetDB verwendet wo möglich parallele Verarbeitung. Siehe die Dokumentation https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DistributedQueryProcessing

+0

Das ist die Seite, die ich verwendet habe, um meine Tabellen einzurichten, aber Benchmarking zeigt bemerkenswert wenig Parallelität, wo ich viel mehr erwarten würde. Zum Beispiel würde ich erwarten, dass die beiden Partitionstabellen parallel abgefragt werden, aber laut tomograph werden die beiden Unterabfragen nacheinander ausgeführt ... Gibt es dafür eine Erklärung? Gibt es etwas, das ich falsch konfiguriert haben könnte? – vdeurzen

Verwandte Themen