首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python的sqlite3 :在提交之前数据存储在哪里?

问使用python的sqlite3 :在提交之前数据存储在哪里?
EN

Stack Overflow用户
提问于 2013-08-29 15:55:23
回答 1查看 1.1K关注 0票数 7

我看到了一个类似于我的问题,但一般是针对SQL数据库的。它说,当您插入数据时,但在提交之前,只保存命令,并将它们保存在RAM中。只有在提交之后,RAM才会被清空,数据才会在数据库中。

但是,我想我注意到了使用sqlite3与Python的不同行为。我把我的承诺留在了脚本的末尾。我的程序耗尽了空间,中途中断了,但这不是因为内存已经满了。它说磁盘空间是满的,我确认我的计算机上确实满了,数据库文件占用了很大一部分。

我知道我需要更多的磁盘空间来创建这个数据库,这不会是一个问题,但我想知道,至少对于sqlite3和Python (如果特殊情况重要的话),在提交之前,我的数据/命令到底发生了什么?换句话说,它们是在哪里和如何被存储的?对于不同的数据库,有什么不同吗?在使用数据库时,我是否应该担心直到最后才提交,从而耗尽所有的RAM?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-29 15:56:35

SQLite在临时回滚日志文件中复制未经修改的数据页,并将更改应用到这些页面的内存副本中。当您进行了足够的更改,以致于内存成为一个问题时,更改将被排除到原始数据库中。回滚日记用于回滚不完整的事务。

不同的数据库如何处理回滚日志在很大程度上取决于数据库实现。兼容ACID的数据库必须将未提交的事务数据存储在某个地方,而磁盘支持的日志是一个明显的选择。

SQLite文档包括一个关于它如何实现事务的详尽解释。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18515649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档