• 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可以在很多中大型的系统中运用,而且变得越来越简单,让人能把关注点多放在业务方面!

  • 相关阅读:
    快速理解平衡二叉树、B-tree、B+tree、B*tree
    centos 7(6) linux系统安装 mysql5.7.17(glibc版)
    关于使用Hibernate+spring+dubbo的实现微服务对象查询
    Keepalived+Nginx实现高可用(HA)
    Nginx源码安装
    Keepalived安装与配置
    单点fastDfs+centos7搭建
    Dubbo+zookeeper使用方法以及注意事项
    mac 下 iterm2 不能使用 rz sz
    java 无符号整型
  • 原文地址:https://www.cnblogs.com/ymnets/p/3790374.html
Copyright © 2020-2023  润新知