Il mio suggerimento è questo:sposta le query del database al di fuori del ciclo e blocca l'accesso in modo da non eseguire query sul database parallelo. Penso che ciò accelererà anche le cose, poiché non avrai accesso al disco parallelo, pur essendo in grado di eseguire l'elaborazione parallela.
Significato (pseudo codice)db =connetti a databasethreadlock =lock();
parfor {threadlock.lockresult =db query (tira tutti i dati qui, poiché non puoi elaborare mentre carichi senza mantenere bloccato il database) thread.unlockprocess i dati risultanti (che ora sono solo dati e non un oggetto sql).}