PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

ibernazione del batch di inserimento con postgresql partizionato

Potresti provare a utilizzare un batcher personalizzato impostando la proprietà hibernate.jdbc.factory_class. Assicurati che l'ibernazione non controlli il conteggio degli aggiornamenti delle operazioni batch potrebbe risolvere il tuo problema, puoi ottenerlo facendo in modo che il tuo batcher personalizzato estenda la classe BatchingBatcher e quindi sovrascrivendo il metodo doExecuteBatch(...) in modo che assomigli a:

    @Override
    protected void doExecuteBatch(PreparedStatement ps) throws SQLException, HibernateException {
        if ( batchSize == 0 ) {
            log.debug( "no batched statements to execute" );
        }
        else {
            if ( log.isDebugEnabled() ) {
                log.debug( "Executing batch size: " + batchSize );
            }

            try {
//              checkRowCounts( ps.executeBatch(), ps );
                ps.executeBatch();
            }
            catch (RuntimeException re) {
                log.error( "Exception executing batch: ", re );
                throw re;
            }
            finally {
                batchSize = 0;
            }

        }

    }

Si noti che il nuovo metodo non verifica i risultati dell'esecuzione delle istruzioni preparate. Tieni presente che apportare questa modifica potrebbe influire sull'ibernazione in un modo imprevisto (o forse no).