【问题标题】:Databases: Where does the data go before a commit?数据库:提交前数据去哪了?
【发布时间】:2012-02-16 16:30:31
【问题描述】:

我们正试图找出代码中的内存泄漏。随着软件的运行,我可以看到内存使用量慢慢变得越来越大。每个操作都会在数据库中添加记录。

然后,我想知道,在我们提交更改之前,来自 INSERT 命令的数据真正去了哪里?数据是否添加到实际的数据库文件中并标记为“如果请求则回滚”?还是仅存储在内部内存中并在提交请求完成时转储?

如果有帮助,我们现在正在使用 Access。

【问题讨论】:

  • 我很怀疑内存泄漏与事务有关。事务存储在本地表中。但是,对于带有表单的常规版本的数据,您不使用访问事务,因此常规操作不适用于此处。
  • 不,不,我不是在寻求有关内存泄漏的帮助,也不认为事务是罪魁祸首。我只是想知道 SQL 命令(即 INSERT、UPDATE、DELETE 等)在哪里执行它们的操作。

标签: database ms-access


【解决方案1】:

作为“开始事务”的一部分,“数据”本身不会去任何地方或以任何方式改变,而是记录发出给它的命令列表。如果您随后使用“回滚”取消事务,则指令将被删除且不进行任何更改,否则如果发出“提交”,则它会以正确的顺序执行保存的指令。

由于指令存储在本地表中(正如 Albert 所提到的),这就是为什么当本地文件在整个内存中打开时您会看到内存增加的原因(因此我们在 Access 中拆分前端和后端数据库的原因避免在 RAM 上转储大文件)

另外值得一提的是,发出的任何 SQL 语句在保存之前都会检查其语法,以确保如果您正在运行多个 SQL;它不会在中途失败并使您的数据处于您不希望的状态。

为“说明”道歉我知道这是外行的术语,但我希望它是有道理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2019-06-18
    • 1970-01-01
    • 2013-09-02
    • 2020-10-29
    • 2019-10-30
    相关资源
    最近更新 更多