Toon posts:

[MySQL] transaction, tabletypes en snelheid

Pagina: 1
Acties:

Verwijderd

Topicstarter
Omdat ik een script run die enkele query's uitvoert waarvan ik zeker moet zijn dat ze allemaal uitgevoerd worden, wil ik met transactions gaan werken. Nu heb ik binnenkort MySQL 4.0.18 tot mijn beschikking en zal het gebruik van transactions geen probleem zijn. Alleen zit ik wat met snelheid. Niet alle tabletypes binnen MySQL kunnen met transactions omgaan voor zover ik begrijp uit de documentatie van mysql.com.

Nu heb ik een test script gemaakt en daar wat tijdsmetingen gedaan. Bij het tabletype MyISAM (die geen transactions ondersteunt) kom ik er af met 0.040 seconde, maar gebruik het tabletype DBD (wat wel transactions ondersteunt) dan kom ik uit op 0.100. Nu is mn test script maar 1 % van wat het daadwerkelijk moet gaan doen en gaat het script uiteindelijk denk ik wat te veel tijd kosten, want zoals het er nu uit ziet duurt het gewoon twee en half keer zo lang voor dat alles uitgevoerd is. Ik heb helaas de mogelijkheid niet om te testen met het tabletype InnoDB (wat als het goed is ook transactions ondersteunt) en kan ik daar dus geen testen mee draaien.

Binnen het script gebeuren relatief weinig selects, wel veel updates en inserts.

Mijn vraag is: hoe gaan jullie om met transactions binnen MySQL, welk tabletype is volgens jullie het snelste en wat zijn jullie ervaringen? Ik ben wel bekend met het gebruik van transactions in MS SQL server 2000, maar goed daar heb ik niet zoveel aan als het om snelheid gaat in MySQL. O ja: een andere DBMS dan MySQL is ff geen optie :)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19:24
Heb je INNODB al geprobeerd? Deze ondersteund ook transactions.
edit:
/me heeft wereens ergens overheen gelezen 8)7

[ Voor 33% gewijzigd door djluc op 08-04-2004 21:09 ]


Verwijderd

Topicstarter
Verwijderd schreef op 08 april 2004 @ 19:08:
Ik heb helaas de mogelijkheid niet om te testen met het tabletype InnoDB (wat als het goed is ook transactions ondersteunt) en kan ik daar dus geen testen mee draaien.
;)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Toch is InnoDB waarschijnlijk wel de engine om mee te werken. Niet voor niet gebruiken ze dat ook op GoT. Ik weet niet wat voor (ongetwijfeld slechte :P) reden je hebt om die niet te kunnen testen, maar de kans is vrij groot dat je Inno moet hebben.

Rustacean


Verwijderd

Topicstarter
InnoDB wordt standaard bij mySQL 3.23 niet meegleverd of hoe je het noemen wilt. Om nu aan mn provider te vragen om dat te installeren zonder onderbouwde achtergrond informatie leek me niet slim, vandaar onder andere mn topic... Maar als de kans groot is dat ik daar gebruik van moet gaan maken wil ik snelheid behouden van MyISAM en kunnen werken met transactions dan zal ik eens een vriendelijk verzoek indienen :)

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Dan installeer je mySQL toch ff lokaal ...

Verwijderd

Topicstarter
hmmm heb ik al eens gedaan op mn windows bak, en als ik daarop scripts ga runnen die bestanden gaat parsen en die in de db moet prakken (gaat dan om 50.000 records in één keer) dan looptie vast of wordtie mega traag. En op de server doetie daar nog geen 10 seconde over. Moet maar eens een goeie linux bak regelen...

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op 09 april 2004 @ 08:15:
hmmm heb ik al eens gedaan op mn windows bak, en als ik daarop scripts ga runnen die bestanden gaat parsen en die in de db moet prakken (gaat dan om 50.000 records in één keer) dan looptie vast of wordtie mega traag. En op de server doetie daar nog geen 10 seconde over. Moet maar eens een goeie linux bak regelen...
Dit soort scriptjes draai ik ook op mijn dev-bak, met random gegeneerde inserts als benchmark. 50.000x inserten is geen probleem.

Config:
MySQL 3.23, Apache, PHP, Windows XP SP1, AMD Athlon XP 2600+, 1GB mem. Dus het kan best.

Verwijderd

Ik heb niet veel ervaring met MySQL maar wel met MS SQL en Oracle. Maar om even het eigenlijk probleem duidelijk te krijgen:
Waarom ben je zo bang voor de tijd die het kost? Als je veel updates en inserts doet mag het toch ook wat tijd kosten?
Volgens je eigen test kost 1% van het uiteindelijke script 0.100 seconden. Dus het complete script doet er dan iets van 10 seconden over. Is dat te veel? Hoeveel tijd mag het dan kosten?

Blijkbaar is de integriteit van je mutaties belangrijk en daarom wil je transacties gebruiken. Je moet je pas zorgen maken over de gebruikte tijd als je daar te weinig van hebt :)
Bij het project waar ik nu aan werk hebben we een script dat een tabel opbouwt met 10.000.000 records (10 miljoen). Dat script draait 1,5 dagen om die tabel op te bouwen. Maar ja, die tijd kost het nu eenmaal en wordt gewoon ingeplanned, geen probleem.
Pagina: 1