[英]Any ORMs which provide decent methods for high speed bulk inserts?
是否有任何 ORM 可以为高速批量插入提供合适的方法?
我问的原因是 Entity 框架非常适合提取数据,但如果您想以超过每秒 10 行的速度插入,则完全失败。
更新
我目前使用 DataTable 和 T-SQL 以每秒 80,000 行的速度插入,但如果我可以全面使用 ORM,它会更干净。
Blimey,4 年前问过?
出色地....
如果有人仍在此处寻找答案,Jon Wagner 的 Insight.Database(一个非常漂亮的 Micro-ORM)支持 SQL BULK INSERT。
我可以使用以下语法轻松地每秒写入 200,000 行 -
Database.Connection().BulkCopy("TableName", myListOfItemsToInsert);
那对你有用吗?
恐怕您会发现 ORM 不是每秒执行 80K 行的糟糕选择。 只是无法完成,除非您绕过 Linq 到 T-SQL 转换和 go 直接针对数据库。 但是这样你就违背了 ORM 的目的。即便如此,我也很难看到你将如何实现每秒 80K 行(尽管你没有定义每行的宽度)。
像 EF 和 Linq 到 SQL 这样的 ORM 将在每次更新时发出一个 Insert 语句。 这不利于 80K/秒的吞吐率。 IMO,您应该使用像 SSIS 这样的批量插入工具。这就是它的设计目的。
您可以使用 EF 进行后门,但使用 ORM 的常见 arguments 之一是性能。
ORM 旨在帮助提高可读性/可编码性/并减少开发时间。 如果您关心性能,请使用本机 sql。
不,这不是 ORM 的用途。 ORM 支持OLTP ,不支持批量数据处理。 使用正确的工具来完成工作。
(如果您坚持使用 ORM,请查看设置插入的批量大小。)
现在有可以实现非常接近此性能的完整 ORM,例如 Nfinity.Data ( https://www.nfinity.software ),它将在大约 2 秒内插入 80,000 行。 我刚刚测试了一个大约 5 列宽的表,包括混合数据类型。
Windows 10,i7 CPU,32 GB 内存,SQL 服务器 2017,.Net Core 3.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.