2017-12-01 2 views

Antwort

2

Meine Erfahrung ist besser, es standardmäßig zu aktivieren, wenn Ihr Framework es unterstützt. Wenn Sie das Festschreiben vergessen, kann die nicht committete Transaktion viele Ressourcen sperren.

0

Es fügt keinen Overhead hinzu. Jede Autocommit-Transaktion führt die gleiche Arbeit aus wie eine Transaktion mit explizitem Begin und Commit, aber die Autocommit-Transaktionen werden sofort nach Abschluss jeder SQL-Anweisung festgeschrieben.

Es gibt keinen Nachteil beim Verlassen von Autocommit aktiviert. Wenn Sie eine Transaktion explizit starten, wird Autocommit in dieser Sitzung nur bis zum Festschreiben deaktiviert. Dann geht es zurück zu Autocommit, bis Sie explizit eine andere Transaktion beginnen.

Das Risiko, globalcommit global abzuschalten, wie @Sherry darauf hinweist, ist, dass Sie Code irgendwo haben können, der nicht ausdrücklich sofort festlegt. Dies lässt die Transaktion in Gang, wenn Sie es nicht beabsichtigt haben. Dadurch behält die Sitzung Sperren und blockiert möglicherweise andere Sitzungen. Es verhindert auch eine rechtzeitige Bereinigung des Rollback-Segments.

In meinen Anwendungen bleibe ich bei Autocommit, es sei denn, ich habe einen speziellen Fall, in dem mehrere Anweisungen in einer einzigen Transaktion gesammelt werden sollen. Dann starte ich einfach eine Transaktion für diesen speziellen Fall. In jedem Fall lasse ich den globalen Autocommit aktiviert.

Verwandte Themen