[MySQL] zeeeeer traag

Pagina: 1
Acties:

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
Een site, project, is bijna af, ik heb zelf een soort cms systeem gebouwd, maar telkes als ik iets van mysql oproep dan kan ik weer 3 seconden wachten.
Dit heeft gelukkig geen effect op de gebruikers pagina, omdat zij geen toegang krijgen tot de database, maar slechts een javascript array hebben.

Ik heb opgeocht op internet wat het zou kunnen zijn, om heb gevonden via google dat het zou kunnen komen door SHOW TABLES maar daar ben ik niet zeker van.

Is er een methode om te zien waardoor een site (PHP& MySQL) zeer traag is, met andere woorden, waar blijft de parser hangen?

Ik kan moeilijk alle code gaan geven, maar dit scripje zorgt voor alle MySQL verkeer:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function sql($sql)
    {
    $db = sql_connect();
    $result = mysql_query( $sql, $db );
    mysql_close($db);
    return $result;
    }

function sql_connect()
    {
    $host = $_SERVER["SERVER_ADDR"];
    if ( $host  == '127.0.0.1')
        {
        $db = mysql_connect( $host ,'ODBC','pppp');
        }
    else {
        $db = mysql_connect( 'xxxxxxx','xxxxxxx','xxxxxx');
        }
    if (!$db)die('Kan server niet vinden: ' . mysql_error());
    mysql_select_db("wwwwww", $db);
    return $db;
    }

[ Voor 32% gewijzigd door g4wx3 op 13-07-2007 00:09 ]

http://www.softfocus.be/


  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:05
zeer weinig info.. is dit je eigen server?
wat voor specs heeft de server? hoeveel gebruikers welke load.. welke versie van mysql & php...

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 30-11 11:29

Bud_s

Team Anticimex & Lock

database ontwerp ? indexen ? sql statements ?

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je kunt hier en daar in je code wat debugcode toevoegen (hint: microtime) om te kijken bij welke query of bij welke regel code de vertraging wordt opgelopen.

  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
De traagheid komt voor in alle 3 browsers die ik gebruik (FF ie en opera), en tzowel thuis als op inernet hosting
De database is zeer klein (maximaal 20 tabellen, waarvan 1 dan met 20 rijen, en de rest 1 a 6 rijen)

http://www.softfocus.be/


  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024

froggie

Kwaaak

Je lijkt bij iedere query een nieuwe connectie met de database te maken. Dit lijkt me onnodig en zou mogelijk je trage query kunnen verklaren.

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 19:48
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function sql($sql)
    {
    static $db;
    if(! isset( $db ) )
    {
      $db = sql_connect();
    }
    $result = mysql_query( $sql, $db );
    mysql_close($db);
    return $result;
    }
?>

something like this would do the trick :)

[ Voor 41% gewijzigd door doeternietoe op 13-07-2007 00:39 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

doeternietoe schreef op vrijdag 13 juli 2007 @ 00:38:
something like this would do the trick :)
Je bedoelt de trick van bij elke query opnieuw connecten? Sterker nog, deze kan waarschijnlijk maar 1 query uitvoeren, want daarna heb je je connectie gesloten en is de $db-parameter nog steeds geset.
froggie schreef op vrijdag 13 juli 2007 @ 00:15:
Je lijkt bij iedere query een nieuwe connectie met de database te maken. Dit lijkt me onnodig en zou mogelijk je trage query kunnen verklaren.
't Connecten gaat doorgaans vrij snel, dus als er niet te veel queries uitgevoerd worden zou dat niet voor 3 seconden moeten zorgen. Niettemin is het wel overbodig.
g4wx3 schreef op vrijdag 13 juli 2007 @ 00:13:
De traagheid komt voor in alle 3 browsers die ik gebruik (FF ie en opera), en tzowel thuis als op inernet hosting
De database is zeer klein (maximaal 20 tabellen, waarvan 1 dan met 20 rijen, en de rest 1 a 6 rijen)
Zie glowmouse, ga met behulp van bijvoorbeeld microtime achterhalen welke statements in je code zoveel tijd kosten. Misschien zie je iets over het hoofd of heeft het helemaal niet met mysql te maken.

[ Voor 82% gewijzigd door ACM op 13-07-2007 09:45 ]


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24

BikkelZ

CMD+Z

Hoe lang duurt zo'n query dan in PHPMyAdmin?

iOS developer


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Gebruik je bij 'mysql_connect' de hostname of het ipadres?

Skill is when luck becomes a habit.


  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
Ok, 2 problemen, de reden waarom ik de oorzaak niet vond;
thuis gaat phpadmin heel traag, dus daar moest ik me niet op baseren,
Op de server gaat phpadmin wel snel, maar, bij het aanpassen van de database word meestal ook een scriptje aangeroepen, die een javascript array schrijft met info uit de database (zoiets als xml op een andre manier bekeken) echter daar stond iets in de aard van:
PHP:
1
2
3
4
for( $i=0; isset( array() ) ; $i++ )

//ik bedoelde natuurlijk dit:
for( $i=0; isset( array()[$i] ) ; $i++ )

http://www.softfocus.be/


  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
eek schreef op vrijdag 13 juli 2007 @ 09:36:
Gebruik je bij 'mysql_connect' de hostname of het ipadres?
Gebruik je bij 'mysql_connect' de hostname of het ipadres?

Een ip adress, want de http-host is niet hetzelde als de database-host

http://www.softfocus.be/


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

g4wx3 schreef op vrijdag 13 juli 2007 @ 09:43:
PHP:
1
2
//dat moest natuurlijk zijn
for( $i=0; isset( array()[$i] ) ; $i++ )
Wat een vage loop... als je alle elementen van je array wilt maar je niet precies weet welke er in zitten, waarom gebruik je dan niet gewoon foreach? En als je van te voren weet dat het gewoon een gevulde array met oplopende integer-keys is, neem dan de daarvoor gebruikelijkere standaardaanpak ;)

PHP:
1
2
3
4
5
6
7
8
// Dus
foreach($array as $i => $value)
{}

// of
for($i=0; $i < count($array); $i++ )
// danwel de iets snellere:
for($i=0, $stop = count($array); $i < $stop; $i++ )

[ Voor 39% gewijzigd door ACM op 13-07-2007 09:49 ]


  • g4wx3
  • Registratie: April 2007
  • Laatst online: 12-10 08:33
bedankt!
:Y) Ik moet me eens gaan doornemen in php functies denk ik 8)7

http://www.softfocus.be/

Pagina: 1