MySQLi Autocommit

  • Beste ICT'ers,


    Ik ben mijn scripts aan het overzetten in MySQLi. Nu staan er in veel scripts online autocommit uit. Dit zorgt ervoor dat de queries niet gelijk worden uitgevoerd. Maar wat is het nut daarvan? Moet ik het ook uitzetten?



    Oplossing;


    Autocommit zorgt ervoor dat je queries automatisch worden uitgevoerd. Met autocommit kan je ook rollback niet gebruiken.
    Als autocommit uit staat kan je handmatig meerdere queries tegelijk versturen. Minder database calls nodig.

    Met vriendelijke groet,


    Victor
    Beheerder ICTscripters

    Bewerkt 2 keer, laatst door victor: Oplossing gevonden met behulp van Reza ().

  • Het voordeel van werken met transacties (daarvoor moet je autocommit uitzetten), is niet zozeer het verlagen van het aantal aanvragen op de database, maar het feit dat transacties aan de ACID-properties voldoen:


    * Atomair: Een transactie wordt altijd in zijn volledigheid uitgevoerd, of helemaal niet uitgevoerd.
    * Consistent: Naar een transactie is de data in de database altijd consistent. Het voldoet dus aan alle vastgelegde business rules.
    * Geïsoleerd: Transacties beïnvloeden elkaar nooit en zitten elkaar niet in de weg.
    * Duurzaam: Als een transactie voltooid is, wordt deze niet meer teruggedraaid.


    Zie hiervoor ook: https://nl.wikipedia.org/wiki/ACID


    Een voorbeeld, stel je hebt accounts, en deze kunnen geld naar elkaar over maken, de queries zijn dan als volgt:


    Code
    START TRANSACTION;
    UPDATE account SET money = money + 100 WHRE owner = 'Victor';
    UPDATE account SET money = money - 100 WHERE owner = 'Stefan';
    COMMIT;


    Je wilt nu niet dat de transactie maar half wordt uitgevoerd, want dan verdwijnt er geld (atomair). Ook wil je niet dat de business rules worden overtreden, dan kan iemand in het rood komen terwijl hij dat niet mag (consistent). Daarnaast wil je niet dat een andere transactie er ineens voor zorgt dat Stefan ineens geen geld meer heeft, terwijl Victor het geld al heeft gekregen (geïsoleerd). Ook wil je niet dat de transactie achteraf nog wordt teruggedraaid (duurzaam).


    Betreft isolatie van transacties, kijk ook eens naar ISOLATION LEVELS:
    https://en.wikipedia.org/wiki/…on_%28database_systems%29

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!