# Definições / Particularidades do PostgreSQL ##### Serviço/Processo no Windows Para iniciar o banco de dados deve-se ser iniciado o serviço do postgres no gerenciador de serviços do Windows, ou configurá-lo como automático. [](http://kb.ema.net.br/uploads/images/gallery/2022-06/eHmofJHprvCYGle0-image-1656358069653.png) Para cada seção no banco ou thread é criado um registro **postgres.exe** no gerenciador de tarefas, este comportamento é normal, assim que as seções forem encerradas, o processo também será finalizado. [](http://kb.ema.net.br/uploads/images/gallery/2022-06/5qQytVPeew9kROs9-image-1656358102391.png) *Cada PID do sistema operacional Windows poderá ser localizado dentro do banco de dados e sua seção monitorada.* ##### Tuplas Este é o tipo de dado da coluna do sistema, o identificador de tupla é um par (número do bloco, índice da tupla dentro do bloco) que identifica a posição física da linha dentro de sua tabela. ##### Transações - Locks e Bloqueios Os Locks podem ser definidos como bloqueios executados em objetos ou dados no banco de dados. Esses bloqueios podem ser gerados automaticamente (em função do gerenciamento Multiversão/Multiusuário (MVCC) do PostgreSQL) e manualmente (com comandos ou operações que necessitem “travar” uma tabela ou alguns de seus registros). O PostgreSQL trabalha com diversos tipos ou modos de bloqueios diretamente vinculados a ações específicas ao programa para controlar o acesso simultâneo aos dados e tabelas.
Bloqueio | Descrição | Entra em conflito com |
ACCESS SHARE | O comando SELECT obtém um bloqueio deste modo nas tabelas referenciadas. Em geral, qualquer comando que apenas leia a tabela (sem modificá-la) obtém este modo de bloqueio. | ACCESS EXCLUSIVE |
ROW SHARE | O comando SELECT FOR UPDATE obtém o bloqueio neste modo na(s) tabela(s) de destino. | EXCLUSIVE e ACCESS EXCLUSIVE |
ROW EXCLUSIVE | Os comandos UPDATE, DELETE e INSERT obtêm este modo de bloqueio na tabela de destino (além do modo de bloqueio **ACCESS SHARE** nas outras tabelas referenciadas). Em geral, este modo de bloqueio é obtido por todos os comandos que modificam os dados da tabela. | SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE |
SHARE UPDATE EXCLUSIVE | Obtida pelo comando VACUUM (sem a opção **FULL**). Protege a tabela contra mudanças simultâneas no esquema durante a execução do comando VACUUM | SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE. |
SHARE | Obtido pelo comando CREATE INDEX. | ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE. |
SHARE ROW EXCLUSIVE | Este modo de bloqueio não é obtido automaticamente por nenhum comando do PostgreSQL. | ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE |
EXCLUSIVE | Este modo de bloqueio não é obtido automaticamente por nenhum comando do PostgreSQL. | ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE. |
ACCESS EXCLUSIVE | Obtido pelos comandos ALTER TABLE, DROP TABLE e VACUUM FULL. Este é também o modo de bloqueio padrão para o comando LOCK TABLE sem a especificação explícita do modo. | Entra em conflito com todos os modos de bloqueio Este modo garante que a transação que o obteve seja a única que esteja acessando a tabela. |