什么时候实际插入数据库?是在“INSERT”语句完成时吗?或者在“INSERT”语句后完成“COMMIT”语句?
答案 0 :(得分:3)
如果您在事务内部运行,则提交事务。否则,立即。
答案 1 :(得分:3)
比你想象的要晚。这里的原则一般适用。
事务日志的重点是确保ACID在INSERT完成时发生电源故障时正常工作。 INSERT将作为恢复阶段的一部分(在大多数RDBMS中)前滚或回滚
因此,将事务日志条目确认为存储在媒体上更为重要。 然后 INSERT可以提交。
包含已更改行的数据页将最终在磁盘上 (检查点等),但不一定在成功提交时。
但是,数据页面在内存中并可供使用。
请注意,INSERT可能导致页面拆分,索引更新,触发器触发等等,所以我所说的内容已经简化了。
当数据在磁盘上结束时,这种方式或其他方式无关紧要:只要我能获得数据并且在发生电源故障时它是安全的
老旧但仍与SQL Server相关:SQL Server 2000 I/O Basics
我总结的是Write Ahead Logging
答案 2 :(得分:0)
取决于数据库/表的实现。 可能只是在集成事务日志时 - 直到该行仅插入事务日志和内存中。