Quais são as diferenças práticas entre `REPLACE` e` INSERT ... ON DUPLICATE KEY UPDATE` no MySQL?

O que eu preciso é definir os valores de todos os campos de um registro com uma chave específica (a chave é composta de fato), inserindo o registro se ainda não houver um registro com essa chave.

REPLACE parece ter o objetivo de fazer o trabalho, mas ao mesmo tempo sua página de manual sugereINSERT ... ON DUPLICATE KEY UPDATE.

Qual deles devo escolher melhor e por quê?

O único "efeito colateral" deREPLACE que me ocorre é que aumentaria os valores de incremento automático (felizmente eu não uso nenhum) enquantoINSERT ... ON DUPLICATE KEY UPDATE provavelmente não. Quais são as outras diferenças práticas a serem consideradas? Em que casos específicosREPLACE ser preferível aINSERT ... ON DUPLICATE KEY UPDATE e vice versa

questionAnswers(14)

yourAnswerToTheQuestion