Estou ciente da configuração global "innodb_flush_log_at_trx_commit" no MySQL, mas isso abrange todo o servidor.
Estou procurando uma maneira de especificar que algumas transações podem ser ACI em vez de ACID, a fim de reduzir a latência de confirmação em troca do risco de perda de transação se o banco de dados morrer inesperadamente.
Gostaria de poder especificar garantias de durabilidade, transação por transação ou sessão/conexão por sessão/conexão.
Isso é possível com MySQL 8.x?
ATUALIZAÇÃO: Postgresql possui essa funcionalidade via "Asynchronous Commit". Por exemplo: https://www.postgresql.org/docs/current/wal-async-commit.html . Eu preciso de algo assim para MySQL.
Desculpe, não, a durabilidade do redo log é uma configuração global. Não há opção para alterar a liberação de log por transação.
Você poderia permitir que a liberação de log fosse menos durável e, em seguida, forçar a liberação ocasionalmente, se necessário, executando instruções DDL. De acordo com a documentação, o DDL causa uma liberação do redo log. Eu não tenho prova disso.
O que eu recomendaria é resolver o problema de alguma outra maneira.