PostgreSQL quick start

How to install PostgreSQL with brew:

add to startup:

start:

or manually:

with ctl:

check status:

port:

logs:

How to setup PostgreSQL

quit psql:

create application user and database

setup password for user:

Enjoy!

Проблемы параллельного доступа – Transaction Phenomena

Lost update – перезапись изменений другой транзакцией Dirty reads – чтение данных транзакции которая может откатиться Non-repeatable reads – прочитанные данные при следующем прочтении оказались измененными Phantom reads – разные множества строк

ACID – Atomicity, Consistency, Isolation, Durability

JTA – Java Transaction API | ACID | Two-phase commit | Three-phase commit Atomicity — Атомарность – транзакция не может выполниться частично Consistency — Согласованность – завершившаяся транзакция оставляет бд в согласованном состоянии Isolation — Изолированность – на выполнение транзакции не должны влиять другие транзакции системы Durability — Надежность – данные сохраненные выполненной транзакцией не […]

Различия Serializable и Read Committed

Read Committed – Statement-Level Read Consistency – nonrepeatable read and phantoms Serializable – Transaction-Level Read Consistency – ORA-08177: Cannot serialize access for this transaction SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ ONLY; ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE; ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;

Deadlock detection – Как обнаружить deadlock

Если две сессии заблокировали друг друга, получаем событие которое называется deadlock. Oracle сам автоматически обнаруживает и обеспечивает обработку deadlock отменяя один из операторов в транзакции который вызвал deadlock.

и в alert.log –

Что бы избежать подобных блокировок нужно быть внимательным, что бы приложения обновляло данный в заданном порядке, начиная от мастер таблицы и […]

Oracle SCN

SCN для незавершившихся транзакций System Change Number, для завершившихся – System Commit Number Воспроизводимость при чтении В заголовке блока записывается последнее значение SCN при котором менялось содержимое блока. На момент начала выполнения запроса запоминается SCN’ и при чтении блока если SCN > SCN’ то это означает что блок изменился и мы должны найти его в […]

Уровни изоляции транзакций oracle

READ COMMITTED – уровень изоляции транзакции в Oracle по умолчанию. Воспроизводимость чтения на уровне запроса. Запрос видит только зафиксированные данные. SERIALIZABLE – запрос видит данные которые были зафиксированы до момента начала транзакции. Воспроизводимость чтения на уровне всей транзакции. Возможна ORA-08177: can’t serialize access for this transaction – при попытке изменить данные в транзакции, которые в […]