"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar com eficiência grandes conjuntos de dados do MySQL em pedaços?

Como recuperar com eficiência grandes conjuntos de dados do MySQL em pedaços?

Publicado em 2024-11-08
Navegar:781

How to Efficiently Retrieve Large Datasets from MySQL in Chunks?

Recuperando grandes dados do MySQL em pedaços para desempenho aprimorado

Ao lidar com seleções consideráveis ​​do MySQL com milhões de linhas, podem surgir problemas com restrições de memória durante a recuperação de dados. Este artigo explora uma solução para esse desafio utilizando o recurso LIMIT para recuperar dados em partes gerenciáveis.

Para recuperar grandes conjuntos de dados iterativamente, o recurso LIMIT pode ser empregado. Ao especificar uma linha inicial e um número máximo de linhas a serem recuperadas, podemos dividir o processo de seleção em subconjuntos menores. Por exemplo, executar a seguinte consulta:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

buscará as primeiras 1.000 linhas. Para recuperar conjuntos subsequentes de 1.000 linhas, podemos emitir consultas semelhantes com valores LIMIT ajustados, como:

SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000
SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000

No entanto, essa abordagem não garante uma ordem consistente de linhas devido a possíveis alterações na tabela durante o processo de recuperação. Para resolver isso, podemos primeiro criar uma tabela temporária e preenchê-la com os resultados ordenados:

CREATE TEMPORARY TABLE MyChunkedResult AS (
  SELECT *
  FROM MyTable
  ORDER BY whatever
);

Isso garante que a ordem das linhas permaneça intacta enquanto as recuperamos em partes:

SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;
.. and so on.

Para determinar a linha inicial apropriada para cada bloco e verificar o final dos resultados, uma lógica personalizada pode ser implementada. É recomendado usar tamanhos de bloco significativamente maiores do que 1.000 registros para otimizar o desempenho.

Ao concluir a recuperação de dados, é aconselhável descartar a tabela temporária para gerenciamento de recursos:

DROP TEMPORARY TABLE MyChunkedResult;

A adoção dessa abordagem de recuperação fragmentada melhora significativamente o desempenho e permite a extração bem-sucedida de grandes conjuntos de dados MySQL.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3