Porém, ao utilizar essa abordagem um novo problema surge, sempre que houver transações concorrentes acessando a mesma linha do banco, a segunda transação terá que esperar a primeira transação liberar o lock para seguir em frente, fazendo com que o sistema enfrente alguns gargalos caso multiplas solicitações de compra sejam realizadas para um mesmo produto em um curto intervalo de tempo.
De qual escala estamos falando?
Para um sistema pequeno isso é irrelevante.
Começa-se a tornar um problema somente com milhares de pessoas acessando simultaneamente, se esse não for o seu caso resolver esse problema é overengineering