ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能!

服务器

现在来向SQL2008R2插入1000000条数据吧

declare @i int;
set @i=0;
while @i<1000000
begin
INSERT INTO [AppDB].[dbo].[MIS_Article]
           ([Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime])
     VALUES
           (CONVERT(varchar,@i)
           ,0
           ,'001001'
           ,'这是第'+ CONVERT(varchar,@i)
           ,''
           ,'这是第'+ CONVERT(varchar,@i)+'条测试记录'
           ,0
           ,122
           ,1
           ,'admin'
           ,'2014-5-1'
           ,'admin'
           ,'2014-5-1')
   set @i = @i+1;
end

select COUNT(*) from dbo.MIS_Article

我发现我之前的理解是错的。不用存储过程,跟踪EF生成的LINQ成果是理想了,在Easyui下的分页显示也是2秒左右,如图的分页

在这里我只能把数据量加大到一千万,在EF中,我们可能无必要用存储过程来做列表的显示,因为生成的查询语句是非常理想的。

现在数据已经到达300W+了,查询分页的时间小于4秒

当数据达到六百万条记录的时候事件已经在6秒左右了,可能我的服务器处理能力有限。配置有点差

所以当你的数据到达一千万的时候,你需要更换更好的服务器,不能再纠结于存储过程,和程序的性能了,因为程序就TM的这样写了,还能怎么样!

大家可以转到http://www.woaitun.com/测试 帐号密码admin admin123,信息频道管理-------信息中心--------管理中心

但这里还是放出存储过程!效果却是一样的,有兴趣的可以了解一下这个分页存储过程

USE [AppDB]
GO
/****** Object:  StoredProcedure [dbo].[P_MIS_Info_GetICanManage]    Script Date: 06/16/2014 09:58:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[P_MIS_Info_GetICanManage]
@WhereSQL varchar(1024),
@Rows int=15, --每页有几条
@PageNo int=1,--页码
@RowsCount int out
as
begin

CREATE TABLE #Art(
        [Id] [varchar](50) NOT NULL,
    [ChannelId] [int] NOT NULL,
    [CategoryId] [varchar](50) NOT NULL,
    [Title] [varchar](100) NOT NULL,
    [ImgUrl] [varchar](255) NULL,
    [BodyContent] [varchar](8000) NULL,
    [Sort] [int] NULL,
    [Click] [int] NULL,
    [CheckFlag] [int] NOT NULL,
    [Checker] [varchar](50) NULL,
    [CheckDateTime] [datetime] NULL,
    [Creater] [varchar](50) NULL,
    [CreateTime] [datetime] NULL,
)


--获取总记录数
Create table #CountTable
(
    Id varchar(50)
)
exec('insert into #CountTable select distinct b.Id from  MIS_Article as b where 1=1 '+@WhereSQL+' ')
select @RowsCount=COUNT(*) from #CountTable


--获取管理的帖子
declare @sql varchar(1024)
set @sql ='insert into #Art select top ('+CONVERT(varchar,@Rows)+') [Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime] from MIS_Article where Id in( '
+' select b.Id from( select distinct b.Id,row_number() over (order by b.CreateTime desc) as [row_number] from '
+' MIS_Article as b where 1=1 '+@WhereSQL+') as b where '
+' b.[row_number] >'+CONVERT(varchar,(@Rows*(@PageNo-1)))+' )'


end
print @sql
exec (@sql)

SELECT [Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime] from #Art
    
    

数据查询数据:也许受到字段列个数,字段类型,服务器处理能力,在线人数等影响,但这里的数据足以说明查询百万级的数据已经问题不大。

在此说明一个问题,MVC+EF可以在很多中大型的系统中运用,而且变得越来越简单,让人能把关注点多放在业务方面!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏带你撸出一手好代码

到底该不该使用存储过程

看到《阿里巴巴java编码规范》有这样一条 ? 关于这条规范,我说说我个人的看法 我觉得用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术...

4369
来自专栏华章科技

R语言怎么给中文分词?

Rwordseg包依赖于rJava包。由于Rwordseg包并没有托管在CRAN上面,而是在R-Forge上面,因此在在R软件上面直接输入install.pac...

951
来自专栏木东居士的专栏

拉链表是什么

5655
来自专栏杨建荣的学习笔记

自动化平台开发小结(四)

今天对备份恢复和元数据的功能点进行了改进,突然发现需要做的事情远比想象的要多。 技术方面,目前Django的框架使用开始有一些需求的瓶颈了,因为有些需求从业务的...

3795
来自专栏大数据文摘

小白学数据:一文看懂NoSQL数据库

2426
来自专栏性能与架构

建立索引后的代价到底有多大?

前几天写的文章“MySQL 性能优化案例:覆盖索引”,介绍了使用覆盖索引优化查询的方式,受到了一个网友的批评 批评的内容为: “直接从索引放回数据很快是个常...

3747
来自专栏数据的力量

大索引技术,大数据的未来

不管你信也好,不信也好,大数据时代真的来临了,随着Hadoop技术的普及,其生态圈发展的越来越壮大,Hive、Hbase、Spark、Storm等的一系列新名词...

1283
来自专栏idba

数据库系统中的“黑天鹅”

一 前言 纳西姆.尼古拉斯.塔勒布的经典著作《黑天鹅》中对“黑天鹅现象”的定义是

1013
来自专栏沈唁志

2018年韩创科技旗下我图网PHP工程师面试题分享

4. 一张采用Innodb的User表,其中id为主键,name为普通索引,试从索引的数据结构角度分析,以下两条语句(均返回一条记录)在检索过程中有哪些区别

1642
来自专栏杨建荣的学习笔记

闪回区报警引发的性能问题分析(r11笔记第11天)

自从有了Zabbix+Orabbix,很多监控都有了一种可控的方式,当然对于报警处理来说,报警是表象,很可能通过表象暴露出来的是一些更深层次的问题。这不又来一个...

37310

扫码关注云+社区

领取腾讯云代金券