MySQL vs CSV (txt) gagnagrunna Núna áðan var ég að bera saman þessar tvær gerðir að gagnagrunnum. Ég var með 1000 færslur og 10.000 færslur hver með 6 reitum. Síðan voru fjórir mögulegir flokkar og átti að prenta út einn þeirra. Þetta var allt tímamælt með timer scriptinu hans cre sem ég fann á scriptusíðu cooltech
http://www.cooltech.is/phpresrc.is/view.php?id=15

Síðan bjó ég til venjulegt MySQL script og annað script sem vann úr csv skránni.
MySQL scriptið þarf ekki að skýra út en csv scriptið bygðist upp á því að lesa úr því sem venjulegri textaskrá (sem það vissulega er). Splitta hverri línu í array með explode og síðan nota If setningu til að flokka út nothæfar upplýsingar.

Niðurstöðurnar komu mér verulega á óvart.

1000 færslur
————
MySQL scriptið var um 1.8 í keyrslu
Txt scriptið var aðeins um 0.45 í keyrslu

10.000 færslur
————–
MySQL scriptið var um 12.0 í keyrslu
Txt scriptið var aðeins 4.5 í keyrslu

Þetta finnst mér mjög skrítið því kóðinn fyrir csv scriptið er miklu lengri og flóknari en fyrir MySQL scriptið og MySQL á að vera hraður gagnagrunnur.

En hverjar eru ástæðurnar? Er MySQL gert fyrir meiri gagnaúrvinnslu en hér var gagnaúrvinnslan ekki mikil? Er ástæðan að ég er að keyra þetta á Win98 en MySQL er hannað fyrir Linux? Eða er ég að gera einhverja tóma vitleysu?

E-220
——
Tæknigúrúar mega lesa áfram

P.S ég er með Win 98, 800 mhz, 128 mb vinnsluminni, Apache 1.3.12 og MySQL 3.22.21 (held ég).

P.SS Fyrir áhugasama þá koma kóðarnir hér að neðan (nenni ekki að skýra þetta út og veit ekki hvort þetta virkar því ég hef aldrei sent inn svona kóða áður)

MySQL
——
<?php

$data = mysql_connect(“localhost”, “user”,“pass”); 
mysql_select_db (Gestabok); 

?>
<html>

<head>

<title>Tímamæling</title>

</head>

<body bgcolor=“#000000” text=“#FFFFFF” link=“#FFFFFF” vlink=“#FFFFFF” alink=“#FFFFFF”>

<?php

$query = “SELECT * FROM test WHERE Skor = ‘skor 3’ ”; 
$result = mysql_query($query, $data); 

while ($row = mysql_fetch_array ($result)) {

$nr = $row["nr"];
$nafn = $row["nafn"];
$skor = $row["skor"];
$simi = $row["simi"];
$eitthvad = $row["eitthvad"];
$annad = $row["annad"];

# Hér hefst svo útprentunin.
Echo (“<p align=center><b>$nr $nafn $skor $simi $eitthvad $annad</p>”); 
}

?>
</body>

</html>

TXT
——–
<html>

<head>

<title>Tímamæling</title>

</head>

<body bgcolor=“#000000” text=“#FFFFFF” link=“#FFFFFF” vlink=“#FFFFFF” alink=“#FFFFFF”>

<?php

$filename = “grunnur.txt”; # Nafn skrár
$contents = file($filename); # Öll skráin í einn streng
$lengd = sizeof($contents); # Línufjöldi
$flokkur = “Skor 3”;
$lina = 0;

for ($i = 1; $i <= $lengd;$i++) { # Þetta er endurtekið fyrir hverja línu

$reitir = $contents[$lina]; # Breytan reitir er ein lína í skránni, hún breytist í hvert skipti
$splittad = explode (“;”, $reitir); # Splittar línunni í fjóra (byrjar á núll) hluta (aðskildir með ;)

If ($splittad[2] == $flokkur) {

# Hér hefst svo útprentunin.
Echo ('<p align=“center”><b>');
print_r($splittad[0]); 
print_r($splittad[1]); 
print_r($splittad[2]); 
print_r($splittad[3]); 
print_r($splittad[4]); 
print_r($splittad[5]); 
echo ('</P>');
}

$lina = ($lina + 1); # Næsta lína
} # For lýkur
?>
</body>

</html>

Sýnishorn af fjórum færslum í csv gagnagrunni
———
1;Nafn 1;Skor 1;Simi 1;Eitthvað 1; Annað 1
2;Nafn 2;Skor 2;Simi 2;Eitthvað 2; Annað 2
3;Nafn 3;Skor 3;Simi 3;Eitthvað 3; Annað 3
4;Nafn 4;Skor 4;Simi 4;Eitthvað 4; Annað 4