sql-server - 如何防止 SQL Server 在并行插入时锁定表?
问题描述
SQL Server 在插入时锁定表,防止多个并行插入
我正在尝试从多个源表并行插入目标表以加快进程。源表有 500 万多条记录。
我没有索引、id 列或表上定义的任何内容。
create table target(col1 varchar(255), col2 varchar(255),col3 varchar(255))
过程1:
insert into target (col1, col2, col3) as select t1_1, t1_2, current_timestamp from table1;
过程2:
insert into target (col1, col2, col3) as select t2_1, t2_2, current_timestamp from table2;
过程3:
insert into target (col1, col2, col3) as select t3_1, t3_2, current_timestamp from table3;
我希望插入可以并行工作。
第一个过程有效,但其他过程失败。但我不断收到以下错误:
1204, b'SQL Server数据库引擎的实例此时无法获取LOCK资源。当活动用户较少时重新运行您的语句。要求数据库管理员检查此实例的锁和内存配置,或检查长时间运行的事务。DB-Lib 错误消息 20018,严重性 19:\n一般 SQL Server 错误:检查来自 SQL Server 的消息\n'
SQL Server 是否允许多个并发进程并行插入大量数据?如果是这样,我该如何防止这些锁?
解决方案
推荐阅读
- security - Binance 中使用的身份验证和 BotDetect 拼图/图像
- react-native - 升级到 SDK 40 失败,现在 SDK 39 在回滚后会出现看不见的错误
- amazon-web-services - 使用 AWS 事件模式进行内容过滤 | 如何结合 'anything-but' & 'prefix' 事件
- firebase - Firebase Microsoft 社交身份验证不提供 photoUrl
- flutter - 未解决的包 'flutter' , android:name="io.flutter.app.FlutterApplication" 等
- python - 如何在pygame的while循环中减少一个生命?
- laravel - laravel 可以包含来自公共文件的刀片路由吗
- c# - Angular + .NET Core Web API + Cookie 身份验证 + 相同域 = 安全吗?
- node.js - 如何在 Flutter 中使用 Auth0 实现社交身份验证?
- oop - 实现派生类型扩展抽象类型的过程