我在一个大型数据库上要做一些工作,它基本上需要为表中的每个值(大约 20k 个条目)调用具有不同参数的存储过程。我想在整个过程运行所需的时间内不阻塞该表或每个循环所涉及的其他表来执行此操作。是否可以从 SQL 内部将事务限制为游标上的单个循环?
对我来说,在流程完成后手动检查我正在循环的表是否有更改并再次为新条目运行它会非常简单,所以我不关心跟踪更改。
我在一个大型数据库上要做一些工作,它基本上需要为表中的每个值(大约 20k 个条目)调用具有不同参数的存储过程。我想在整个过程运行所需的时间内不阻塞该表或每个循环所涉及的其他表来执行此操作。是否可以从 SQL 内部将事务限制为游标上的单个循环?
对我来说,在流程完成后手动检查我正在循环的表是否有更改并再次为新条目运行它会非常简单,所以我不关心跟踪更改。
You can set the transaction isolation level to read uncommited. but be sure that's what you really want, since you can get dirty reads, lost updates, phantom updates, etc....
我建议遍历 20000 条记录是一个糟糕的选择。最好用基于集合的解决方案替换存储的过程。你应该避免使用游标。