将sqlite数据库从内存同步到文件
发布时间:2020-12-12 19:13:38 所属栏目:百科 来源:网络整理
导读:我正在编写一个应用程序,它必须经常记录信息,比如说,一秒钟两次.我希望将信息保存到sqlite数据库,但是我不介意每十分钟提交一次磁盘更改. 使用文件数据库时执行查询需要很长时间,并使计算机滞后. 一个可选的解决方案是使用内存数据库(它适合,不用担心),并不
我正在编写一个应用程序,它必须经常记录信息,比如说,一秒钟两次.我希望将信息保存到sqlite数据库,但是我不介意每十分钟提交一次磁盘更改.
使用文件数据库时执行查询需要很长时间,并使计算机滞后. 一个可选的解决方案是使用内存数据库(它适合,不用担心),并不时将其同步到磁盘, 可能吗?有没有更好的方法来实现它(你能告诉sqlite只在X查询后提交到磁盘吗?). 我可以用Qt的SQL包装器来解决这个问题吗? 假设您有一个名为“disk_logs”的磁盘数据库,其中包含一个名为“events”的表.您可以将内存数据库附加到现有数据库:ATTACH DATABASE ':memory:' AS mem_logs; 在该数据库中创建一个表(完全在内存中)以接收传入的日志事件: CREATE TABLE mem_logs.events(a,b,c); 然后在应用程序停机期间将数据从内存表传输到磁盘表: INSERT INTO disk_logs.events SELECT * FROM mem_logs.events; 然后删除现有内存表的内容.重复. 这很复杂但是……如果你的记录跨越多个表并且与外键链接在一起,那么当你从内存表复制到磁盘表时,保持这些表同步可能会很麻烦. 在尝试这样的事情(令人不舒服的过度设计)之前,我还建议trying to make SQLite go as fast as possible. SQLite应该能够轻松地手工操作>每秒50K记录插入.每秒两次的几个日志条目不应导致显着的减速. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |