x

Re: Perl-Skript importosm2sqlite ?


Geschrieben von stoerti (Gast) am 22. Juli 2011 00:02:30: [flux]

Als Antwort auf: Perl-Skript importosm2sqlite ? geschrieben von tiototo (Gast) am 20. Juli 2011 08:48:

Habe eben nochmal ein Release gemacht, 0.0.3.
Dies sollte jetzt bis auf weiteres das letzte sein.

Der Datenimport für ein aktuelles 16GB Deutschlandfile hat inkl. anlegen der Indezes rund 17 Stunden gedauert.
1.000 wahllose Abfragen der nachher 5GB grossen sqlite Datenbank mittels


$LatMin = rand(6)+47;
$LatMax = rand(6)+51;
$LonMin = rand(6)+1;
$LonMax = rand(8)+7;

$SQL = "SELECT * FROM Nodes WHERE Lat > $LatMin AND Lat < $LatMax AND Lon > $LonMin AND Lon < $LonMax LIMIT 0,1000";
$res2 = $dbh->prepare($SQL);
$res2->execute();
while ( $ret2 = $res2->fetchrow_hashref())
{
$ID = $ret2->{'ID'};
print "Node-ID: $ID\n";
$SQL = "SELECT * FROM Attr WHERE ID=$ID";
$res = $dbh->prepare($SQL);
$res->execute();
while ( $ret = $res->fetchrow_hashref())
{
print $ret->{'ID'} . "," . $ret->{'k'} . "," . $ret->{'v'} . "\n";
}
}


zeigen folgendes Laufzeitverhalten:

Versuch 1:
real 0m0.673s
user 0m0.396s
sys 0m0.041s

Versuch 2:
real 0m1.291s
user 0m0.440s
sys 0m0.021s

Versuch 3:
real 0m0.697s
user 0m0.402s
sys 0m0.044s

0,7 - 1.3 Sekunden für 1.000 zufällige Abfragen auf 76.297.417 Datensätze und Abfrage auf Abhängigkeiten von 8.640.710 Datensätzen - ich glaube nicht, dass ich das besser hinbekomme.

Bei 10.000 Datensätzen zeigt das Laufzeitverhalten

Versuch 1:
real 0m6.251s
user 0m3.545s
sys 0m0.259s

Versuch 2:
real 0m7.108s
user 0m3.607s
sys 0m0.375s

Versuch 3:
real 0m6.069s
user 0m3.465s
sys 0m0.339s