[TYPO3-UG Dutch] MySQL: MyISAM of InnoDB
Jigal van Hemert
jigal at xs4all.nl
Sat Sep 13 00:40:00 CEST 2008
H. Hahn wrote:
> Tot mijn verbazing zag ik echter ineens dat een aantal tabellen niet
> langer MyISAM zijn, maar InnoDB. Volgens mij was dat eerder niet zo.
> Kan dat zomaar gewijzigd worden?
An sich is het geen groot probleem om het Engine type van een tabel te
wijzigen. Niet alle engines hebben dezelfde features en eigenschappen,
dus moet daar wel rekening mee gehouden zijn.
Een grote tabel omzetten van de ene engine naar de andere kan "even" duren.
> En zo ja, kan dat vanzelf gebeuren?
Vanzelf gebeurt er niets (behalve dat de zon opkomt misschien). Dit is
echt het resultaat van een upgrade naar een recente TYPO3 versie!
> Ik heb bij de provider (Xs4all) nagevraagd, maar die weten van niets.
Klopt, zij hebben ook niets uitgevoerd.
> Ze waarschuwen zelfs (m.i. terecht!) voor dergelijke wijzigingen van
> een in gebruik zijnde database.
Inderdaad kun je dit niet zondermeer lukraak uitvoeren. De T3 installer
doet het dan ook niet lukraak.
> Het betreft de volgende tabellen:
>
> cache_hash cache_imagesizes cache_md5params cache_pages
> cache_pagesection cache_typo3temp_log fe_sessions fe_session_data
> sys_log
>
> Totaal 9 tabellen. Het lijken -- wellicht afgezien van 'fe_sessions'
> en 'fe_session_data' -- niet de meest essentiële tabellen te zijn.
> Merk op dat van de zeven cache-tabellen 'cache_extensions' er niet
> bij zit; die is nog steeds gewoon MyISAM.
Bij andere installaties worden ook index_* tabellen meegenomen (van
indexed search).
> Daar ik onlangs alle vier de websites naar Typo3 4.2.1 heb geüpdate,
> kan het daar niet aan liggen, want de andere drie zijn gewoon
> volledig MyISAM.
Die conclusie kan ik niet delen. De T3 installer is behoorlijk "slim" en
zal goed hebben gekeken of een omzetting naar InnoDB kan. Wellicht is
MySQL in die installaties niet geconfigureerd voor InnoDB? Wellicht
volgde uit analyse door de installer dat omzetting problemen zou geven?
Even over de redenen waarom InnoDB voor enkele tabellen raadzaam is.
InnoDB en MyISAM kennen enorm veel verschillen. Heel kort door de bocht:
- MyISAM is vooral geschikt voor relatief kleine aantallen records in
tabellen waarin of veel gelezen of veel geschreven wordt.
- InnoDB is vooral geschikt voor relatief grote aantallen records in
tabellen waarin zoveel veel gelezen als veel geschreven wordt. Bovendien
biedt InnoDB ondersteuning voor "transacties"; oftewel het als een
geheel uitvoeren van een serie bewerkingen zonder dat andere processen
ondertussen de gegevens kunnen wijzigen (bijv. saldo berekenen,
controleren en bedrag afschrijven zonder dat ander proces tussen eerste
en derde stap het saldo kan beïnvloeden)
Vooral bij drukbezochte site kwamen er situaties voor waarbij sommige
bezoekers op anderen stonden te wachten bij het opvragen van pagina's.
Een langdurige zoekopdracht binnen indexed_search blokkeerde
bijvoorbeeld soms het oproepen van pagina's (die meteen werden
geïndexeerd! en dus moesten schrijven in de index_* tabellen). Hetzelfde
effect trad op bij caching en user sessies.
Deze situaties zijn eenvoudig op te lossen door toepassing van InnoDB.
--
Jigal van Hemert.
More information about the TYPO3-UG-dutch
mailing list