Eu tenho uma tabela chamada 'carro'
Tabela "db145004db.car" Coluna | Tipo | Agrupamento | Anulável | Predefinição ----------+--------+-----------+----------+------- -- carro_no | bigint | | não nulo | nome_carro | texto | | | Índices: CHAVE PRIMÁRIA "car_pkey", btree (car_no)
Conteúdo da tabela:
carro_no | car_name --------+------------ 1 | primeiro carro 2 | segundo_carro 3 | third_car
Eu executei isso após duas transações,
Transação 1:
começar ; selecione * do carro onde car_no=2 para atualização;
Transação 2:
começar ; selecione * do carro onde car_no=2 para atualização; (aguardando a primeira transação liberar o bloqueio)
Minha tabela 'pg_locks' se parece com:
tipo de bloqueio | banco de dados | relação | página | tupla | virtualxid | ID de transação | classid | objid | objsubid | transação virtual | pid | modo | concedido | atalho ---------------+----------+----------+------+----- --+------------+---------------+---------+-------+ ----------+--------------------+-------+---------- ------------+-------------+---------- relação | 103777 | 143022 | | | | | | | | 4/75 | 11043 | AccessShareLock | t | t relação | 103777 | 143016 | | | | | | | | 4/75 | 11043 | RowShareLock | t | t virtualxid | | | | | 4/75 | | | | | 4/75 | 11043 | Bloqueio exclusivo | t | t relação | 103777 | 143022 | | | | | | | | 5/144 | 11150 | AccessShareLock | t | t relação | 103777 | 143016 | | | | | | | | 5/144 | 11150 | RowShareLock | t | t virtualxid | | | | | 5/144 | | | | | 5/144 | 11150 | Bloqueio exclusivo | t | t relação | 103777 | 11577 | | | | | | | | 3/141 | 11263 | AccessShareLock | t | t virtualxid | | | | | 3/141 | | | | | 3/141 | 11263 | Bloqueio exclusivo | t | t ID de transação | | | | | | 10204 | | | | 5/144 | 11150 | ShareLock | f | f tupla | 103777 | 143016 | 0 | 2 | | | | | | 5/144 | 11150 | AcessoExclusivoBloqueio | t | f ID de transação | | | | | | 10204 | | | | 4/75 | 11043 | Bloqueio exclusivo | t | f
Não consigo ver nenhum bloqueio relacionado a linhas/tuplas (car_no=2). Além disso, locktype e mode são um pouco confusos (não consigo entender o que eles tendem a transmitir). Como um novato no psql, estou totalmente confuso. Alguém pode ajudar a interpretar 'pg_locks', com relação ao bloqueio de nível de linha, em relação ao cenário acima.
Me deparei com os documentos do postgres sobre bloqueio, que afirma que
Eu tenho minha resposta.