使用mysql时禁用BEGIN/COMMIT


Disable BEGIN/COMMIT when using mysqli

我有一个应用程序,从主机获取心跳(一个简单的http请求),通常主机每x分钟生成一个请求。这导致大量完全独立的php页面运行,这些页面执行读取查询,然后(可能)生成一个单行插入到RDS数据库,如果成功则无关紧要(一个失败的beat不是警报的原因,几个是)

然而,对于mysqli,我在IOPs上有很大的开销——它发送一个BEGIN,我的单行插入,然后一个COMMIT——因此看起来使用了三个IOPs,而我只需要一个。

是否有办法完全避免事务?我可以更改auto_commit,但这是无用的,因为处理程序的每次运行都是分开的,因此没有其他插入可以与此插入分组。即使关闭auto_commit,仍然会运行一个事务,但只有在连接关闭时才会结束事务(无论如何,这都发生在一次插入之后)。

或者我应该切换到原始mysql处理效率(大量的工作)?旧的mysql php库(已弃用)?别的吗?

如果你真的不需要事务,你可以为你不支持事务的表使用MyISAM存储引擎。

我使用always:

SET AUTOCOMMIT=1
为我的InnoDB数据库,我不需要使用事务连接数据库后,