2012-02-16 10 views
2

私たちはコードでメモリリークを突き止めようとしています。ソフトウェアの実行に伴い、メモリ使用量が徐々に大きくなることがわかります。各操作はレコードをデータベースに追加します。データベース:コミットする前のデータはどこにありますか?

次に、私は変更をコミットする前にINSERTコマンドのデータが本当にどこに行くのだろうと思いましたか?データは実際のデータベースファイルに追加され、「要求された場合はロールバックする」とフラグが立てられていますか?コミット要求が行われたときに内部メモリに格納され、ダンプされるだけですか?

私たちが役に立ったら、今はAccessを使用しています。

+0

メモリリークは、トランザクションと何か関係があります。トランザクションはローカルテーブルに格納されます。ただし、フォームを使用した通常のデータの場合は、アクセストランザクションを使用していないため、通常の操作はここでは適用されません。 –

+0

いいえ、いいえ、私はメモリリークについての助言を求めておらず、トランザクションを原因とみなしていません。私はSQLコマンド(INSERT、UPDATE、DELETEなど)がどこで実行されるのか疑問に思っていました。 –

答えて

1

"開始トランザクション"の一環として、 "データ"はどこにも行きませんし、何らかの方法で変更するのではなく、発行されたコマンドのリストを記録します。 「ロールバック」でトランザクションをキャンセルすると、命令は破棄され、変更は行われません。それ以外の場合は、「コミット」が発行された場合、正しい順序で保存された命令が実行されます。

命令がローカルテーブルに格納されているので(Albertが述べたように)、これはローカルファイルがメモリ全体で開かれたときにメモリが増加することを示しています(なぜ、フロントエンドデータベースとバックエンドデータベースをAccess

また、複数のSQLを実行している場合には、SQL文をチェックして保存する前に、そのSQL文のチェックを済ませておくことをお勧めします。途中で失敗することはなく、あなたが意図していない状態にデータを残します。

「説明書」に対する謝罪私はこれは一般人の言葉ですが、意味があると思います。

関連する問題