gpt4 book ai didi

c - sqlite3/C 事务开始结束——溢出?

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:32 25 4
gpt4 key购买 nike

在嵌入式系统(内存是个问题)上的 C 语言中,为了优化性能,多个插入被组合成更大的事务

直觉上,SQLITE 必须将未发送的事务保存在有限内存中某处的缓存中。

  • 是否有可能在“BEGIN TRANSACTION”和“END TRANSACTION”的两次调用之间插入太多?缓存会溢出吗?
  • 或者,sqlite3 会处理它并在溢出发生之前启动事务吗?
  • 如果缓存可能溢出,调用 BEGIN/END 的最佳策略是什么?

最佳答案

您所做的任何更改都会写入数据库文件。为了支持回滚,已更改的数据库页面的旧内容保存在日志文件中。当你提交一个事务时,日志文件就被删除了;当您回滚事务时,这些页面会被写回。

因此只要您有足够的磁盘空间,事务中的数据大小就没有限制。

(缓存可以帮助避免一些写入,但它透明地工作并且不会影响代码的语义。)

关于c - sqlite3/C 事务开始结束——溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40420815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com