У нас есть веб-приложение. В приложении есть временные операции с базами данных (INSERT и UPDATE), которые занимают больше времени, поэтому этот конкретный поток был изменен на Java-поток, поэтому он не будет ждать (блок) для завершения полной операции с базой данных.
Моя проблема в том, что, если более 1 пользователь сталкивается с этим конкретным потоком, я столкнулся со следующей ошибкой, созданной PostgreSQL:
org.postgresql.util.PSQLException: ERROR: deadlock detected
Detail: Process 13560 waits for ShareLock on transaction 3147316424; blocked by process 13566.
Process 13566 waits for ShareLock on transaction 3147316408; blocked by process 13560.
Вышеупомянутая ошибка последовательно вводится в инструкциях INSERT.
Дополнительная информация: 1) У меня есть ПЕРВИЧНЫЙ КЛЮЧ, определенный в этой таблице. 2) В этой таблице указаны ссылки FOREIGN KEY. 3) Отдельное соединение с базой данных передается каждому потоку Java.
Технологии Веб-сервер: Tomcat v6.0.10 Java v1.6.0 Servlet База данных: PostgreSQL v8.2.3 Управление подключением: pgpool II