我有一个运行多线程的进程。
Process 具有要处理的项目的线程安全集合。
每个线程循环处理集合中的项目。
列表中的每个项目由线程发送到存储过程,以将数据插入事务中的 3 个表中(在 sql 中)。如果一个插入失败,则三个都失败。请注意,交易范围是每件商品。
插入非常简单,只需在每个表中插入一行(与外键相关),并带有标识种子。没有读取,只需插入然后继续下一项。
如果我有多个线程试图处理他们自己的项目,每个项目都试图插入到同一组表中,这是否会由于事务锁而产生死锁、超时或任何其他问题?
我知道每个线程必须使用一个数据库连接,我主要关心每个事务中表的锁定级别。当一个线程向 3 个表中插入行时,其他线程是否必须等待?每个表的行没有依赖性,除了需要增加自动标识。如果是表级锁来增加标识,那么我想其他线程将不得不等待。插入件有时可能很快,也可能不快。如果它必须等待,那么做多线程是否有意义?
多线程的目标是加速项目的处理。
请分享你的经验。
PS:身份种子不是 GUID。