Esperando que alguém possa esclarecer uma seção deste artigo "agregação de dados incrementais escaláveis" e a pergunta correspondente.
Assuma o Postgres 10 e superior.
No Postgres 10, você pode usar a função pg_sequence_last_value para verificar o número de sequência emitido mais recentemente. No entanto, não seria seguro simplesmente agregar todos os eventos até o valor de sequência mais recente. Ainda pode haver gravações em andamento na tabela de eventos que receberam valores de sequência inferiores, mas ainda não estão visíveis quando a agregação é executada.
Existem alternativas para pg_sequence_last_value que garantem o id seq correto?
Em uma tabela (chame-a de eventos) com um id BIGSERIAL, existe uma maneira preferencial de buscar o id seq mais recente para fins de agregação? Tudo bem se houver inserções pendentes em uma transação diferente (elas terão ids de sequência mais altas) e serão coletadas em execuções subsequentes.
O objetivo é usar um seq id para executar a agregação (rollups incrementais) em inserções já confirmadas.
Os três métodos a seguir garantem o retorno do último seq id para inserções confirmadas e evitam a armadilha mencionada no artigo relacionado a pg_sequence_last_value?
Existem outras técnicas que alguém poderia sugerir?
SELECT max(id) FROM events;
SELECT last_value FROM pg_sequences WHERE sequencename='events_id_seq';
SELECT id FROM events ORDER BY id DESC LIMIT 1;
Assumir read committed
nível de isolamento