构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

简介: 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入100...
原文: 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(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的这样写了,还能怎么样!

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

 

 

 

 

目录
相关文章
|
11天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
14天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
14天前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
|
16天前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
26 1
|
2月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
95 5
Postman 接口测试配置 Pre-request Script
|
16天前
|
Web App开发 JSON 测试技术
精通Postman接口测试:关联技术与自动化实践指南
这篇文章详细介绍了如何使用Postman进行接口测试,包括关联技术、自动化实践,以及如何通过环境变量和全局变量解决接口之间的关联性问题。
18 0
精通Postman接口测试:关联技术与自动化实践指南
|
30天前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
16天前
|
JSON jenkins 测试技术
Python接口自动化测试框架(工具篇)-- 接口测试工具HTTPRUNNER
本文介绍了Python接口自动化测试框架HTTPRunner,包括其安装、使用方法,并通过实际操作演示了如何利用HTTPRunner进行接口测试,同时还探讨了HTTPRunner作为接口自动化测试解决方案的可能性和实用性。
28 0
下一篇
DDNS