Betrachtet man MySQL- und InnoDB-Tabellen als bewährte Methode, den autocommit
-Modus global deaktiviert zu lassen, sodass alle SQL-Anweisungen im gesamten Code explizit festgeschrieben werden müssen? Führt dies zu Overhead- oder anderen ungünstigen Bedingungen?Ist es empfehlenswert, den "Auto-Commit" -Modus von MySQL in einer Webanwendung zu deaktivieren?
Antwort
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.
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.
- 1. Yii2: Wie Autocommit-Modus in einer Transaktion zu deaktivieren/aktivieren?
- 2. Wie Autocommit-Modus in SSMS deaktivieren?
- 3. Ist es empfehlenswert, den Destruktor zu überschreiben?
- 4. Deaktivieren Sie Autocommit in SQL Developer bei Verwendung von MySQL
- 5. Ist es empfehlenswert, Quelldateien einzuschließen?
- 6. Ist System.Web.Caching oder System.Runtime.Caching für eine .NET 4-Webanwendung empfehlenswert?
- 7. Ist es empfehlenswert, Lambda-Ausdrücke anstelle von foreach zu verwenden?
- 8. SnappyData als die Betriebsdatenbank. Ist es empfehlenswert?
- 9. Ist es empfehlenswert, Retrofit-Instanzen im Speicher zu belassen?
- 10. Ist es empfehlenswert, std :: size_t überall zu verwenden?
- 11. warum nicht mysql autocommit deaktiviert wird?
- 12. Ist es empfehlenswert, jQuery im Angular JS-Projekt zu verwenden?
- 13. Ist es möglich, den stillen Modus programmgesteuert in Android zu deaktivieren?
- 14. Ist es empfehlenswert, ein Objektliteral als Hashtabelle zu verwenden?
- 15. ist es möglich, den impliziten Aufruf von ToString() zu deaktivieren?
- 16. erlang odbc: Wie Autocommit für Oracle deaktivieren
- 17. Ist es empfehlenswert, Optional als Attribut in einer Klasse zu verwenden?
- 18. Ist es möglich, "Tooltip für versteckten Modus Benachrichtigung anzeigen" programmgesteuert auf UFT zu deaktivieren?
- 19. Ist es empfehlenswert, foreach für mehrere Einfügungen in einer Datenbank zu verwenden?
- 20. Ist es möglich den Ladebalken in zkoss zu deaktivieren?
- 21. Deaktivieren von MySQL Strict Mode
- 22. Azure WebJob von einer Webanwendung zu einer anderen Webanwendung verschieben
- 23. Ist es möglich, sowohl den CodeMirror: Velocity-Modus und den CodeMirror: HTML gemischten Modus zu mischen?
- 24. Massive Anzahl von "SET autocommit = 0/1" Abfragen in MySQL
- 25. So sichern Sie die Datenbank im Autocommit-Modus aus
- 26. wso2is - Ist es möglich, den grundlegenden Authentifikator zu deaktivieren?
- 27. mysql - Wie Modus mehrmals in einer Tabelle
- 28. Ist es möglich, MotionEvent.ACTION_POINTER_DOWN & UP zu deaktivieren
- 29. C-Funktion Prototyp: void f(). Ist es empfehlenswert?
- 30. Ist eine Hashtable als Wert einer anderen Hashtable empfehlenswert?