在Web应用程序中禁用MySQL的“自动提交”模式是一种好习惯吗?

时间:2017-12-01 06:46:20

标签: mysql innodb autocommit

关于MySQL和InnoDB表,是否认为全局保持sub("^\\D*","","Gilroy Plant Place 777 Morello Ave") # [1] "777 Morello Ave" 模式被禁用是一种好习惯,因此必须明确提交代码中的所有SQL语句?这会引入任何开销或其他不利条件吗?

2 个答案:

答案 0 :(得分:2)

如果您的框架支持,我的经验最好默认启用它。如果您忘记提交,则未提交的事务可能会锁定大量资源。

答案 1 :(得分:0)

它不会增加任何开销。每个自动提交事务与具有显式开始和提交的事务执行相同的工作,但自动提交事务在每个SQL语句完成后立即提交。

启用自动提交没有任何缺点。如果显式启动事务,则仅在您提交之前关闭该会话中的自动提交。然后它会返回自动提交,直到您明确开始另一个事务。

@Sherry指出,全球关闭自动提交的风险是,您可能在某个地方没有明确提交的代码。如果您没有打算这样做,这将使交易继续进行。这使得会话保持锁定,可能阻止其他会话。它还禁止及时清理回滚段。

在我的应用程序中,我坚持使用autocommit,除非我有一个特定的情况,我希望将多个语句收集到一个事务中。然后我就开始针对该特定案例进行交易。在任何情况下,我都会启用全局自动提交。