簡體   English   中英

sqlite3 / C事務開始結束—溢出?

[英]sqlite3/C transaction begin end — overflow?

在嵌入式系統(其中存在內存問題)中的C中,為了優化性能, 多個插入被組合為更大的事務

直觀地,SQLITE必須將未發送的事務保留在有限內存中某個地方的緩存中。

  • 在兩次調用“ BEGIN TRANSACTION”和“ END TRANSACTION”之間是否有太多插入? 緩存會溢出嗎?
  • 或者,sqlite3是否會處理它並在溢出發生之前啟動事務?
  • 如果緩存可能溢出,那么調用BEGIN / END的最佳策略是什么?

您所做的任何更改都會寫入數據庫文件。 為了支持回滾,已更改的數據庫頁面的舊內容將保存在日志文件中。 提交事務時,日志文件將被刪除; 當您回滾事務時,這些頁面將被寫回。

因此,只要您有足夠的磁盤空間,對事務中的數據大小就沒有限制。

(緩存可以幫助避免某些寫操作,但是它可以透明地工作並且不會影響代碼的語義。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM