求助:一个性能改善的问题

caobob 2009-11-05 03:19:07
项目下同时连接的客户端可能有1000台左右,WEB服务器的平衡负载没有问题。现在需要做到每个页面每隔一段时间,比如10秒,Ajax方法查询一下单据的状态,然后实时提醒。

由于这样等于在1秒内IIS服务器要处理100条类似的SQL查询导致DB服务器变得性能低下。所以要想办法改善一下。

我想写一个静态类,把需要查询的数据放入hashtable作为一个属性,再有一个timer定时取数据库中的数据来更新这个hashtable。而Ajax调用的响应页面不再直接访问数据库,而是来访问这个类的属性。

有没有做过类似项目的朋友,给我点意见。谢谢!
...全文
225 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy664618843 2009-11-06
  • 打赏
  • 举报
回复
缓存 或者范型 hashtable
caobob 2009-11-06
  • 打赏
  • 举报
回复
还是把hashtable放进了cache,然后做了个页面按照设定自动更新cache。效果还是可以的。谢谢大家,结贴。
atls 2009-11-05
  • 打赏
  • 举报
回复
如果你自认是高手,尽管可以用static
菜鸟还是乖乖用微软给你的缓存,不要到时出问题还不知道什么原因。
xuan.ye 2009-11-05
  • 打赏
  • 举报
回复
我觉得你的方案已经很好了
剩下的就是hashtable是 static的?还是存在session?

我的意思就是 static hashtable 然后过滤条件再返回到页面?还是hashtable存在session里面?
ajaxtop 2009-11-05
  • 打赏
  • 举报
回复
访问分区

查询数据分页+索引+存储过程+视图+缓存

尽量不影响用户情况下,稍长时间访问数据库(100秒,或更长)


数据量大,只能分页处理,只有适中取舍,有得有失
wuyq11 2009-11-05
  • 打赏
  • 举报
回复
数据库缓存依赖,数据库更新更新缓存。
数据库量很大,就要使用分页或索引,分区查询数据
snowflying928 2009-11-05
  • 打赏
  • 举报
回复
up mark 学习
「已注销」 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
缓存~
[/Quote]

up
yyz985 2009-11-05
  • 打赏
  • 举报
回复
漏了 updates设为static
yyz985 2009-11-05
  • 打赏
  • 举报
回复

namespace A
{
using System;
using System.Collections.Generic;

public enum OrderUpdateStatus { Added, Removed, Modified }
public class OrderEntity { }
public class OrderUpdateItem
{
OrderUpdateStatus Status;
DateTime UpdateTime = DateTime.Now;
OrderEntity Order;
}
public class OrderBusiness
{
Queue<OrderUpdateItem> updates;
void AddOrder(OrderEntity entity)
{
//...insert into
OrderUpdateItem item = new OrderUpdateItem();
item.Status = OrderUpdateStatus.Added;
item.Order = entity;
updates.Enqueue(item);
}
void Updateorder(OrderEntity entity)
{
//....
}
void DeleteOrder(OrderEntity entity)
{
//....
}
Queue<OrderUpdateItem> GetUpdates(DateTime time)
{
Queue<OrderUpdateItem> result = new Queue<OrderUpdateItem>();
foreach (OrderUpdateItem item in updates)
{
if (item.UpdateTime > time) result.Add(item);
}
SessionManager.clientsUpdateTime = time;
CleanUpdates();
return result;
}
private void CleanUpdates()
{
DateTime t = SessionManager.GetFirstUpdateTime();
while (updates.Count > 0)
{
OrderUpdateItem item = updates.Peek();
if (item.UpdateTime < t) updates.Dequeue();
}
}
}
public class SessionManager
{
static Dictionary<Session, DateTime> clientsUpdateTime;
static void On_Session_Leave()
{
clientsUpdateTime.Remove(session);
}
static DateTime GetFirstUpdateTime()
{
DateTime result = DateTime.MaxValue;
foreach (KeyValuePair<Session, DateTime> kv in clientsUpdateTime)
{
if (kv.Value < result) result = kv.Value;
}
return result;
}
}
}
zhujiechang 2009-11-05
  • 打赏
  • 举报
回复
缓存、然后定时过期
igelf 2009-11-05
  • 打赏
  • 举报
回复
数据不存数据库..直接存缓存..
mbh0210 2009-11-05
  • 打赏
  • 举报
回复
看你查询语句的复杂程度,时间间隔的长短(也就是事实性的要求)

事实性要求不高,你隔断时间更新缓存就行

实时性高的话,在其他操作的时候更新掉缓存。
hy_lihuan 2009-11-05
  • 打赏
  • 举报
回复
1、用户对数据的实时性要求很高吗?10秒的延时可以吗?20秒呢?
2、用户访问很频繁的数据是那些?最新变更过的?有一些特性吗?

尽量保持80/20原则,达到最优化;
SuperTyro 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 caobob 的回复:]
引用 17 楼 webdiyer 的回复:
把你Ajax查询调用的页面用outputcache缓存一下不就得了吗?


有个问题是虽然这些客户端查询的内容不都一样。缓存起不了作用。客户端的SQL类似select [status] from a where id=XXX。每个客户端可能每次对id的查询不同。而status会因为业务被经常更新。
[/Quote]

既然是根据某个用户都不一样,而且会经常刷新,LZ可以看看告诉缓存,我记得spring有这个实现,很方便很强大。
SuperTyro 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
缓存~
[/Quote]

经常会被查看,但不经常刷新的页面可以缓存处理。
mohugomohu 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 caobob 的回复:]
做了个测试项目,Temer类不能用。这是我一直担心的问题。C/S我可以写win Service程序。B/S我怎么写。
[/Quote]

只有js这条路
hecong875 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sandy945 的回复:]
缓存~
[/Quote]

Cache
caobob 2009-11-05
  • 打赏
  • 举报
回复
做了个测试项目,Temer类不能用。这是我一直担心的问题。C/S我可以写win Service程序。B/S我怎么写。
caobob 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 webdiyer 的回复:]
把你Ajax查询调用的页面用outputcache缓存一下不就得了吗?
[/Quote]

有个问题是虽然这些客户端查询的内容不都一样。缓存起不了作用。客户端的SQL类似select [status] from a where id=XXX。每个客户端可能每次对id的查询不同。而status会因为业务被经常更新。
加载更多回复(17)
标题SpringBoot与微信小程序结合的生猪养殖信息化管理系统研究AI更换标题第1章引言介绍生猪养殖信息化管理的研究背景、意义、现状及论文创新点。1.1研究背景与意义阐述生猪养殖信息化管理对提升养殖效率的重要性。1.2国内外研究现状分析国内外生猪养殖信息化管理系统的研究进展。1.3研究方法以及创新点概述SpringBoot与微信小程序结合的技术路径和创新点。第2章相关理论总结SpringBoot框架与微信小程序开发的相关理论。2.1SpringBoot框架理论介绍SpringBoot框架的特点、优势及在Web开发中的应用。2.2微信小程序开发理论阐述微信小程序的开发原理、架构及与后端服务的交互方式。2.3生猪养殖信息化管理理论概述生猪养殖信息化管理的核心概念、流程及需求。第3章系统设计详细介绍基于SpringBoot与微信小程序的生猪养殖信息化管理系统的设计方案。3.1系统架构设计系统的整体架构,包括前端、后端及数据库设计。3.2功能模块设计详细介绍系统的各个功能模块,如养殖管理、数据统计等。3.3数据库设计阐述数据库的设计思路、表结构及关系。第4章系统实现阐述基于SpringBoot与微信小程序的生猪养殖信息化管理系统的实现过程。4.1SpringBoot后端实现介绍后端服务的开发环境、技术选型及实现细节。4.2微信小程序前端实现阐述前端界面的设计、开发及与后端服务的交互。4.3系统集成与测试系统的集成过程、测试方法及结果。第5章研究结果展示系统实现后的效果,包括性能、用户反馈等方面的分析。5.1系统性能分析从响应时间、并发处理等方面分析系统的性能。5.2用户反馈分析收集并分析用户对系统的使用反馈,评估系统的实用性。5.3对比方法分析对比传统生猪养殖管理与信息化管理的差异和优势。第6章结论与展望总结研究成果,提出未来研究方向。6.1研究结论概括系统的主要功能、性能及用户
yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。yolov5 人体姿态异常检测系统代码与完整数据集(优质项目).zip该文件内程序已通过本地测试,可直接执行。用户只需依据说明文档设置运行环境即可使用。项目复杂度适中,内容由教学辅助人员审核,适用于教学及实际应用,具备良好实用性,可放心获取。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

62,248

社区成员

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

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

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

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