DbContext不是线程安全的,是否可以使用一个对象在不同线程中并行读取数据库中的数据?还是我需要创建一个单独的实例DbContext?或者也许在 EF 中有一些更有效的方法来并行加载大量数据?
需要执行两个请求,每个请求大约需要3秒,处理用户的请求大约需要6-7秒。我想减少这个时间。
是否可以将 1 个大请求分成 2 个?例如,如果从数据库中选择需要 3 秒。是否可以用一个请求加载一半数据,而用另一个请求加载另一半数据(这有意义吗)?
DbContext不是线程安全的,是否可以使用一个对象在不同线程中并行读取数据库中的数据?还是我需要创建一个单独的实例DbContext?或者也许在 EF 中有一些更有效的方法来并行加载大量数据?
需要执行两个请求,每个请求大约需要3秒,处理用户的请求大约需要6-7秒。我想减少这个时间。
是否可以将 1 个大请求分成 2 个?例如,如果从数据库中选择需要 3 秒。是否可以用一个请求加载一半数据,而用另一个请求加载另一半数据(这有意义吗)?
我怀疑通过将 1 个请求分成几个小请求,每个请求都返回一些片段,您是否会及时获得一些收益。而且一般来说,从 DBMS 的角度来看,它执行 1 个大查询比执行 N 个记录的多个查询更容易 => 性能会更低。
但是,如果目标是在 UI 上显示一部分数据,然后用另一部分数据补充它,那么就会有收获,因为用户现在就可以开始工作了。
例如,Access 中的查询就是按照这个原理工作的,给出部分结果,然后加载新的记录。
但是,还有其他方法可以解决该问题:
你会遇到网络速度问题吗?
是否有所有必需的索引?
Pomonitorte Profiler'om 什么请求被发送到服务器。也许这很可怕,如果您将 LINQ 表达式分解为小的表达式,您将获得更优化的查询。