Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
离开MySQL'是一种好的做法吗;s";“自动提交”;在web应用程序中禁用模式?_Mysql_Innodb_Autocommit - Fatal编程技术网

离开MySQL'是一种好的做法吗;s";“自动提交”;在web应用程序中禁用模式?

离开MySQL'是一种好的做法吗;s";“自动提交”;在web应用程序中禁用模式?,mysql,innodb,autocommit,Mysql,Innodb,Autocommit,关于MySQL和InnoDB表,全局禁用autocommit模式是否被认为是一种良好的做法,这样整个代码中的所有SQL语句都必须显式提交?这会带来任何开销或其他不利条件吗?我的经验是,如果您的框架支持默认情况下启用它会更好。如果忘记提交,未提交的事务可能会锁定大量资源。它不会增加任何开销。每个autocommit事务与具有显式begin和commit的事务执行相同的工作,但autocommit事务在每个SQL语句完成后立即提交 启用自动提交没有任何负面影响。如果显式启动事务,则只有在您提交之前,

关于MySQL和InnoDB表,全局禁用
autocommit
模式是否被认为是一种良好的做法,这样整个代码中的所有SQL语句都必须显式提交?这会带来任何开销或其他不利条件吗?

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

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

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

正如@Sherry所指出的,在全球范围内关闭自动提交的风险在于,您可能有一些代码没有及时明确提交。这使得交易在您可能不打算这样做的情况下继续进行。这使得会话保持锁定,可能会阻塞其他会话。它还禁止及时清理回滚段

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