C# 数据库中的并发插入
我正在构建一个程序,从六个不同的来源获取推送数据,并将数据插入数据库。每个源都有自己的函数,可以在插入时立即执行插入,但所有源都会写入同一个表 我有以下问题:C# 数据库中的并发插入,c#,sql-server,C#,Sql Server,我正在构建一个程序,从六个不同的来源获取推送数据,并将数据插入数据库。每个源都有自己的函数,可以在插入时立即执行插入,但所有源都会写入同一个表 我有以下问题: 如果一个源当前正在向表中写入数据,而另一个源同时开始写入数据,那么插入是否有可能相互阻塞 该表还经常被用来通过一个视图读取数据,该视图连接更多的表以显示数据,这会带来任何问题吗 目前,每个源都有自己的DB连接来写入数据,最好只有一个连接,还是让每个源都使用自己的连接 阻止“彼此”,即不可能死锁 没问题。只有当select太慢时,它才能
- 如果一个源当前正在向表中写入数据,而另一个源同时开始写入数据,那么插入是否有可能相互阻塞
- 该表还经常被用来通过一个视图读取数据,该视图连接更多的表以显示数据,这会带来任何问题吗
- 目前,每个源都有自己的DB连接来写入数据,最好只有一个连接,还是让每个源都使用自己的连接
select
太慢时,它才能延迟下一次插入select
太慢时,它才能延迟下一次插入请找到下面的内联答案 如果一个源当前正在向表中写入数据,而另一个源同时开始写入数据,那么插入是否有可能相互阻塞 在这种情况下,另一个资源将等待它。(Insert将处于等待状态,等待下一个资源) 该表还经常被用来通过一个视图读取数据,该视图连接更多的表以显示数据,这会带来任何问题吗 没问题 目前,每个源都有自己的DB连接来写入数据,最好只有一个连接,还是让每个源都使用自己的连接 最好有一个DB连接
请找到下面的内联答案 如果一个源当前正在向表中写入数据,而另一个源同时开始写入数据,那么插入是否有可能相互阻塞 在这种情况下,另一个资源将等待它。(Insert将处于等待状态,等待下一个资源) 该表还经常被用来通过一个视图读取数据,该视图连接更多的表以显示数据,这会带来任何问题吗 没问题 目前,每个源都有自己的DB连接来写入数据,最好只有一个连接,还是让每个源都使用自己的连接 最好有一个DB连接 如果一个源当前正在写入表,而另一个源 在同一时间开始写作插入是否有可能 互相阻拦 这取决于索引。如果索引键具有相同或连续的值,则在事务期间可能会看到short=term阻塞 该表还经常用于通过视图读取数据 连接更多的表来显示数据,这个姿势可以吗 问题 这取决于隔离级别。如果出现以下情况,则不会发生阻塞:
查询正在SELECT
隔离级别和READ\u COMMITTED
数据库选项已打开READ\u COMMITTED\u SNAPSHSOT
查询不涉及未提交的数据SELECT
查询在SELECT
隔离级别中运行READ\u UNCOMMITTED
INSERT
事务很短,阻塞也可能很短
目前,每个源都有自己的DB连接来写入数据,您会这样做吗
最好只有一个连接,或者让每个连接使用自己的连接
取决于你试图解决的问题。单个连接将确保插入不会相互阻塞/死锁,但无论如何也可能不是问题
如果一个源当前正在写入表,而另一个源
在同一时间开始写作插入是否有可能
互相阻拦
这取决于索引。如果索引键具有相同或连续的值,则在事务期间可能会看到short=term阻塞
该表还经常用于通过视图读取数据
连接更多的表来显示数据,这个姿势可以吗
问题
这取决于隔离级别。如果出现以下情况,则不会发生阻塞:
查询正在SELECT
隔离级别和READ\u COMMITTED
数据库选项已打开READ\u COMMITTED\u SNAPSHSOT
查询不涉及未提交的数据SELECT
查询在SELECT
隔离级别中运行READ\u UNCOMMITTED
INSERT
事务很短,阻塞也可能很短
目前,每个源都有自己的DB连接来写入数据,您会这样做吗
最好只有一个连接,或者让每个连接使用自己的连接
取决于你试图解决的问题。单个连接将确保插入不会相互阻塞/死锁,但无论如何也可能不是问题