sql >> Database >  >> RDS >> PostgreSQL

Spring Data JPA + Hibernate Vergrendelde rijen overslaan (PostgreSQL)

Je code is in orde. Het enige dat u hoeft te onthouden, is dat PESSIMISTIC_WRITE een SELECT …​ FOR UPDATE SKIP LOCKED in Oracle en PostgreSQL 9.5 . Ik neem aan dat je zou kunnen vergeten om JPA te vertellen dat je een nieuwere versie van Postgres moet gebruiken. Je hebt dus twee opties:

  • vertel JPA dat u PostgreSQL Dialect gebruikt dat SKIP LOCKED ondersteunt :
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
    
    Hierna ontving ik de gewenste output:
    where
        subscripti0_.valid_until<=? 
    and subscripti0_.status='ACTIVE' 
    for update of subscripti0_1_ skip locked
    
    en het is duidelijk dat de gelijktijdige thread geen vergrendelde rijen kon ophalen totdat de transactie was voltooid.
  • gebruik native query :
    SELECT * FROM objects o WHERE o.valid_until <= :validUntil FOR UPDATE SKIP LOCKED 
    


  1. gegevens van de ene tabel naar de andere verplaatsen, postgresql-editie

  2. MariaDB CEIL() uitgelegd

  3. Aangepast SERIEEL / automatisch verhogen per groep waarden

  4. Volledig herstel van een MySQL- of MariaDB Galera-cluster vanuit back-up