PHP mysqli :: autocommit VS"START TRANSACTION"

Dav*_*err 3 php mysql mysqli database-connection transactions

在我们的数据库层对象中,我们始终使用mysqli :: query执行"START TRANSACTION","ROLLBACK"和"COMMIT"SQL语句来管理事务.

今天做了一些研究,我在MySQL手册中发现了这一点,提到使用API​​级别调用来使用直接SQL来管理事务VS:

重要

许多用于编写MySQL客户端应用程序(例如JDBC)的API提供了自己的方法来启动可以(有时应该)使用的事务,而不是从客户端发送START TRANSACTION语句.有关详细信息,请参阅第20章,连接器和API或API的文档.

并且,仔细观察mysqli后,找到了用于管理事务的mysqli :: autocommit,mysqli :: rollback和mysqli :: commit方法(http://us.php.net/manual/en/class.mysqli.php) .

我的问题:使用这些mysqli等价物更好吗?为什么?我在任何地方都找不到提及这些函数是否或为什么比它们的直接SQL对应程序更好的表现.

bob*_*nce 5

有可能存在数据访问包装器何时需要知道事务何时开始/结束的原因.例如,在我的脑海中,连接池方案必须知道在事务中间何时完成了先前使用的连接,并且在这种情况下不将其返回到连接池以便重新使用.

我不知道任何问题mysqli会要求你使用本机方法而不是SQL版本,但它可能在一般情况下......这就是为什么它只是"有时应该".在任何情况下,PHP方法比SQL字符串版本更容易阅读,所以无论如何我都会说.