介绍

    背景什么就不提了,无外乎出现了大数据需要处理。简单的说就是我测试了EF正常的插入以及一个优化小方式而已,然后做了查询记录。其余没有什么,写这篇只是为了记录结果方便以后数据参考吧。

代码介绍:

首先是插入代码常规:

 EFHelp<TimeRecord> eFHelp = new EFHelp<TimeRecord>();
for (int i = ; i < ; i++)
{
TimeRecord t = new TimeRecord();
t.id = Guid.NewGuid().ToString("N");
t.childId = Guid.NewGuid().ToString("N");
t.state = ;
t.stateTime = DateTime.Now.AddDays().ToString("yyyy-MM-dd"); eFHelp.AddNo(t);
}
for (int i = ; i < ; i++)
{
TimeRecord t = new TimeRecord();
t.id = Guid.NewGuid().ToString("N");
t.childId = Guid.NewGuid().ToString("N");
t.state = ;
t.stateTime = DateTime.Now.AddDays().ToString("yyyy-MM-dd"); eFHelp.AddNo(t);
}
eFHelp.SaveChange();

然后是优化处理方法:

    public testEntities()
: base("name=testEntities")
{
this.Configuration.AutoDetectChangesEnabled = false;
}

没有错就是增加一句话,这句话主要是取消EF的状态变化跟踪。想要了解更多的请自行百度这个东西。

推荐这骗写的很好:https://www.cnblogs.com/hehexiaoxia/p/5707180.html

多说一句我们都知道在6.0之后增加AddRang方法,我也大概测试了一些与这个方法差不多,我想也许AddRang方法里面就是封装了这个东西吧。

查询方法:

 //查询
EFHelp<TimeRecord> eFHelp = new EFHelp<TimeRecord>();
var dataG = eFHelp.Entities.GroupBy(b => b.childId);
//var dataG = eFHelp.Entities.Where(b => b.state == 1).GroupBy(b => b.childId).Select(s => se(s.ToList()));
List<TimeRecord> listResult = new List<TimeRecord>();
foreach (var item in dataG)
{
Func<List<TimeRecord>, TimeRecord> fun = delegate (List<TimeRecord> listData)
{
TimeRecord timeResult = listData.Where(t => Convert.ToDateTime(t.stateTime) <= Convert.ToDateTime("2018-05-23")).OrderByDescending(b => b.stateTime).FirstOrDefault();
if (timeResult == null)
{
return null;
}
else
{
if (timeResult.state == )
{
return timeResult;
}
else
{
return null;
}
}
};
//TimeRecord time = se(item.ToList());
TimeRecord time = fun(item.ToList());
if (time != null)
{
listResult.Add(time);
}
}
listResult = listResult.OrderBy(b => b.id).Skip().Take().ToList();
foreach (var item in listResult)
{
Console.WriteLine("查询的id:" + item.stateTime + "查询的时间:" + item.stateTime);
}

因为我做了筛选,做一下实际场景。所有不是只取而是做了条件查询。

结果数据:

插入3万条,

1万2018-05-20 0状态

2万2018-05-21 1状态

测试数据(次)

数据量

时间(毫秒=秒)

插入3万(1)

0

402884=402.88

查询15条数据(1)

3万

2766=2.76

查询15条数据(2)

3万

2976=2.96

查询15条数据(3)

3万

3250=3.25

查询15条数据(4)

3万

3083=3.08

查询15条数据(5)

3万

2966=2.69

查询15条数据(6)

3万

3015=3.01

修改其中一条数据改为2018-05-20后重新查询,为了防止时间都是一样的验证查询的准确性,在查询打印结果中我在第一条数据看到时间修改为2018-02-20的数据说明查询的准确,

然后时间也在上面查询时间范围内,所有时间没有误差

查询15条数据(1)

3万

2971=2.97

查询15条数据(2)

3万

2652=2.65

再次修改其中一条childId设置为重复,验证多次查询问题的准确性

查询15条数据(1)

3万

2819=2.81

查询15条数据(2)

3万

3370=3.37

5万条测试,在3万基础上在录入2万条

1万2018-05-22 0状态

1万2018-05-23 1状态

测试数据(次)

数据量

时间(毫秒=秒)

插入2万(2)

3万

193700=193.7

查询15条数据(1)

5万

3149=3.14

查询15条数据(2)

5万

3526=3.52

查询15条数据(3)

5万

2922-2.92

查询15条数据(4)

5万

3688=3.68

查询15条数据(5)

5万

3339=3.33

查询15条数据(6)

5万

3024=3.02

查询15条数据(7)

5万

2921=2.91

查询15条数据(9)

5万

3156=3.15

查询15条数据(10)

5万

3304=3.3

查询15条数据(11)

5万

3588=3.58

以上表格数据主要是查询数据。其中第一个是常规的插入数据为了与下面的做对比。

最后使用了无状态(AutoDetectChangesEnabled)添加3万所用时间13689=13秒。5万:21410=21秒,21667,

AddRang批量添加3万:13962=13秒,14034=14秒,5万21366=21秒

最后我用10万数据查询:3448,3482,3379,3288

然后是22万:7093,6074,5405,5976,5421,5442,5967

27万数据:9200,6384,6987,6575,6305,

【测试记录】EF插入查询性能的更多相关文章

  1. AutoDetectChangesEnabled及AddRange解决EF插入的性能问题

    转自:http://www.cnblogs.com/nianming/archive/2013/06/07/3123103.html#2699851 记录下. 园友莱布尼茨写了一篇<Entity ...

  2. Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试

    首先登陆进入Mysql命令行  执行sql      show variables like 'slow_query%';  结果为OFF 说明还未开启慢查询 执行sql     show varia ...

  3. Phoenix表和索引分区数对插入和查询性能的影响

    1. 概述 1.1 HBase概述 HBase由master节点和region server节点组成.在100-105集群上,100和101是master节点,102-105是region serve ...

  4. 【转】MySQL批量SQL插入各种性能优化

    原文:http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=403182899&idx=1&sn=74edf28b0bd29 ...

  5. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  6. SQL Server 查询性能优化——创建索引原则

    索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...

  7. 如何提高sql查询性能到达优化程序的目的

    1.关于SQL查询效率,100w数据 SQL查询效率 step by step -- setp 1.-- 建表create table t_userinfo(userid int identity(1 ...

  8. SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)

    前言 上一节我们简单讲述了表表达式的4种类型,这一系列我们来讲讲使用视图的限制,简短的内容,深入的理解,Always to review the basics. 避免在视图中使用ORDER BY 上一 ...

  9. SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

    前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...

随机推荐

  1. w3wp.exe(IIS ) CPU 占用 100% 的常见原因

    引起 w3wp.exe(IIS ) Cpu 占用 100% 的常见原因如下: 1. Web 访问量大,从而服务器压力大而引起的 2. 动态页面(.aspx)的程序逻辑复杂程度 3. 页面程序中有死循环 ...

  2. maven学习三

    做项目时使用maven构建项目已经是现在的流行做法了.那么maven的作用是什么呢?maven中的几个常用的命令都有什么用?下面我们来看一下. maven最大的作用就是用于对项目中jar包依赖的统一管 ...

  3. Python开发——1.基础知识

    一.开发 开发语言分为高级语言和低级语言 高级语言:Python.Java.PHP.C++.C#.GO.Ruby等:低级语言:C.汇编语言. 高级语言对应的是字节码,是将代码编译成字节码,然后交给机器 ...

  4. kali安装配置ftp

    参考:https://zhidao.baidu.com/question/1511146077646448900.html 一)安装 1.用sudo apt-get install 下载安装包

  5. ·通过wifi_scan学习esp32wifi程序编写

    在ESP32的设计开发中,我们必然会需要使用到wifi或ble功能,今天就讲解下如何将WIFI功能纳入到ESP32中来. 初始化WiFi环境 首先,WiFi子系统的初始化需要由我们自己来自行,当我们写 ...

  6. Ubuntu 中 iptables 增删查改

    iptables是linux系统自带的防火墙,功能强大.如果iptables不熟悉的话可以用apf,是一款基于iptables的防墙. 一.安装并启动防火墙 $ /etc/init.d/iptable ...

  7. java web 测试

    1.功能测试 bugfree mantis 2.性能测试:loadrunner 3.安全测试: burpsuite

  8. 11g统计信息自动收集任务

    1.查看统计信息自动收集任务的开启情况. select client_name,status from dba_autotask_client; 2.查看自动收集任务各个窗口的开启情况. col op ...

  9. [bug]”System.InvalidProgramException:公共语言运行时检测到无效程序“解决方案

    Visual Studio 2017版本15.8.x运行某些程序会报这样的错误:“System.InvalidProgramException:公共语言运行时检测到无效程序” 此问题的临时解决方案: ...

  10. nova scheduler filters 配置

    scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler scheduler_default_filters = Avail ...