Kees Netelvrees schreef:
ORDER BY ID
is niet echt nodig. De database pakt standaard altijd de fysieke volgorde van de tabel.
Uiteraard. dat komt neer op Sorting, while already being sorted. Zal in het vervolg eraan denken.
Kees Netelvrees screef:
while (list( $d_t_id,$d_toernooi_naam,enzovoorts,) = mysql_fetch_row ( $toernooi_result ))
Misschien dat mysql_fetch_assoc() een meer optimale benadering is van de rijen.
while ( $row=mysql_fetch_assoc( $toernooi_result ) )
Ik zal kijken of ik het kan toepassen.
Kees Netelvrees screef:
Trouwens, je roept nu 4 verschillende queries aan die opvolgend steeds informatie ophalen.
Is één enkele query met meerdere JOINS niet optimaler? En dus een stuk sneller? MySQL moet dat zeker aankunnen.
Zeker zeker, maar als ik dit in een LIJST zou zien, krijg ik dan niet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ----------------------------------------------------------------------------------------------------------------
| toernooi_id | gegeven | wedstrijd_id | gegevens | set_id | gegevens | leg_id | gegevens | worp | gegevens |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 1 | iets |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 1 | iets2 |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 1 | iets3 |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 1 | iets4 |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 2 | iets |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 1 | iets | 2 | iets2 |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 2 | iets2 | 1 | iets |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 2 | iets2 | 1 | iets2 |
| 1 | LakeSide | 1 | set_stand | 1 | leg_stand | 2 | iets2 | 1 | iets |
| 1 | LakeSide | 1 | set_stand | 2 | leg_stand | 1 | iets | 1 | iets |
| 1 | LakeSide | 1 | set_stand | 2 | leg_stand | 1 | iets | 1 | iets2 |
| 1 | OpenNL | 1 | set_stand | 1 | leg_stand | 1 | iets | 1 | iets |
---------------------------------------------------------------------------------------------------------------- |
En roep ik zo niet weer het probleem van inconsistensie op? Ik dacht hier toen straks nog even aan, en dacht bij mezelf: ach, inconsistentie maakt niet zo heel veel uit zolang het maar IN de code gebeurd, en niet als het opgeslagen wordt (in mysql).
Kees Netelvrees screef:
return $toernooien;
12-dimensionaal...? Zit je elke keer weer de gehele dartdatabase in deze array in te lezen?
Jazeker. Wat op zich geen probleem moet zijn aangezien het maar 4 tabellen zijn. (1 klein tabelletje waar de toernooi-info instaat (er staan hier na 1 jaar ongeveer 10 rows in voor 10 toernooien))
PanMan schreef:
Volgens mij laad je veel te veel gegevens: Je hebt zeker geen 12 dimensionale array nodig om de gegevens van EEN wedstrijd in bij te houden.
Leesfout: ALLE toernooien met hun wedstrijden, met hun sets, met hun legs, met hun worpen... worden ingeladen in deze 12 dimensionale array.
PanMan schreef:
Deze pagina zou volgens mij gewoon in 1 of 2 simpele array's moeten kunnen.
Dat kan hij ook, maar deze code is 1 functie die voor meteen alles gebruikt kan worden. Want als ik later wat meer info bij m'n pagina wil plaatsen (die ik uit de database moet halen, en vervolgens berekenen) ben ik meer tijd kwijt dan dit in 1 keer goed doen.
PanMan schreef:
Met rendertijd bedoelde ik rendertijd op de server, hoe lang duurt het om deze pagina te genereren?
Ok... miscommunicatie. Ik noem dit namelijk parsetime, zoals m'n medetweakers dit doen.

PanMan schreef:
Hoe snel staan de gegevens in die DB? Als dat niet live gebeurd, kan die 2 sec vertraging ook wel wat omhoog: Als elke beurt 15 sec duurt om in te voeren, is die 2 sec ook minder relevant.
Dit gebeurd dus wel live. Er is 1 persoon die op het moment dat de worp is gegooid deze score meteen intypt. Dit is voor de bezoeker dan ook direct te zien (dmv de 2sec refresh) Nu ik dit zo simpel zeg denk je... waarom dan zo'n code die alles eruit haalt? Nou: stel ik wil het gemiddelde over alle toernooien laten zien van een bepaalde darter?
Janoz schreef:
Dus, je voert om de 20 sec per bezoeker toernooien x wedstrijden x sets x legs queries los op de db en vraagt je af waar de performance problemen vandaan komen?
2 seconden

.... Het lijkt zo vanzelfsprekend he, dat de performance zo drastisch omlaag gaat. Maar als je wat verder denkt: waarom zou PHP/MySQL geen 150 queries aankunnen? Het is trouwens niet toernooien x wedstrijden x sets x legs. Want dat is het aantal rows, in het resultaat als je al deze queries zou verpakken in 1 querie. Het feitelijke aantal queries is: query_toernooien (1) + aantal_toernooien + aantal_wedstrijden | aantal_sets queries.
Wat op dit moment neerkomt op: 2 + 23 + 95 = 120 queries
Op mijn werk doe ik een INSERT query wel 300 keer, zonder moeite.
djluc schreef:
Toch zie ik geen verband tussen een too many connections melding en vele queries uitvoeren.
Ik dus ook niet, maar ondanks die gedachte had ik toch de 'mysql_free_result($resource);' toegevoegd.
djluc schreef:
Ik ga er hierbij wel vanuit dat de parsetime van de pagina's niet langer is dan 2 seconden. Misschien zou de TS dat sowieso eens kunnen meten?
Bij 1 bezoeker van het systeem WEL. Dan is hij snel. Bij 2 bezoekers is de parsetime langer dan 2 seconden. Toch snap ik het niet. Als ik als enkele bezoeker in het systeem de F5 knop in blijf drukken (dus constantly refresh) dan komt er niet meer dan 1 proces in het processenlijstje te staan (exclusief de 'show proceslist'). Als ik 2 browsers doe: 1 browser laat het systeem via de 2sec refresh verversen, en de andere doe ik met de F5 constantly refresh. Dan krijg ik bij 20 refreshes (bij die F5 manier) ook 20 processen die even actief blijven. Dit mag dus niet.
[
Voor 8% gewijzigd door
Cheater op 17-01-2005 03:02
]