PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy wiersze są zablokowane w kolejności w instrukcji SELECT ... ORDER BY ... FOR UPDATE?

Wiersze są zablokowane w kolejności ORDER BY klauzula tak jak podczas skanowania tabeli .

Zapytanie jest wykonywane i wiersze są uporządkowane, a następnie PostgreSQL blokuje wiersze w kolejności. Zasadniczo ORDER BY dzieje się przed FOR UPDATE .

Teraz może się zdarzyć, że blokowanie wiersza blokuje z powodu blokad utrzymywanych przez współbieżne transakcje. Jeśli tak się stanie, a my jesteśmy na READ COMMITTED poziom izolacji, PostgreSQL czeka dopóki nie zdoła uzyskać blokady i potem pobierze aktualną wersję rzędu, który blokuje.

Jeżeli transakcja równoległa zmodyfikowała kolumny definiujące kolejność, to ostateczny wynik nie będzie w kolejności zdefiniowanej przez ORDER BY .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana ORDER BY z id na inną indeksowaną kolumnę (z niskim LIMIT) ma ogromny koszt

  2. Jak przeprowadzić migrację atrybutu modelu ActiveRecord z json do jsonb?

  3. Dlaczego \dt PostgreSQL pokazuje tylko publiczne tabele schematów?

  4. Naprawianie uszkodzonej tabeli TOAST

  5. Dwóch właścicieli tej samej bazy danych PostgreSQL