Как запретить SQL Server блокировать таблицу при параллельной вставке? - PullRequest
0 голосов
/ 07 октября 2019

SQL Server блокирует таблицу при вставке, предотвращая множественные параллельные вставки

Я пытаюсь вставить в целевую таблицу несколько исходных таблиц параллельно, чтобы ускорить процесс. Исходные таблицы содержат более 5 миллионов записей.

У меня нет индексов, столбцов идентификаторов или чего-либо определенного в таблице.

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 Database Engine в настоящее время не может получить ресурс LOCK. Повторите ваше заявление, когда активных пользователей станет меньше. Попросите администратора базы данных проверить блокировку и конфигурацию памяти для этого экземпляра или проверить наличие длительных транзакций. Сообщение об ошибке DB-Lib 20018, уровень серьезности 19: \ nОбщая ошибка SQL Server: проверка сообщений от SQL Server \ n '

Позволяет ли SQL Server нескольким параллельным процессам вставлять большие объемы данных для параллельной вставки? Если так, как я могу предотвратить эти блокировки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...