sql >> Database >  >> RDS >> PostgreSQL

Meerdere transacties tegelijk uitvoeren in PostgreSQL

Open meer dan één psql sessie, één terminal per sessie.

Als u Windows gebruikt, kunt u dat doen door psql . te starten meerdere keren via het menu Start. Open op andere platforms een aantal nieuwe terminals of terminaltabbladen en start psql in elk.

Ik doe dit routinematig wanneer ik vergrendelings- en gelijktijdigheidsproblemen onderzoek, die worden gebruikt in antwoorden zoals:

... waarschijnlijk meer. Een handige truc als je een raceconditie wilt instellen, is door een derde psql . te openen sessie en BEGIN; LOCK TABLE the_table_to_race_on; . Voer vervolgens verklaringen uit in uw andere sessies; ze zullen het slot blokkeren. ROLLBACK de transactie met de tafelvergrendeling en de andere sessies zullen racen. Het is niet perfect, omdat het geen gelijktijdigheid van offset-start-time simuleert, maar het is nog steeds erg nuttig.

Andere alternatieven worden beschreven in dit latere antwoord over een soortgelijk onderwerp.



  1. Een tijdstempel krijgen van aaneengeschakelde dag- en tijdkolommen

  2. Hoe zorg ik ervoor dat een gematerialiseerde view altijd up-to-date is?

  3. Hoe maak je een reeks in SQL Server 2008

  4. postgresql - krijg telling op waardebereiken