Показват се публикациите с етикет mysql transactions. Показване на всички публикации
Показват се публикациите с етикет mysql transactions. Показване на всички публикации

сряда, 12 януари 2011 г.

MySQL транзакциите като форма на оптимизация?

Повечето от нас използват транзакциите на базите данни основно за дебъгинг, така че ако нещо се счупи, винаги имаш възможност да rollback-неш промените без да загубиш никакви данни.

Днес, гледайки един уебинар за Zend Framework + Doctrine 2, осъзнах че транзакцията освен за дебъгинг на евентуални възникнали проблеми могат да са и сериозна оптимизация на sql заявките.

Точно така - оптимизация.

Във уебинара имаше benchmark на insert на данни в база данни през EntityManager-а на Doctrine2 и с обикновенни mysql_query() заявки. При 20 завъртания на цикъла около тези insert-и, резултатите бяха следните:

Doctrine 2: 0.0094 секунди
mysql_query: 0.0165 секунди

Причината Doctrine2, макар да използва доста по-голямо количество код, да победи е, че там автоматично се използват транзакции. За да се докаже това твърдение, бяха показани резултати от същият benchmark, само че с употреба на транзакции при mysql_query().

Резултатите са повече от убедителни:

Doctrine 2: 0.0094 секунди
mysql_query: 0.0028

Можете да си направите сами извода, но аз лично няма да пропусна шанс да ползвам транзакции, дори да не ми трябват за дебъгинг :)