Inserção em massa no banco de dados
[Finalizado Pelo Aluno]
Gostaria de saber se a implementação acima lida bem com situações onde pode ser enviado para uma API um JSON tendo uma Review com centenas de approvers e cada approver com centenas de collaborators
Existe algum perigo em inserções com grande carga de dados ocorrer um timeout ou até mesmo um problema de performance?
Se puder apresentar alguma melhoria, por gentileza deixe aqui
Olá, Alef!
Tudo bem?
Uma das maneiras produtivas de inserir, seria usando o método insert() invés do create()
Massss, o insert() é mais arriscasdo, porque simplesmente insere, não validar o fillable, pode até usar ele mas com bastante cuidado (valida os dados antes) - o insert() vc pode passar uma matrix de dados, que vai persistir ela toda de uma vez.
--
Esse insert dentro do loop não ficou legal, ou usa o insert(), ou usa o createMany()
[https://laravel.com/docs/11.x/eloquent-relationships#the-create-method]
Tentei usar o createMany() e mesmo assim ele faz vários INSERT INTO proporcionais ao número de objetos que eu coloco no JSON, ou seja, se eu tiver 10 managers, são executados 10 INSERT INTO, se eu tenho 20 managers, são executados 20 INSERT INTO e assim por diante, e eu quero evitar isso...
Para verificar a quantidade de queries que são executadas, eu utilizo o Laravel Telescope e abro os detalhes da solicitação POST e as consultas que foram executadas
Vou mostrar um pedaço do meu código:
Envio do JSON via POST
Se o JSON houver centenas de manager_id havera muitas queries e vejo isso como um grande problema
Usa o método insert() mesmo, só valida bem estes dados.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!