Mijn probleem is vrij simpel, ik heb een tabel in mijn database die middels een admin-tool kan worden uitgebreid met extra kolommen. Ze bestaat momenteel uit zo'n 300 kolommen en bij wijze van test-case zo'n 1000 records. Het records zal als de handel "echt" in gebruik is gaan oplopen tot zo'n 750.000. Echter... met de testcase met 1000 records loop ik al tegen een performance probleem aan.
Ik heb de volgende functie in PHP om de data naar een plat tekst bestand te dumpen:
Ga ik deze benchmarken dan kom ik uit op zo'n 2s voor de huidige 1000 records. Laten we de implode's weg dan blijft er 1,5 seconde over voor het ophalen van de data. Aangezien een limit 100 in de query leidde tot 0,15s en limit 10 tot 0,015s ga ik er vanuit dat dit te extrapoleren valt naar 750.000 records in ongeveer 19 minuten
Mijn vraag is of er nog andere opties zijn dan een Cray aanschaffen om dit te laten werken. De huidge PC waarop het draait is een Authentieke K6III met 228MB ram en 1Mb L2 cache. (De uiteindelijke server zal een Sempron 2XXX+ worden met 256Mb DDR).
Zoekfunctie vinden strax allemaal plaats in tabellen met metadata over deze gegevens. Die zijn middels ID gelinkt aan de grote tabel waardoor alles wat er met het ding gebeurt neerkomt op een datadump
Ik heb de volgende functie in PHP om de data naar een plat tekst bestand te dumpen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| function dump_all() { # dbconnection global $db; global $DBNAME; if (!mysql_select_db($DBNAME,$db)) { return FALSE; } # fetch column names $query = mysql_query('SHOW COLUMNS FROM pge_data'); if ($result = mysql_fetch_assoc($query)) { do { $columns[] = $result['Field']; } while ($result = mysql_fetch_assoc($query)); } else { return FALSE; } #fetch data $query = mysql_query('SELECT * FROM pge_data', $db); if ($result = mysql_fetch_assoc($query)) { do { $data[] = implode ("|", $result); } while ($result = mysql_fetch_assoc($query)); } else { return FALSE; } $output = implode ('|', $columns) ."\n" .implode("\n", $data); echo $output; //Ik ben nog aan het bouwen/debuggen aye } |
Ga ik deze benchmarken dan kom ik uit op zo'n 2s voor de huidige 1000 records. Laten we de implode's weg dan blijft er 1,5 seconde over voor het ophalen van de data. Aangezien een limit 100 in de query leidde tot 0,15s en limit 10 tot 0,015s ga ik er vanuit dat dit te extrapoleren valt naar 750.000 records in ongeveer 19 minuten
Mijn vraag is of er nog andere opties zijn dan een Cray aanschaffen om dit te laten werken. De huidge PC waarop het draait is een Authentieke K6III met 228MB ram en 1Mb L2 cache. (De uiteindelijke server zal een Sempron 2XXX+ worden met 256Mb DDR).
Zoekfunctie vinden strax allemaal plaats in tabellen met metadata over deze gegevens. Die zijn middels ID gelinkt aan de grote tabel waardoor alles wat er met het ding gebeurt neerkomt op een datadump
Regeren is vooruitschuiven