Este artigo discute técnicas práticas para gerar grandes quantidades de dados de teste aleatórios em um banco de dados MySQL. Você aprenderá a criar funções e procedimentos armazenados para preencher automaticamente tabelas com milhares de linhas de dados. Este método é muito útil para testes de desempenho, simulação de carga e desenvolvimento de aplicativos que exigem conjuntos de dados realistas.
O desenvolvimento de aplicativos baseados em banco de dados requer testes que se aproximem das condições reais. Um script de dados aleatórios MySQL é uma solução eficiente para criar dados de teste em grande escala. Esta simulação ajuda os desenvolvedores a medir o desempenho do aplicativo em vários cenários. Você pode testar desde condições ideais até cargas altas.
Esta técnica utiliza procedimentos armazenados e funções personalizadas do MySQL. Esta abordagem oferece alta flexibilidade na determinação da quantidade e formato dos dados. Além disso, o processo de preenchimento de dados torna-se mais rápido e consistente. Métodos manuais não são mais necessários para criar grandes quantidades de dados de teste.
Passos para Criar uma Tabela para Dados Aleatórios
Antes de criar o script, primeiro prepare a tabela do banco de dados. Crie uma tabela com uma estrutura que atenda às suas necessidades de teste. O exemplo a seguir mostra uma tabela simples com três colunas.
CREATE TABLE `random_data` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`column01` VARCHAR(20) NOT NULL,
`column02` VARCHAR(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Certifique-se de ter selecionado o banco de dados correto antes de executar o comando acima. A coluna id é definida como chave primária com auto incremento. Desta forma, cada linha de dados terá um identificador único automaticamente.
Criando uma Função para Gerar Strings Aleatórias
O primeiro passo é criar uma função que gere strings aleatórias. Esta função será chamada repetidamente pelo procedimento principal. Aqui está a implementação da função random_string que você pode usar.
DELIMITER $$
CREATE FUNCTION `random_string`(length INT)
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
DECLARE chars VARCHAR(62) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE result VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < length DO
SET result = CONCAT(result, SUBSTRING(chars, FLOOR(1 + RAND() * 62), 1));
SET i = i + 1;
END WHILE;
RETURN result;
END$$
DELIMITER ;Esta função irá gerar uma string aleatória que consiste em letras maiúsculas, minúsculas e números. O parâmetro length determina o comprimento desejado da string. Você pode ajustar o conjunto de caracteres de acordo com necessidades específicas.
Implementação via phpMyAdmin
- Acesse o phpMyAdmin e selecione seu banco de dados de destino.
- Abra a aba “Rotinas” na parte superior da interface.
- Clique no botão “Adicionar rotina” para criar uma nova função.
- Selecione o tipo “FUNÇÃO” e insira o código acima.
- Salve a função com o nome
random_string.

Criando um Procedimento para Inserção Massiva de Dados
Uma vez que a função esteja disponível, crie um procedimento armazenado que realize a inserção massiva de dados. Este procedimento usa loops para adicionar linhas repetidamente. Você pode ajustar o número de iterações conforme necessário.
DELIMITER $$
CREATE PROCEDURE `generate_random_data`(IN row_count INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < row_count DO
INSERT INTO random_data (column01, column02)
VALUES (random_string(20), random_string(20));
SET i = i + 1;
END WHILE;
END$$
DELIMITER ;O procedimento acima aceita um parâmetro row_count para determinar o número de linhas de dados. Assim, você pode gerar dados em quantidades flexíveis, de centenas a milhões de linhas. Este procedimento chama a função random_string para cada coluna que requer dados aleatórios.
Executando o Procedimento Armazenado
- No phpMyAdmin, abra novamente a aba “Rotinas”.
- Selecione o procedimento
generate_random_datada lista. - Clique no botão “Executar” ao lado do nome do procedimento.
- Insira o número desejado de linhas quando solicitado o parâmetro.
- Clique no botão “Ir” para executar o procedimento.

Otimização e Considerações Técnicas
Para inserir quantidades muito grandes de dados, considere as seguintes otimizações:
- Desativar índices temporariamente: Desative os índices da tabela antes da inserção e reative-os após a conclusão. Isso acelera o processo de inserção em massa.
- Usar uma única transação: Comece com
START TRANSACTIONe termine comCOMMIT. Esta técnica reduz a sobrecarga do log de transações. - Processamento em lotes: Divida a inserção em vários lotes para evitar timeouts e monitorar o progresso.
- Monitorar recursos: Monitore o uso de CPU e memória durante o processo. Ajuste o tamanho do lote com base na capacidade do servidor.
Por exemplo, para inserir 1 milhão de linhas de dados, você pode dividir em 10 lotes de 100.000 linhas cada. Desta forma, você pode monitorar o progresso e evitar falhas devido a timeouts.

Seguindo este guia, você pode criar um script de dados aleatórios MySQL eficaz para necessidades de teste. Esta técnica não apenas economiza tempo, mas também fornece dados de teste mais realistas. Para mais informações sobre procedimentos armazenados, visite a documentação oficial do MySQL. Sempre realize testes em um ambiente de desenvolvimento antes de aplicar em produção.


