[PHP & MySQL] Websites plat tijdens query

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet niet zeker of dit topic hier goed staat maar okee:

Ik draai op mn webserver om statistieken te genereren een query die 10 minuten duurt. (Huge tabellen en comparing zooi). Alleen tijdens deze query liggen alle websites op de server plat. Waarschijnlijk omdat ze niet meer bij de database kunnen omdat de query de volle capaciteit gebruikt.

Vraag is: Hoe los ik dit op? Als ik die statistieken in een aparte database zet, gaat het dan goed? Volgens het hosting-mannetje niet...

Is er een mogelijkheid om bij een query een max capaciteit mee te geven dat ie mag gebruiken bijvoorbeeld? Of is er in te stellen in MySQL (phpmyadmin) dat elke query maar een 25% van de capaciteit mag gebruiken oid?

Ik kan er helemaal niks over vinden.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Niet de query draaien :?

Of anders gewoon optimaliseren.... Of een process ervan maken. Die kan je dan wat je zegt op de achtergrond laten draaien. Maar ik zou dan wel eerst even kijken waarom een query zo lang duurt. Wegmoffelen is natuurlijk geen oplossing

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Zorgen dat je minder vaak de query draait of de query een performance boost geven? Is het echt nodig om het op deze manier te doen, oftewel: kan je de query niet uitsplitsen?

Verder maakt het afaik niet uit dat je een andere database gebruikt. De enige mogelijkheid is een virtual server waar de database als enige op staat. Dan kan je de virtual server beperken in de load van de host machine :) Maar dat gaat way too far voor jou probleem: eerst optimaliseren zou ik zeggen!

[ Voor 9% gewijzigd door mithras op 18-12-2007 09:37 ]


Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 20:05
wellicht een aparte instantie van die database op een andere poort, en daarop een beperking meegeven?

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SELECT * FROM statistieken2, statistieken
WHERE statistieken2.number_id = statistieken.number_id
AND statistieken.datetime < (statistieken2.datetime + 300)
AND statistieken.datetime > statistieken2.datetime
AND statistieken.type='OPROEP'
AND statistieken2.datetime > {$startdate} AND statistieken2.datetime < {$enddate}

statistieken2 heeft zo'n 400.000 records
statistieken heeft zo'n 100.000 records

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zou natuurlijk kunnen uitsplitsen zodat ie 10.000 kleine queries of meer uitvoert.

Dan zouden andere queries ook tussendoor kunnen denkik?

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

En dat doet er 10 minuten over :X

Zoek eens op indexeren :)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Je geeft niet aan wat je met "alle websites liggen plat" bedoeld: krijgen bezoekers een foutmelding te zien, een lege pagina, een time-out, of ..... ?

Welk formaat hebben je tabellen: InnoDB,MyISAM, ... ?

Verschillende tabel formaten hebben verschillende manieren van het locken van de tabellen; het zou zomaar kunnen zijn dat de sites "plat liggen" omdat de statistieken tabel (waar ze waarschijnlijk stats naar willen schrijven) volledig gelockt is.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Plat liggen alsin: Pagina blijft laden maar er verschijnt niks... Totdat hij gewoon een standaard error geeft "deze pagina kan niet worden weergegeven".

Ze proberen niks naar de statistiekentabel te schrijven dus daar ligt het niet aan.
Type is MyISAM

Ik ga wel even kijken naar indexeren. Waarschijnlijk splijt ik alles op in kleine queries.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

disjfa schreef op dinsdag 18 december 2007 @ 09:43:
En dat doet er 10 minuten over :X

Zoek eens op indexeren :)
Ik weet verder niet precies hoe snel het zou moeten gaan of wat je ingedachten hebt, maar
Verwijderd schreef op dinsdag 18 december 2007 @ 09:40:
SELECT * FROM statistieken2, statistieken
[...]
statistieken2 heeft zo'n 400.000 records
statistieken heeft zo'n 100.000 records
ik hoop dat je snapt dat je nu een query doet op een tijdelijke tabel met zo'n 40 miljard records? Als mijn kennis me niet in de steek laat :+ Ik zou persoonlijk beginnen met je query omschrijven naar iets wat een JOIN gebruikt.

Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 04:24

Kettrick

Rantmeister!

Laat eens een explain los op je query, dan weet je ongeveer wat er te lang duurt en wat je aan moet passen.

http://dev.mysql.com/doc/refman/5.0/en/explain.html

Vermoedelijk is het een kwestie van indexeren en goed joinen in je query :)

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Move van WEB naar Programming
Pagina: 1