ORM组件XCode(撬动千万级数据).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORM组件XCode(撬动千万级数据)

ORM组件XCode(撬动千万级数据) 有了前面的《动手》,基本上可以进行开发了。本篇我们来试试XCode的基本功功力如何,测试在单表一千万业务数据的环境下查询的速度,添删改等没什么可测试的。其实应该说是XCode开发模式的功力,XCode组件仅仅是处理分页而已,而XCode开发模式为高性能开发提供了更多的建议。 测试环境:双核CPU,4G内存,win7+SQL2008+vs2010 数据表字段包括:自增ID、车牌、时间。使用SQL准备一千万测试数据,花了将近一个小时。 测试用例:ID的升序降序,时间的升序降序,每一种情况测试取首页、中间页、尾页的时间。 XCode开发模式非常看重分页,基本上所有集合查询方法都带有分页参数。Entity层只负责生成获取满足条件的所有数据的SQL,加上分页参数后传递给下层数据访问层,自身不处理问题。数据访问层调用IDatabase接口的PageSplit方法,把上述的SQL处理为只获取指定页的SQL,然后再执行查询操作。因为不同的数据库分页方法不同,所以XCode的这种架构让使用者无需关心采用哪一种分页方法。测试环境是SQL2008,所以自动采用row_number分页。 首先建立数据表 CREATE TABLE [dbo].[test]( [ID] [int] IDENTITY(1,1) NOT NULL, [HPHM] [varchar](50) NULL, [JGSJ] [datetime] NOT NULL, CONSTRAINT [PK_CLTXJL] PRIMARY KEY CLUSTERED ( [ID] DESC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 使用SQL语句插入一千万行数据 declare @i int set @i=0 while @i100 begin insert into test values(鄂A94450,getdate()) insert into test values(鄂A92355,getdate()) (这里是更多数据插入语句) set @i=@i+1 end GO 再看看我们准备的测试代码 static void Test2() { Stopwatch sw = new Stopwatch(); sw.Start(); Console.WriteLine(); DAL.AddConnStr(Center, Data Source=.;Initial Catalog=Center;User ID=sa;Password=Pass@word, null, sql2008); IEntityOperate factory = DAL.Create(Center).CreateOperate(test); sw.Stop(); Console.WriteLine(初始化:{0}, sw.Elapsed); ICollection list = factory.FindAll(null, null, null, 100000, 1); DateTime dt = DateTime.Now; foreach (IEntity item in list) { dt = (DateTime)item[JGSJ]; break; } //String where = String.Format({0}={1} And {0}{2}, JGSJ, dt, dt.AddSeconds(100)); String where = String.Empty; sw.Reset(); sw.Start(); Console.WriteLine(); Int32 count = factory.FindCount(where, null, null, 0, 0); sw.Stop(); Console.WriteLine(查询总记录数:{0}, sw.Elapsed); Console.WriteLine(总记录数:{0}, count); Test2_0(sw, 默认顺序, count, where, null); Test2_0(sw, 时间升序, count, where, JGSJ

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档