开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1019|回复: 9
打印 上一主题 下一主题
收起左侧

[易语言] sqlite3内存数据库内存递增问题

[复制链接]
结帖率:57% (4/7)
跳转到指定楼层
发表于 2024-1-10 09:44:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   江西省南昌市
13精币
https://125.confly.eu.org/thread-14808507-1-1.html 原帖地址  使用的是https://125.confly.eu.org/forum.php?mod ... 0%E6%8D%AE%E5%BA%93这个模块    内存版和非内存版都一样       我的问题说的很明确     网络采集数据保存到数据库   所以是几分钟采集一次    数据是不停的在增加的    现在每增加一次数据内存就要增加10多M内存    上来了就下不去了   不会自动释放      到了1G多的内存占用程序就会崩溃       按照各路大神说的需要关闭     我关掉连数据都没办法采集了  再次打开读写也没有用      求数据库大佬解答


补充内容 (2024-1-10 09:48):
大佬可以看看我在原帖中的问题    就会明白我的问题点在哪里了    现在就是每增加一次数据到数据库中导致内存递增不会自动释放的问题

补充内容 (2024-1-10 13:29):
也许来个懂连接池使用的大佬能解决我的难题    我觉得应该在我每次入库后关闭数据库的连接   但是连接池依旧不影响查数据和下次新增


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:57% (4/7)
来自 8楼
 楼主| 发表于 2024-1-10 13:49:04 | 只看该作者   江西省南昌市
// 初始化连接池
for i = 1 to initialPoolSize
    connection = createNewConnection()
    pool.addConnection(connection)

// 请求连接
connection = pool.getConnection()

// 执行数据库操作
executeQuery(connection, "SELECT * FROM table")

// 释放连接
pool.releaseConnection(connection)
我还是自己琢磨吧     这要把这个VB写法弄懂了    然后配合ADODB数据库连接池我觉得突破口就在这了
回复

使用道具 举报

结帖率:100% (1/1)
7
发表于 2024-1-13 03:16:46 | 只看该作者   河南省漯河市
一样的问题。 我这边好的一点是写入的数据很小。但是每次读取都会有几K的内存增加。现在没办法准备改多维数组对照数据写入。。。少个读取的步骤。 因为我每天修改的次数不多。目前只想到这个办法了。 你解决了的话。 也让我请教下
回复

使用道具 举报

结帖率:57% (4/7)
6
 楼主| 发表于 2024-1-10 13:25:29 | 只看该作者   江西省南昌市
幻月工作室 发表于 2024-1-10 10:31
内存增加的多可能是你表创建的有问题,是否限制了字段长度,是否有多个索引,都是影响表空间的因素。而且sq ...

在SQLite中,VACUUM命令主要用于整理数据库文件并回收未使用的磁盘空间,而不是直接清理内存。执行VACUUM命令可以使数据库文件更加紧凑,并且有助于提高性能和减少磁盘占用。

如果你的应用程序中存在内存不断增长的问题,通常情况是由于程序中的内存泄漏或者资源未正确释放所导致。执行VACUUM命令并不会直接解决这些问题。

要解决内存不断增加的问题,你需要仔细检查应用程序的代码,确保在每次数据库操作后都正确关闭连接、释放资源,并且避免创建过多的无用对象。另外,你还可以考虑使用工具来分析内存使用情况,便于查找内存泄漏的根本原因。

总之,虽然VACUUM命令对于整理数据库文件很有用,但它并不是解决应用程序内存递增问题的方法。解决内存递增问题需要仔细调查代码,并确保数据库连接和其他资源被正确管理和释放。

点评

楼主很搞笑,没看明白我的意思,还不知道从哪复制一段话,你自己慢慢研究吧   吉林省长春市  发表于 2024-1-10 15:42
回复

使用道具 举报

结帖率:57% (4/7)
地下
 楼主| 发表于 2024-1-10 12:42:49 | 只看该作者   江西省南昌市
w80561307 发表于 2024-1-10 11:57
历史数据爬出来是否会有重复,如果有的话加上唯一性主键/索引,避免重复入库,再就是delete语句清除不需 ...

不会重复入库的      我只会采集真正需要的东西入库     现在的问题就是我只要入库就增加内存  删除历史数据不可取      无解    大佬还有啥招请告知
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 9 天

地板
发表于 2024-1-10 11:57:33 | 只看该作者   福建省福州市
lele51998 发表于 2024-1-10 11:50
这种语句不会真的把我历史数据给清了吧。。。

历史数据爬出来是否会有重复,如果有的话加上唯一性主键/索引,避免重复入库,再就是delete语句清除不需要的记录,清除后面跟着压缩命令语句。
回复

使用道具 举报

结帖率:57% (4/7)
板凳
 楼主| 发表于 2024-1-10 11:50:21 高大上手机用户 | 只看该作者   江西省赣州市
w80561307 发表于 2024-1-10 10:58
可以使用SQL语句定期清理历史数据,结合SQL压缩语句(VACUUM;)使用。
例如:
delete  from ... where .... ...

这种语句不会真的把我历史数据给清了吧。。。
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 9 天

沙发
发表于 2024-1-10 10:58:01 | 只看该作者   福建省福州市
可以使用SQL语句定期清理历史数据,结合SQL压缩语句(VACUUM;)使用。
例如:
delete  from ... where ....;
vacuum;
回复

使用道具 举报

结帖率:100% (1/1)
楼主
发表于 2024-1-10 10:31:58 | 只看该作者   吉林省长春市
内存增加的多可能是你表创建的有问题,是否限制了字段长度,是否有多个索引,都是影响表空间的因素。而且sqilite确实是有一些垃圾数据留存,需要执行VACUUM命令才能清理掉。内存版一般是保存临时数据用,速度会相对快一点。非内存版是把数据保存在磁盘上,但数据是永久保存的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表