Há um trabalho em lote Spring com uma exclusão e muitas inserções em uma transação com nível de isolamento READ_COMMITTED:
delete from TABLE_A;
insert into TABLE_A values (...);
insert into TABLE_A values (...);
...
No entanto, quando tentei selecionar no banco de dados TABLE_A enquanto o trabalho em lote ainda estava em execução (ainda não confirmado), a seleção não foi bloqueada pelo bloqueio exclusivo que eu esperava porque houve uma exclusão completa da tabela na transação. Posso saber se o MariaDB possui algum mecanismo de bloqueio especial?
Ele forneceu os dados como se você olhasse a tabela antes de
DELETE
começar. Isso é tudo o que vocêSELECT
pode verREAD_COMMITTED
até o momento em que o arquivoDELETE
COMMITs
. (Não, você não obterá uma mistura de dados antigos e novos.)(Citando Bill Karwin...)