当前位置:编程学习 > C#/ASP.NET >>

高分寻求解决方案

小弟帮人开发了一套出租车监控定位系统,大概共有2000台出租车,每台出租车都装有GPS定位器,每台车每10秒实时的将定位数据发送到服务器,服务器采用VS2008编写了一个WINDOWS系统服务来接收数据,传输协议为TCP,数据保存在数据库,另外提供一个网站用来监控每台车的位置,网站不断地从数据库中读取最新的数据来更新车辆的最新位置。目前遇到的问题主要是性能问题:数据量大导致网页查询慢。2000台车每天24小时GPS不间断传输数据,GPS每10秒发送一次数据到服务器,每天服务器接收的总的数据量就是2000台X24小时X60分钟X每分钟6次=1728万条记录。这样系统会运行越来越慢。虽然创建了索引,定期清理数据,但随着时间越来越长,性能越来越慢。我想可能这种工作方式不太好,但水平有限,实在想不到有别的方法可以解决这个问题,我的想法是能不能不用数据库,WINDOWS服务接收到定位数据后,保存在内存里或者其它什么地方,然后网页可以用什么方法可以直接读取到数据? --------------------编程问答-------------------- 如果页面只是展示当天的数据 可以将当天的数据和 过期的数据分表存
利用SQL的自动任务 0点定时将昨天的数据转到历史表
做一个视图将当天和历史数据合并 为查全部位置数据时提供 --------------------编程问答--------------------
引用 1 楼 jsyhello 的回复:
如果页面只是展示当天的数据 可以将当天的数据和 过期的数据分表存
利用SQL的自动任务 0点定时将昨天的数据转到历史表
做一个视图将当天和历史数据合并 为查全部位置数据时提供


目前已经是这样做了,当天的数据一个表,历史数据一个表,晚上自动将当天数据转移到历史数据表。网站访问用户少的话没有问题,多了就会经常出现数据库连接超过最大连接数,资源管理器里显示SQL的CPU占用率经常是100% --------------------编程问答-------------------- 海量数据处理 --------------------编程问答-------------------- 我的想法是能不能不用数据库,WINDOWS服务接收到定位数据后,保存在内存里或者其它什么地方,然后网页可以用什么方法可以直接读取到数据

这种情况必须不能使用数据库,, 想记录数据再用数据库, 车辆发送信息到window服务保存内存中, 网站可以通过消息队列 获取,获取之后就删除,

消息队列 提供进程间通讯, 所以这种想法是可以实现的,也是这种情况下最完美的解决方案,频繁的查询数据库不行 --------------------编程问答-------------------- 这种就是每一天备份一下数据库 到硬盘里

用job或者其他的方法来定时备份数据库

几天备份一次 或者一天备份一次

查询的时候采用分布式数据库查询

job备份数据库

分布式 --------------------编程问答-------------------- 楼上的,我已经是这样做了。但觉得每次从数据库中取数据始终不是个好办法,随着以后用户越来越来多,性能越来越慢,我想找一种网页能直接从WINDOWS服务中读取数据的方法。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,