关于一个频繁读写数据库的问题,怎么提高性能

zjysky 2008-10-08 09:48:39
我目前要设计一个对外webservice接口,这个接口是接收数据的,这个数据量很小就是一条记录而已,但是很频繁,然后我把数据存储在数据表
现在问题是这个接口要被频繁调用。所以就要频繁的写入数据表,这个数据表的数据可想而只也是很大的

有两个问题
1频繁写入数据库怎么设计,写入可以有延迟。
我的设想是先把数据存储在一个文件中,比如xml,然后设计一个后台程序来轮询定时处理这个文件。把里面的数据全部一次插入数据库。但是我担心对这个文件读写可能会有冲突

2怎么读这个数据表。这个数据表要频繁的来读取。也可以有延迟的。
我设想是分表来处理,

不知道大家还有什么好的建议


...全文
1604 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickwangge 2011-01-13
  • 打赏
  • 举报
回复
楼主,能留个QQ吗??我现在正好要考虑这个问题,帮一下,谢谢哈
networkit 2010-01-19
  • 打赏
  • 举报
回复
都一年多了,我也学习了不少,谢谢楼主这个问题了,现在在做Web聊天,正在考虑
一游 2008-11-12
  • 打赏
  • 举报
回复
这算什么,我做的要求更高,把我快了搞死!
zjysky 2008-10-08
  • 打赏
  • 举报
回复
幕白兄,这个提议太好了。就是啊。万一服务器挂了,怎么办了。不过这些信息丢失也无所谓,就是感觉少了写用户记录而已

这么一说还是xml文件比较好了吧??
zjysky 2008-10-08
  • 打赏
  • 举报
回复
打算就是cache中放dataset
cpp2017 2008-10-08
  • 打赏
  • 举报
回复
cache还是内存操作,也不难搞,代码也很简单,唯一的就是安全性问题,比如服务器down机,数据会丢失.
POPO_POPO 2008-10-08
  • 打赏
  • 举报
回复
LZ可关注一下DataSet
如果只是写数据库而没有并发的读 使用DataSet作为中介还是很不错的
zjysky 2008-10-08
  • 打赏
  • 举报
回复
难道就是使用一个页面隔以一段时间就刷新来引发时间,这样效果好吗

还有就是如果写如xml文件中,有什么好办法来避免读写冲突吗??
zjysky 2008-10-08
  • 打赏
  • 举报
回复
每条记录写一个文件!这个也考虑过,不过我记录数据都很小,但是频繁,这样一来会生成很多文件,不知道io文件处理好不好

使用webservice。先把数据汇总到cache中。然后定时去轮训这个cache,把里面的数据取出来插入数据库中。然后清空cache,这个在asp.net中轮训处理好像比较难搞吧
msnadair 2008-10-08
  • 打赏
  • 举报
回复
既然是WEBSERVICE,那就是服务启动时读出数据库表中所有数据加密保存到内存表中,往后所有操作都等于在内存中进行。服务结束时将内存中的数据更新到数据库表中。

中间可以加一定时器判断内存表中的数据达到了一定数时进行批量更新到数据库表中。
greystar 2008-10-08
  • 打赏
  • 举报
回复
不要使用xml
放到cache中去.特定时间再插入数据库.
取的时候也可以也放到cache中,可以定时一下.使用通知服务来获取最新的数据.
紫气东来_999 2008-10-08
  • 打赏
  • 举报
回复
频繁读写,用存储过程吧。。。
搞个事物加锁的。。。

稳啊
cpp2017 2008-10-08
  • 打赏
  • 举报
回复
长连接是指一个不关闭的连接去写.

xml文件,多个线程写可能会出现共享冲突,换个方法就是每条记录写一个文件.
cpp2017 2008-10-08
  • 打赏
  • 举报
回复
长连接是指一个不关闭的连接去写.

xml文件,多个线程写可能会出现共享冲突,换个方法就是每条记录写一个文件.
zjysky 2008-10-08
  • 打赏
  • 举报
回复
哦。长连接就是服务器推送技术吧。这个和我说的频繁读写数据库关系不大。我可以牺牲时效性的。
zjysky 2008-10-08
  • 打赏
  • 举报
回复
我就是楼主啊。

2楼说放到临时表里面,那不是还是要插入数据库中,关系不大吧,好像不能解决问题

幕白兄也来啊。
我数据比较重要的,你说的意思写内存。就是先把数据临时存储在内存中了。cache,session。application中了吧。但是也要过一段时间插入到数据库中的
你说的长连接是什么意思。
cpp2017 2008-10-08
  • 打赏
  • 举报
回复
如果数据不是十分重要的话,建议写内存.
如果重要的话,还是写表,可用长连接.
palm_java 2008-10-08
  • 打赏
  • 举报
回复
怎么看不到楼主 ?
写入 可以先放到临时表里 在特定时间内(服务器不忙的时候)在写入
啃代码 2008-10-08
  • 打赏
  • 举报
回复
楼主做什么系统啊.实时性要求那么高啊.
zjysky 2008-10-08
  • 打赏
  • 举报
回复
24楼说的不错。可以实现。
但就是担心文件共享冲突
加载更多回复(10)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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