Continuando com nossa análise sobre teste de desempenho no MySQL vamos aprender hoje a utilizar uma ferramenta bastante poderosa, o mysqlslap, com ele poderemos executar várias tarefas, utilizar vários usuários ao mesmo tempo simulando um load casual de um servidor. Vamos lá.
O mysqlslap é distribuído juntamente com a instalação do mysql, geralmente se você não encontrá-lo no diretório padrão tente fazer o download de alguma distribuição com o título "noinstall".
Se sua instalação MySQL está completa e foi feita de forma correta com todos os PATHs e diretórios padrão basta digitar mysqlslap e pressionar ENTER e serão mostrados os resultados de execução.
shell> mysqlslap --user=bench_user --password --auto-generate-sql
Enter password:
Benchmark
Average number of seconds to run all queries: 0.035 seconds
Minimum number of seconds to run all queries: 0.035 seconds
Maximum number of seconds to run all queries: 0.035 seconds
Number of clients running queries: 1
Average number of queries per client: 0
Vamos a um exemplo mais complexo, para isto vou criar uma tabela utilizando a maioria dos tipos de dados existentes no MySQL. Segue os comandos abaixo:
/* Cria o banco de dados */
CREATE DATABASE bench;
/* Cria a tabela */
CREATE TABLE bench (
id int not null auto_increment primary key,
c1 int,
c2 CHAR(30),
c3 VARCHAR(30),
c4 FLOAT(10,2),
c5 DECIMAL(10,2),
c6 TEXT
) ENGINE=MyISAM;
Bem, essa será nossa tabela de testes, após a criação do banco de dados e da tabela descrita acima vamos criar um arquivo .SQL para incluir uma query com INSERTs nesta tabela.
INSERT INTO bench.bench VALUES(null,100000,'AA','AA',789.89,789.89,'TEXTO AQUI');
Insira os comandos acima em um arquivo e grave-o como bench.sql, lembre-se que apenas será executado apenas um comando por linha, na query acima você pode incluir o tamanho máximo de cada tipo criado, quis deixar assim para facilitar o exemplo.
Agora vamos utilizar o que criamos acima para executar com o mysqlslap.
mysqlslap --user=user_bench -p --concurrency=10 --iterations=10 --query=bench.sql
Vamos entender os parâmetros acima:
--user e -p -> usuário e senha que será utilizado para performar o teste, neste caso deve ter as permissões INSERT na tabela em questão.
--concurrency -> a quantidade de conexões simultâneas que serão utilizadas para executar a query expecificada, por exemplo, neste caso estaremos fazendo com que 10 conexões executem cada uma 10 vezes a mesma query.
--iterations -> a quantidade de queries que serão executadas para cada conexão especificada em concurrency
Após pressionar ENTER obteremos o resultado do nosso teste, claro que em seu servidor os valores poderão ser diferentes.
Benchmark
Average number of seconds to run all queries: 0.125 seconds
Minimum number of seconds to run all queries: 0.124 seconds
Maximum number of seconds to run all queries: 0.127 seconds
Number of clients running queries: 10
Average number of queries per client: 10
Abaixo vamos ver mais algumas opções interessantes para utilizar com o mysqlslap:
--auto-generate-sql -> gera automaticamente um query para execução
--auto-generate-sql-add-auto-increment -> gera automaticamente tabelas que contém campos do tipo AUTO_INCREMENT
--burnin -> executa os testes no modo burn-in, ou seja, executa todos os parâmetros especificados de forma ininterrupta, implementado no MySQL 6.0
--engine -> utiliza um determinado ENGINE para executar os testes
Bem, aqui você já tem uma idéia de como utilizar o mysqlslap para testar suas queries e o desempenho do seu servidor. Para saber mais parâmetros sobre o mysqlslap utilize mysqlslap --help
Até a próxima
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.