Простейшая таблица, при добавлении записей в 30+ потоков(заканчиваются они почти одновременно... но врядли в этом дело), в БД попадает в лучшем случае половина данных, остальное - пустые строки.
@andrwork а откуда данные берутся? они проверяются перед тем как заносить в БД?
Как вариант конечно отдельный поток который будет собирать данные с рабочих потоков (через те же списки) и заносить их в БД, предварительно производя валидацию)
В запросе есть переменные, когда запускается в режиме записи, они (переменные) есть, когда в потоке они скорее всего пустые.
В этом можно убедится - вставить вывод в лог все переменные непосредственно перед запросом.