从 SQL 服务器(或 SQL Azure)数据库检索大量数据的最佳方式
The best way to retrieve large amounts of data from a SQL Server (or SQL Azure) database
我有一个有 4000 万行的 table。我正在寻找通过 API.
将此数据检索到 JSON 的最佳技术
性能很关键!
我认为,最好的方法是使用ADO.NET和一个SqlDataReader
。但是,我想使用自动映射(如 EF)。
你能告诉我这是检索大量数据的最佳方式吗? (2、3、.. 4000 万行)
你是对的,如果你试图从 SQL 服务器获取数据到 C# 库中,你不会比原始 ADO.NET 更快。
为了获得简单的关系-> 对象映射,但又避免了使用更大、功能更齐全的 ORM(如 EF 和 NH)所付出的代价,我发现 Dapper 工作得很好 (https://github.com/StackExchange/dapper-dot-net)。在我的用例中,它比 NH 更快,非常易于使用,并且您可以获得您正在寻找的映射。
过去已经完成了一些基准测试来查看各种 ORM 的获取性能,可以让您了解您可能正在查看的内容(例如:http://weblogs.asp.net/fbouma/fetch-performance-of-various-net-orm-data-access-frameworks,这并不奇怪发现 raw ADO.NET 最快 - 尽管它是从 2013 年开始的,这在互联网时代只是古老的)。
您可以相当快速地对您的数据和环境进行自己的类似比较,以了解什么可能适合您的情况。
另外,从另一个角度来看——数据变化的频率是多少?每次都需要从SQL服务器出来吗?您也许可以将它加载到内存中的缓存中,在那里检索比从 SQL 服务器查询它要快。
也试试 linq2db (https://github.com/linq2db/linq2db)。与 Dapper 一样,linq2db 是一个非常轻量级的微型 ORM,但也支持 linq 查询进行过滤、投影等
我有一个有 4000 万行的 table。我正在寻找通过 API.
将此数据检索到 JSON 的最佳技术性能很关键!
我认为,最好的方法是使用ADO.NET和一个SqlDataReader
。但是,我想使用自动映射(如 EF)。
你能告诉我这是检索大量数据的最佳方式吗? (2、3、.. 4000 万行)
你是对的,如果你试图从 SQL 服务器获取数据到 C# 库中,你不会比原始 ADO.NET 更快。
为了获得简单的关系-> 对象映射,但又避免了使用更大、功能更齐全的 ORM(如 EF 和 NH)所付出的代价,我发现 Dapper 工作得很好 (https://github.com/StackExchange/dapper-dot-net)。在我的用例中,它比 NH 更快,非常易于使用,并且您可以获得您正在寻找的映射。
过去已经完成了一些基准测试来查看各种 ORM 的获取性能,可以让您了解您可能正在查看的内容(例如:http://weblogs.asp.net/fbouma/fetch-performance-of-various-net-orm-data-access-frameworks,这并不奇怪发现 raw ADO.NET 最快 - 尽管它是从 2013 年开始的,这在互联网时代只是古老的)。
您可以相当快速地对您的数据和环境进行自己的类似比较,以了解什么可能适合您的情况。
另外,从另一个角度来看——数据变化的频率是多少?每次都需要从SQL服务器出来吗?您也许可以将它加载到内存中的缓存中,在那里检索比从 SQL 服务器查询它要快。
也试试 linq2db (https://github.com/linq2db/linq2db)。与 Dapper 一样,linq2db 是一个非常轻量级的微型 ORM,但也支持 linq 查询进行过滤、投影等