Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimizando inserções do MySQL para lidar com um fluxo de dados


Se seus dados não precisarem entrar no banco de dados imediatamente, você poderá armazenar em cache seus dados de inserção em algum lugar e, em seguida, emitir uma instrução de inserção maior, por exemplo.

inserir em table_name (x, y, z) valores (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) na atualização duplicada ...;

Para ser claro, eu manteria uma lista de inserções pendentes. Neste caso, uma lista de trigêmeos (x,z,y). Então, quando sua lista exceder algum limite (N), você gera a instrução de inserção e a emite.

Não tenho números precisos de tempo para você, mas isso aumentou o desempenho cerca de 10 vezes quando comparado à inserção de cada linha individualmente.

Eu também não joguei com o valor de N, mas achei que 1000 funciona bem. Espero que o valor ideal seja afetado pelas configurações de hardware e banco de dados.

Espero que isso ajude (eu também estou usando MyIsam).