私は効率性の点で、データベースとの接続の量を最小限に抑えること(特に、強力なネットワークトラフィックの状況で)が望ましいため、小さなクエリではなく1つの大きなクエリではなく、トランザクションは大きなクエリのようですか?
私の質問は、データベース操作のセットを分離して霧化すること(そして、それらのうちの1つが失敗した場合ロールバックすること)の他に、トランザクションを実行することです。行為は大きなクエリのようですか?つまり、多くのデータベース操作を行う必要がある場合は、トランザクションでラップして単一の大きな操作にすることができますか?あなたは多くのデータベース操作を行う必要がある場合
質問の精神が「トランザクションを使用してパフォーマンスを向上できますか?その答えは大声ではありません!トランザクションは、複数の操作のアトミック性、ロールバック機能など、多くのメリットをもたらします。しかし、これらの機能にはコストがかかり、パフォーマンスコストがかかります。 – Asaph
@Asaphそれは本当ですか?トランザクションから大きな利益を得る例を作ることは非常に簡単です。例えばインサートごとに1つのSQLステートメント、SQLステートメントごとに1つのトランザクション(トランザクションを明示的に使用しない場合は、多くの場合、これがデフォルトです)。テストを繰り返しますが、100個のSQL文をトランザクション内に配置します。トランザクションごとに100個の挿入を行うものは、少なくともテストしたすべてのDBMSについて、1トランザクションあたり1個の挿入を行うよりもずっと高速になります。 – nos
@nosそれは面白いです。私はバッチインサートの利点を見てきました。たとえば、MySQLの複数行の挿入文(暗黙的なトランザクションで実行すると思います)などです。私は規模のパフォーマンスの向上を見てきました。バッチ処理の効果を達成するためのトランザクションアプローチを試みることは決してありませんでした。意味をなさない – Asaph