什么时候实际插入DB?

时间:2011-05-02 01:36:03

标签: sql database

什么时候实际插入数据库?是在“INSERT”语句完成时吗?或者在“INSERT”语句后完成“COMMIT”语句?

3 个答案:

答案 0 :(得分:3)

如果您在事务内部运行,则提交事务。否则,立即。

答案 1 :(得分:3)

比你想象的要晚。这里的原则一般适用。

事务日志的重点是确保ACID在INSERT完成时发生电源故障时正常工作。 INSERT将作为恢复阶段的一部分(在大多数RDBMS中)前滚或回滚

因此,将事务日志条目确认为存储在媒体上更为重要。 然后 INSERT可以提交。

包含已更改行的数据页将最终在磁盘上 (检查点等),但不一定在成功提交时。

但是,数据页面在内存中并可供使用。

请注意,INSERT可能导致页面拆分,索引更新,触发器触发等等,所以我所说的内容已经简化了。

当数据在磁盘上结束时,这种方式或其他方式无关紧要:只要我能获得数据并且在发生电源故障时它是安全的

老旧但仍与SQL Server相关:SQL Server 2000 I/O Basics

我总结的是Write Ahead Logging

答案 2 :(得分:0)

取决于数据库/表的实现。 可能只是在集成事务日志时 - 直到该行仅插入事务日志和内存中。