[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