网站做子页面怎么做的kompozer wordpress
news/
2025/10/7 22:48:21/
文章来源:
网站做子页面怎么做的,kompozer wordpress,邢台贴吧打黑最新消息,做网站 橙色怎么搭配【导读】EF Core 5.0伴随着.NET 5.0发布已有一段时日#xff0c;本节我们来预估当大批量新增数据时#xff0c;大概是多少区间我们应该考虑SQLBulkCopy而不是EF CoreSQLBulkCopy早出现于.NET Framework 2.0#xff0c;将数据批量写入利用此类毫无疑问最佳#xff0c;虽其来… 【导读】EF Core 5.0伴随着.NET 5.0发布已有一段时日本节我们来预估当大批量新增数据时大概是多少区间我们应该考虑SQLBulkCopy而不是EF CoreSQLBulkCopy早出现于.NET Framework 2.0将数据批量写入利用此类毫无疑问最佳虽其来源任意但此类仅适用于SQL Server每个关系数据库都有其批量处理驱动这里我们仅仅只讨论SQL Server性能差异预估批量数据大小首先给出我们需要用到的测试模型public class User
{public int Id { get; set; }public string Name { get; set; }public DateTime Birth { get; set; }public string Email { get; set; }public string Phone { get; set; }
}
接下来我们则需要模拟数据为伪造实际生产数据这里我们介绍一个包Bogus此包专用来伪造数据一直在更新从未间断版本也达到32如下此包中有针对用户类的模拟具体使用这里就不详细展开我们构造一个方法来伪造指定数量的用户数据如下private IEnumerableUser GenerateUseres(int count)
{var profileGenerator new FakerUser().RuleFor(p p.Name, v v.Person.UserName).RuleFor(p p.Birth, v v.Person.DateOfBirth).RuleFor(p p.Email, v v.Person.Email).RuleFor(p p.Phone, v v.Person.Phone);return profileGenerator.Generate(count);
}
有了批量伪造数据接下来我们再利用上下文去新增数据然后分别打印伪造数据和新增成功所耗费时间如下[HttpPost]
public async TaskIActionResult GenerateInsert([FromQuery] int count 1000)
{var s new Stopwatch();s.Start();var users GenerateUseres(count);var gererationTime s.Elapsed.ToString();s.Restart();await _context.Users.AddRangeAsync(users);var insertedCount await _context.SaveChangesAsync();return Ok(new{inserted insertedCount,generationTime gererationTime,insertTime s.Elapsed.ToString()});
}
新增100条数据太小这里我们直接从批量1000条数据开始测试此时我们将看到所存储数据和实际数据完全一毛一样通过SQL Server Profiler工具监控得到如下一堆语句通过运行多次当然也和笔记本配置有关i7,6核12线程内存16G但还是可以预估批量新增1000条大概耗时为毫秒级如下接下来我们试试新增1万条看看耗时基本需要1秒如下最后我们再来试试新增十万条数据试试大概需要14秒才能完成到了这里想必我们没有必要再往上增长数据我们来看看利用SqlBulkCopy又将如何[HttpPost]
public async TaskIActionResult GenerateAndInsertWithSqlBulkCopy([FromQuery] int count 1000)
{var s new Stopwatch();s.Start();var users GenerateUseres(count);var gererationTime s.Elapsed.ToString();s.Restart();var dt new DataTable();dt.Columns.Add(Id);dt.Columns.Add(Name);dt.Columns.Add(Birth);dt.Columns.Add(Phone);dt.Columns.Add(Email);foreach (var user in users){dt.Rows.Add(string.Empty, user.Name, user.Birth, user.Phone, user.Email);}using var sqlBulk new SqlBulkCopy(Server.;DatabaseEFCore;Trusted_ConnectionTrue;){DestinationTableName Users};await sqlBulk.WriteToServerAsync(dt);return Ok(new{inserted dt.Rows.Count,generationTime gererationTime,insertTime s.Elapsed.ToString()});
}
因如上利用EF Core新增时间在毫秒级那么我们则直接从新增1万条开始测试如下我们可看到此时与EF Core新增1万条数据差异耗时远远小于1秒最后我们再来测试10万条很显然EF Core耗时结果将为SqlBulkCopy的指数倍大致14倍若数据为100万想想二者其性能差异如下若继续通过SQL Server Profiler监控工具查看SQL语句很显然SQL语句会很简短据我所知SqlBulkCopy是直接将数据通过流形式传输到数据库服务器然后一次性插入到目标表中所以性能是杠杠的。利用SqlBulkCopy和EF Core 5.0当然理论上不论是EF Core更新到其他任何版本其性能与SqlBulkCopy不可同日而语本文我们只是稍加探讨下数据量达到多少时不得不考虑其他手段来处理而不是利用EF Core新增数据???? EF Core和SqlBulkCopy性能差异比较毫无疑问SqlBulkCopy为最佳选手???? 当新增数据量达到1万时若需考虑性能可采用SqlBulkCopy或其他手段处理数据而不再是EF Core二者性能差异将呈指数增长
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930935.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!