Как указать явную блокировку при создании таблицы в PostgreSQL

#sql #postgresql

#sql #postgresql

Вопрос:

Каков механизм блокировки по умолчанию в PostgresSQL при создании таблицы? это строка, страница, уровень таблицы или что-то еще?

Возможно ли указать блокировку на уровне строк при создании таблицы? что-то вроде приведенного ниже в Sybase.

 CREATE TABLE user 
(...)
LOCK DATRAROWS  
  

Или нам не нужно указывать какую-либо стратегию блокировки и предоставить Postgres выбирать лучшую, пока мы имеем дело с CRUD?

Приветствия!

Комментарии:

1. Я полагаю, что postgres всегда использует наименее навязчивый механизм блокировки из возможных — в большинстве случаев блокировку на уровне строк MVCC.

2. Зачем вам это нужно делать?

3. Я исхожу из пространства Sybase, где мы обычно явно устанавливали блокировку потоков данных, и здесь, в моем конкретном случае использования, я не хочу, чтобы Postgres использовал что-либо другое, кроме блокировки на уровне строк. Теперь я понимаю, что в PGSql все немного по-другому 🙂

Ответ №1:

Вы ничего не можете указать во время создания ТАБЛИЦЫ для PostgreSQL. Во время выполнения вы можете выбрать строки FOR UPDATE или FOR SHARE . Если вы переходите на PostgreSQL с другой платформы, вам следует просмотреть документы по управлению параллелизмом.

Ответ №2:

При создании таблицы блокировки нет. О блокировке можно прочитать здесь: http://www.postgresql.org/docs/9.0/static/explicit-locking.html