Het geval is dat tijdens het maken van een php script liepen we tegen het volgende probleem aan. Tijdens het afvragen van een query loopt de server (SUSE Enterprise 9.3 dual xeon 3.0 ghz 4gb intern) volledig "vast". Opzoek na de oorzaak bleek de query teveel resultaten op te vragen waardoor de MySQL demon teveel resources nam, als resultaat een server die totaal onbereikbaar is.
Stel je hebt een database met vijf tabellen (a, b, c, d, e) en een aantal records, 3 per tabel, waar bij de primary key van alle records in de dieverse tabellen gelijk is. Na het uitvoeren van de volgende query:
zijn er dus 3 resultaten. Nu zijn wij er achter gekomen dat het mogelijk is de volgende query uit te voeren:
Hier uit komen 243 resultaten dit zijn alle mogelijke kombinaties van de verschillende records. Echter verwachten wij een foutmelding of maximaal 3 resultaten.
Nu was het eerste wat er in mij opkwam, het is een bug. Echter hoor ik van alle kanten dat dit gewoon een valide query is. Ik zou echter niets kunnen verzinen waarom je deze query zal uitvoeren. Ik ben gekomen tot de bovenstaande query door het orgineel te vereenvoudigen waar ik een fout met een OR statment heb gemaakt.
Als je dit met tabellen doet van 200+ records dan loopt dus je server "vast" het maakt verder niet uit of je hiervoor MySQL 4.* of 5.* gebruikt hierbij hebben we gebruik gemaakt van een standaard configuratie en zowel Linux als ook Windows varianten hebben hier last van.
Nu mijnvraag: Waarom doet MySQL dit zo? Of mag ik dit beschouwen als bug in MySQL?
Stel je hebt een database met vijf tabellen (a, b, c, d, e) en een aantal records, 3 per tabel, waar bij de primary key van alle records in de dieverse tabellen gelijk is. Na het uitvoeren van de volgende query:
SQL:
1
2
3
4
5
6
| SELECT * FROM a, b, c, d, e WHERE a.id = b.id AND b.id = c.id AND c.id = d.id AND d.id = e.id; |
zijn er dus 3 resultaten. Nu zijn wij er achter gekomen dat het mogelijk is de volgende query uit te voeren:
SQL:
1
2
| SELECT * FROM a, b, c, d, e; |
Hier uit komen 243 resultaten dit zijn alle mogelijke kombinaties van de verschillende records. Echter verwachten wij een foutmelding of maximaal 3 resultaten.
Nu was het eerste wat er in mij opkwam, het is een bug. Echter hoor ik van alle kanten dat dit gewoon een valide query is. Ik zou echter niets kunnen verzinen waarom je deze query zal uitvoeren. Ik ben gekomen tot de bovenstaande query door het orgineel te vereenvoudigen waar ik een fout met een OR statment heb gemaakt.
Als je dit met tabellen doet van 200+ records dan loopt dus je server "vast" het maakt verder niet uit of je hiervoor MySQL 4.* of 5.* gebruikt hierbij hebben we gebruik gemaakt van een standaard configuratie en zowel Linux als ook Windows varianten hebben hier last van.
Nu mijnvraag: Waarom doet MySQL dit zo? Of mag ik dit beschouwen als bug in MySQL?
Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |