我正在构建的商业应用程序将持有50,000到150,000家公司之间的某个地方。每个公司(db行)用4-5个属性/列(标题,位置...)表示。 ORM是LINQ2SQL。共享托管服务提供商的可用RAM
我必须做一些计算,并为此我有很多具体的公司查询。现在,每当我需要某些东西时,我都会去db,根据计算complexy,它会产生50-200个查询。我试图让所有公司缓存,而对于数据库中的10,000行(公司),它需要大约5,5MB的缓存。在这种情况下,我只有一个查询。
此应用程序将在共享的托管服务器上,所以我的资源是有限的。我很感兴趣,如果我尝试加载,会发生什么事情,比如说100,000个公司(行,对象)?或者把它放在缓存中?
平均托管公司给ASP.NET应用程序有任何RAM限制吗?它是否依赖于专用Applcation Pool(我可以将应用程序放到专用池中)?
选项是:
- 将整个表加载到c#对象。 Id做了一些内存分析,10,000个对象需要5MB RAM
- 查询db以在需要时获取引用对象。
任务是:对于给定的公司A,建立关联公司的树。
表和列:
公司:IdCompany,职务,地址,联系
CompanyConnection: IdParentCompany,IdChildCompany
为什么需要50-200个查询,tho?如果你懒加载大量的数据,你应该预先加载子行。 – JustLoren 2009-11-02 16:04:19
每家公司都有一家或多家其他公司(多对多关系)。我有c#中的递归函数,通过公司树(从父母到每个孩子,等等),并寻找一些东西。当我想要儿童公司时,我需要查询db。也许这一切都可以在存储过程中完成,但是我在SQL中并不擅长,而且我为了让自己的业务逻辑保持在c#(DDD风格的应用程序) – 2009-11-02 18:05:30