【测试记录】EF插入查询性能
介绍
背景什么就不提了,无外乎出现了大数据需要处理。简单的说就是我测试了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插入查询性能的更多相关文章
- AutoDetectChangesEnabled及AddRange解决EF插入的性能问题
转自:http://www.cnblogs.com/nianming/archive/2013/06/07/3123103.html#2699851 记录下. 园友莱布尼茨写了一篇<Entity ...
- Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试
首先登陆进入Mysql命令行 执行sql show variables like 'slow_query%'; 结果为OFF 说明还未开启慢查询 执行sql show varia ...
- Phoenix表和索引分区数对插入和查询性能的影响
1. 概述 1.1 HBase概述 HBase由master节点和region server节点组成.在100-105集群上,100和101是master节点,102-105是region serve ...
- 【转】MySQL批量SQL插入各种性能优化
原文:http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=403182899&idx=1&sn=74edf28b0bd29 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- SQL Server 查询性能优化——创建索引原则
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- 如何提高sql查询性能到达优化程序的目的
1.关于SQL查询效率,100w数据 SQL查询效率 step by step -- setp 1.-- 建表create table t_userinfo(userid int identity(1 ...
- SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)
前言 上一节我们简单讲述了表表达式的4种类型,这一系列我们来讲讲使用视图的限制,简短的内容,深入的理解,Always to review the basics. 避免在视图中使用ORDER BY 上一 ...
- SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...
随机推荐
- MUI 里js动态添加数字输入框后,增加、减少按钮无效
numbox 的自动初化是在 mui.ready 时完成的mui 页面默认会自动初始化页面中的所有数字输入框,动态构造的 DOM 需要进行手动初始化.比如:您动态创建了一个 ID 为 abc 的数字输 ...
- drf8 解析器
解析器的介绍 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程. 本质就是对请求体中的数据进行解析. Accept与ContentType请求头. Accept是告诉 ...
- Navicat for MYSQL 断网时本地连接无法打开,2005错误
Navicat for MYSQL 断网时本地连接无法打开,2005错误 NO1 提示下图: NO2 解决方法: (1)选中本地连接,右键 连接属性 (2) 将 主机名或IP地址 这一栏改为 127. ...
- WPF 依赖属性&附加属性
依赖属性 暂无 附加属性 1.在没有控件源码的前提下增加控件的属性 2.多个控件需要用到同一种属性 使用附加属性可以减少代码量,不必为每一个控件都增加依赖属性 3.属性不确定是否需要使用 在某些上下文 ...
- 微服务应用新趋势:Service Mesh、AIOps和中台化
微服务技术由于天生支持快速迭代.弹性扩展的特点,使企业能够在不确定性下提升发展速度及抗风险能力,受到了越来越多的关注.当前,云服务商纷纷试水微服务产品,最为典型的,当属推出轻舟微服务平台.剑指整个微服 ...
- Android ------------------ 带边框的圆角矩形
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http:/ ...
- 动态页面技术EL
1.EL概述: EL表达式可以嵌入再JSP页面内部,减少JSP脚本的编写 EL出现的目的是要替代JSP页面中脚本的编写 EL最重要的作用就是从域中取出数据: 引入: JSP中<%=request ...
- Appium同时连接多台手机进行测试(多线程)
作为测试小白,当时遇到了N多问题: 开启多线程后,发现app启动后,用例就停止了:且启动app对应的手机不能正确对应,用例中是A手机跑A用例,结果启动了B手机跑A用例报错. 主要原因:Appium S ...
- cracking the coding interview系列C#实现
原版内容转自:CTCI面试系列——谷歌面试官经典作品 | 快课网 此系列为C#实现版本 谷歌面试官经典作品(CTCI)目录 1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除 ...
- IOS 数据存储之 Core Data详解
Core Date是ios3.0后引入的数据持久化解决方案,它是是苹果官方推荐使用的,不需要借助第三方框架.Core Date实际上是对SQLite的封装,提供了更高级的持久化方式.在对数据库操作时, ...