Railsアプリケーションを使用したMySQLスロークエリログの「コミット」2.3.5
-
27-10-2019 - |
質問
スロークエリログには「コミット」しているだけのエントリがたくさんありますが、約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 多くの場合。
たとえば、ネストされたモデル(多くのコメントがあるトピックなど)でレコードを保存する場合、Railsはトランザクションで更新(1トピックとnのコメント)をラップします データベースを一貫性に保つため.
編集
データベースを変更する2つ以上のクエリが互いにリンクされているとすぐに、トランザクションが必要ですが、Railsは単一のクエリでも開始/コミットを実行するようです。役に立たない自動コミットのアクティベーション/非アクティブ化を避けるために、このように設計されていると思います。
所属していません StackOverflow