我需要在数据库中插入行,然后在另一个线程中读取这些行,然后(在单独的调用中删除它们)。
通常情况下,我只会为此分解实体框架。但我需要这个快一点。真的很快。
一行将是bigint
、bigint
和varchar(max)
。
实体框架有没有更快的方法?如果是,那是什么?
(我反对SQL Server 2008 R2)
Dapper ORM页面上有一些关于这方面的好信息。
请参阅SELECT映射在500次迭代中的性能-POCO序列化及以下部分。它只讨论了SELECTs,但您可以从中推断出一定程度的情况。
例如,您可以看到,就查询速度而言,实体框架几乎是最糟糕的方法。
Method Duration Remarks
Hand coded (using a SqlDataReader) 47ms
Dapper ExecuteMapperQuery<Post> 49ms
ServiceStack.OrmLite (QueryById) 50ms
PetaPoco 52ms Can be faster
BLToolkit 80ms
SubSonic CodingHorror 107ms
NHibernate SQL 104ms
Linq 2 SQL ExecuteQuery 181ms
Entity framework ExecuteStoreQuery 631ms
Raw ADO.NET是最快的,但我会选择Dapper作为微ORM。它的速度非常快,对你的发展有很大帮助。
然而,重要的是要知道,Dapper或类似程序是最快的主要原因,主要是因为您的控件,您可以精心设计性能最好的SQL查询。
我不想太多考虑数据访问技术,除非你需要一些东西,让你接近实际的SQL,并且不会对你强制执行太多抽象花时间思考数据库、索引布局、事务处理和查询优化。这就是您将获得主要性能提升的地方