MySQL

indexing matters

Dit is meer dan alleen een geheugensteuntje aan mezelf. Het wordt maar al te eenvoudig vergeten terwijl het zo veel verschil kan uitmaken. De wetenschap dat goed indexeren op een grote database bijna zwarte magie is, wil nog niet voorschrijven dat we bij gebrek aan toverspreuken dit helemaal over kunnen slaan.
Zolang je slechts een tabel raadpleegt waar zo'n 7000 rows in zitten zal je niet veel merken van de afwezigheid van indexering. Maar zodra je een join uitvoert gaan de wetten van de grote getallen werken. Ik maakte de fout om de indexering 'later'[1] wel even te doen. De verschillen in tijd spreken voor zichzelf denk ik. De query was vrij simpel

select * from a join b on a.f = b.f where a.g = '100'

Zonder index: 54 seconden
Met index: 0.13 seconden
Uit de cache: 0.05 seconden
En dat door simpelweg in beide tabellen een index te benoemn op veld 'f'. Doe dit als je de database aanmaakt, doe je zwarte magie dan achteraf door gecombineerde sleutels te verzinnen.


lullig

Beetje lullig is het wel, maar we kunnen er gelukkig om lachen. Lag er vanochtend toch een site uit waar ik gisteren druk aan heb zitten knutselen. Even de MySQL database getuned. Dat kan terwijl de database in de lucht blijft en dat is handig, zo kan je zoeken naar de optimale parameters zonder elke keer de database op te starten. Toen ik die gevonden had heb ik de paramaters weggeschreven in het configuratie bestand van de database. Probleem opgelost. Of toch niet helemaal. Een syntax foutje in het configuratie bestand zorgde ervoor dat vanochtend die hele site lekker bleef slapen. Mijn manager werd uit bed gebeld, die googled wat rond: mysql table_cache en staat daar mijn eigen howto vrolijk bovenaan te pronken.
en zo laat was het niet eens gisteren.

Van je hobby je werk maken

Raar jaar. Op het werk leek het allemaal bergafwaarts te gaan, tot ik onze internet tak een tijdje ging meehelpen. Twee sites met roxen opzetten, styling doen en modules schrijven. Tussendoor nog even wat pixel neuken (sexy uitdrukking voor het juist in de marges krijgen van je pagina's in alle browser). En na twee maanden terug naar het gewone werk.
En dat ging steeds minder lekker. Totdat ik gevraagd werd definitief een vertrekkende collega te vervangen als web ontwikkelaar. Tegen ieders verwachting in heb ik ja gezegd, en officieel ben ik nu een maand bij ons internet bedrijf.
Het eerste wat ik mocht doen was weer minder leuk. Lastige jsp onderhouden die communiceert met mijn eigen oude software op de verschillende servers. Twee dagen geleden begon ik er echt weer lol in te krijgen. Een klus afmaken waarbij php en mysql vorm en inhoud bepalen. Mijn vingers klopperden steeds sneller over mijn toetsen en tijdens het typen kwamen de oplossingen voor de openstaande punten als vanzelf.

stilletjes

Het is weer eens stilletjes en ook nu betekent dat wederom druk. Duk op het werk, druk achter de schermen. Nadat mijn ongenoegen over de nucleus wiki die op deze server draait bleef groeien heb ik afgelopen week een knoop doorgehakt. WackoWiki eruit en dokuwiki er voor in de plaats. Voornamelijk omdat wacko een monster van een wiki engine blijkt te zijn. Veel, heel veel slechte sql queries die de mysql engine op zijn gat konden krijgen. Features die niet bleken te werken (zoals de wiki op slot gooien voor niet ingelogde gebruikers). En dus nieuwe engine eronder; rewrite regels verzinnen om zo min mogelijk 404 pagina's terug te geven en dan alle pagina's met de hand aanpassen aan de nieuwe syntax. Met dat laatste ben ik nog wel even zoet, er is al aardig wat geschreven in de wiki. De reacties zijn gelukkig positief en tot nu toe bevalt de engine goed. Maar eerlijk is eerlijk, wiki's zijn door hun 'open karakter' zorgenkindjes voor de beheerders. Voorlopig zal ik nog wel alert blijven. Aanschouw de nieuwe nucleus wiki

Syndicate content
thank you for watching  Creative Commons License