Zgodnie z reference documentation flaga transakcji READ ONLY przydaje się inaczej niż przy transakcjach DEFERRABLE?Czy PostgreSQL uruchamia niektóre optymalizacje wydajności dla transakcji tylko do odczytu?
SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;
Właściwość transakcja odroczeniu nie ma żadnego wpływu, chyba że transakcja jest również SERIALIZABLE i tylko do odczytu. Gdy wszystkie trzy z tych właściwości są wybrane dla transakcji, transakcja może blokować po pierwszym pobraniu jej migawki, po czym jest w stanie uruchomić bez normalnego narzutu transakcji SERIALIZABLE i bez żadnego ryzyka wniesienia wkładu w anulowane przez błąd serializacji . Ten tryb jest dobrze dostosowany do długotrwałych raportów lub kopii zapasowych.
Czy silnik bazy danych uruchamia inne optymalizacje dla transakcji tylko do odczytu?
Rozumiem, że transakcje odczytu i zapisu wiążą się z pewnymi kosztami, ale nie obciążają tego, dopóki faktycznie coś nie napiszesz. Innymi słowy, jeśli chodzi o wydajność, transakcja 'TYLKO ODCZYT" powinna być taka sama jak transakcja 'READ WRITE', która zawiera tylko odczyty. Wynika to ze sposobu, w jaki Postgres obsługuje przypisanie XID (niektóre informacje na ten temat [tutaj] (https://wiki.postgresql.org/wiki/Hint_Bits)). –
@NickBarnes To również pasuje do mojego zrozumienia. "TYLKO ODCZYTAJ" to naprawdę coś bardziej bezpiecznego. –
Dzięki. Tak więc odroczone transakcje są jedyną znaczącą optymalizacją. –