如何设法限制 数据库的记录条数,不能无限制的撑爆了

yhec 2009-05-14 09:16:44
如何设法限制 数据库的记录条数,不能无限制的撑爆了
本地库MSACCESS,远程库是SQLSERVER,
特别是一个小型控制系统,每天都要大量的数据要写到库里,
写爆了就麻烦了,许多控制系统要求是免维护的,
所以,这个限制记录数一直对许多人开发程序都是很重要!
限制的办法就是: 老数据被覆盖了就行了,这就象个队列数组。
说起来简单,做起来麻烦,谁有经验说一说?

...全文
538 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwd100815 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 padiu01 的回复:]
引用 3 楼 Ring_Pt 的回复:
insert的时候判断条数 如果数据库的数据超过一定笔数
就把insert改成update update uid最小的那笔

觉得这个方法要好得多,因为每天插进去的记录数都是不同的
要是采用定时删除的方法,那么删除的条数该怎么设置呢?按时间?还是按时间排序后删除固定的N条?
如果当前插入的数据很大,删除的条数要是又不够多,也会使数据库爆掉的吧
所以,只要插入的数据不到数据库极限,采用update 的方…
[/Quote]

up
songguozhi 2009-05-18
  • 打赏
  • 举报
回复
使用定期备份或者建立新的数据库最好,不讨把数据库直接就给覆盖或者删除了,这是很忌讳的事情了
Behard 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 i_love_pc 的回复:]
覆盖掉不是个好办法,建议定期导出备份...
[/Quote]

建议每一段时间使用一个 Access 文件,新建一个文件就不会出现问题了,而且之前的数据还在
yangangs 2009-05-18
  • 打赏
  • 举报
回复
关键看对数据的保存时间有要求没,没有要求很简单,插入时直接删除较早的就行了
i_love_pc 2009-05-18
  • 打赏
  • 举报
回复
覆盖掉不是个好办法,建议定期导出备份...
BCBPLC 2009-05-18
  • 打赏
  • 举报
回复
覆盖掉老记录的办法很简单,增加一个“时间”顺序的字段,建议不要用“日期”/“时间戳”,虽然它们也行,
但一些缺陷也很明显,我试验了,就用一个增量计数的字段,这相当于“时间戳”,计数值小的就是老记录,就
这么简单!每增加一个记录,计数值增一写入此字段,实现很简单
三时间戳的比较:

日期: 客户一旦有意无意的改变了用于参照的系统时间,会带来麻烦;
时间戳:SQLSERVER才有,看不见值,ADODATASET要刷新才能起作用;
计数: 可确上面的所有缺陷,就用一个增量的计数,适用于任何数据库系统,
    SQL SERVER可8字节的大整数,ACCESS只能4个字节整数
yhec 2009-05-18
  • 打赏
  • 举报
回复
删除了再插入,会留下洞,文件可能越来越大
yhec 2009-05-18
  • 打赏
  • 举报
回复
控制系统要求是免维护,没人去备份/删除,不能把系统撑爆/搞慢,
所以只对11楼的建议感兴趣!
lirg8405 2009-05-16
  • 打赏
  • 举报
回复
当记录大于一个数时,先执行删除操作,要删除什么自己定了,再进行插入
yhec 2009-05-15
  • 打赏
  • 举报
回复
update
uid 最小的那笔 ? uid是什么
padiu01 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Ring_Pt 的回复:]
insert的时候判断条数 如果数据库的数据超过一定笔数
就把insert改成update update uid最小的那笔
[/Quote]
觉得这个方法要好得多,因为每天插进去的记录数都是不同的
要是采用定时删除的方法,那么删除的条数该怎么设置呢?按时间?还是按时间排序后删除固定的N条?
如果当前插入的数据很大,删除的条数要是又不够多,也会使数据库爆掉的吧
所以,只要插入的数据不到数据库极限,采用update 的方法,可以完全放心
我不懂电脑 2009-05-14
  • 打赏
  • 举报
回复
根据时间戳定时清除记录啊
Jim@luckeeinc.com 2009-05-14
  • 打赏
  • 举报
回复
insert的时候判断条数 如果数据库的数据超过一定笔数
就把insert改成update update uid最小的那笔
我来看看CB 2009-05-14
  • 打赏
  • 举报
回复
自己怎么控制都行啊
lhy 2009-05-14
  • 打赏
  • 举报
回复
写个SQL把时间比较早的删除不就得了,每天执行一次。
fairchild811 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Ring_Pt 的回复:]
insert的时候判断条数 如果数据库的数据超过一定笔数
就把insert改成update update uid最小的那笔
[/Quote]

这个方法挺好啊
yhec 2009-05-14
  • 打赏
  • 举报
回复
我想了想:要有一时间字段表示记录新旧,问题是:时间的参考基准要一致,特别是客户端
如果用户乱改时间,将影响记录的更新并带来数据混乱的严重后果。设法用服务端时间,
正在想法子

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧