mysql - mysql慢查询日志中的"COMMIT"与rails应用程序2.3.5

标签 mysql ruby-on-rails database-performance

我在慢速查询日志中有很多条目,上面只有“COMMIT”,它们大约需要 3 秒,这很慢,但与其他一些查询相比并不糟糕。

条目看起来像这样:

COMMIT;
# Time: 120111 14:11:05
# User@Host: root[root] @ localhost []
# Query_time: 3.140228  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1326291065;
COMMIT; 
# Time: 120111 14:14:03
# User@Host: root[root] @ localhost []
# Query_time: 2.036250  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1326291243;
COMMIT;

我的问题是为什么 Rails 会发出“COMMIT”?

我的理解是它应该使用自动提交,除非我手动进行事务。

最佳答案

在许多情况下,

Rails 执行事务

例如,如果您使用嵌套模型保存记录(例如包含许多评论的主题),Rails 会将更新(1 个主题和 n 个评论)包装在事务中以保持数据库的一致性

编辑

一旦您有两个或多个相互链接的查询更改了数据库,您就必须有一个事务,但似乎 Rails 即使在单个查询上也会执行开始/提交。我认为它的设计方式是为了避免无用的自动提交激活/停用。

关于mysql - mysql慢查询日志中的"COMMIT"与rails应用程序2.3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826267/

相关文章:

php - 如何跳过 MySQL 中的 NULL 条目

ruby-on-rails - Postgres 没有创建用户的权限

javascript - 在 heroku 上部署的 rails 3.1 项目出现问题

MySQL查询以查找最近的成员

MySQL 触发器不适用于表插入

mysql - 如何使用触发器更改格式?

php - 使用表达式引擎回显多个类别 ID

ruby-on-rails - Rails 4:在ElasticSearch索引上从Wysiwyg编辑器清除文本

mysql - 数据库查询返回类似于 Twitter 的您关注的人的推文提要的结果的最佳方法是什么?