15 Dicas Úteis de Otimização e Ajuste de Desempenho do MySQL/MariaDB

O MySQL é um poderoso sistema de gerenciamento de banco de dados relacional de código aberto, ou em suma RDBMS. Foi lançado em 1995 (com 20 anos de idade). Ele usa a linguagem de consulta estruturada, que é provavelmente a escolha mais popular para gerenciar conteúdo dentro de um banco de dados. A versão mais recente do MySQL é a 5.6.25 e foi lançada em 29 de maio de 2015.

Um fato interessante sobre o MySQL é que o nome vem da filha de Michael Widenius (criador do MySQL), My. Embora haja muitos fatos interessantes sobre o MySQL, este artigo tem como objetivo mostrar algumas práticas úteis para ajudá-lo a gerenciar seu servidor MySQL.

MySQL Performance Tuning

Em abril de 2009, o projeto MySQL foi comprado pela Oracle. Como resultado, foi criado um fork da comunidade do MySQL chamado MariaDB. O principal motivo para a criação do fork foi manter o projeto gratuito sob a Licença Pública Geral.

Hoje, o MySQL e o MariaDB são um dos (se não o mais) frequentemente utilizados RDBMS para aplicações web, como WordPress, Joomla, Magento e outros.

Este artigo irá mostrar algumas dicas básicas, porém úteis, de como otimizar e ajustar o desempenho do MySQL/MariaDB. Por favor, tenha em mente que este artigo pressupõe que você já tenha o MySQL ou o MariaDB instalados. Se você ainda está se perguntando como instalá-los em seu sistema, você pode seguir nossos guias extensivos aqui:

  1. Instalando LAMP no RHEL/CentOS 7
  2. Instalando LAMP no Fedora 22
  3. Configurando LAMP no Ubuntu 15.04
  4. Instalando MariaDB no Debian 8
  5. Instalar MariaDB no Gentoo Linux
  6. Instalar MariaDB no Arch Linux

Importante: Antes de começar – não aceite essas sugestões cegamente. Cada configuração do MySQL é única e requer reflexão adicional antes de fazer quaisquer alterações.

Coisas que você precisa saber:

  1. O arquivo de configuração do MySQL/MariaDB está localizado em /etc/my.cnf. Sempre que você modificar este arquivo, será necessário reiniciar o serviço do MySQL para que as novas alterações tenham efeito.
  2. Para escrever este artigo, a versão do MySQL 5.6 foi usada como modelo.

1. Habilitar o InnoDB file-per-table

Primeiro, é importante explicar que InnoDB é um mecanismo de armazenamento. MySQL e MariaDB usam o InnoDB como mecanismo de armazenamento padrão. No passado, o MySQL costumava manter tabelas e índices de banco de dados em um espaço de tabela do sistema. Esta abordagem era destinada a servidores cujo único propósito é o processamento de banco de dados e cujo disco de armazenamento não é usado para outros fins.

O InnoDB fornece uma abordagem mais flexível e cada informação do banco de dados é mantida em um arquivo de dados .ibd. Cada arquivo .ibd representa um espaço de tabela próprio. Dessa forma, operações de banco de dados como “TRUNCATE” podem ser concluídas mais rapidamente e você também pode recuperar espaço não utilizado ao descartar ou truncar uma tabela de banco de dados.

Outra vantagem dessa configuração é o fato de que você pode manter algumas das tabelas do banco de dados em um dispositivo de armazenamento separado. Isso pode melhorar significativamente a carga de I/O em seus discos.

O innodb_file_per_table é ativado por padrão no MySQL 5.6 e superior. Você pode ver isso no arquivo /etc/my.cnf. A diretiva se parece com esta:

innodb_file_per_table=1

2. Armazenar Dados do Banco de Dados MySQL em uma Partição Separada

Observação: Essa configuração funciona apenas com o MySQL, mas não com o MariaDB.

Às vezes, as leituras/gravações do sistema operacional podem diminuir o desempenho do seu servidor MySQL, especialmente se estiverem localizadas no mesmo disco rígido. Em vez disso, eu recomendaria usar um disco rígido separado (de preferência SSD) para o serviço MySQL.

Para completar, você precisará conectar o novo disco ao seu computador/servidor. Para os fins deste artigo, vou assumir que o disco estará em /dev/sdb.

O próximo passo é preparar o novo disco:

# fdisk /dev/sdb

Agora pressione “n” para criar uma nova partição. Em seguida, pressione “p” para tornar a nova partição primária. Depois disso, defina o número da partição de 1-4. Em seguida, você irá selecionar o tamanho da partição. Pressione enter aqui. No próximo passo, você precisará configurar o tamanho da partição.

Se desejar utilizar o disco inteiro, pressione enter mais uma vez. Caso contrário, você pode definir manualmente o tamanho da nova partição. Quando estiver pronto, pressione “w” para escrever as alterações. Agora precisaremos criar um sistema de arquivos para nossa nova partição. Isso pode ser facilmente feito com:

# mkfs.ext4 /dev/sdb1

Agora vamos montar nossa nova partição em uma pasta. Eu nomeei minha pasta como “ssd” e a criei no diretório raiz:

# mkdir /ssd/

Estamos prontos para montar a nova partição que acabamos de criar na nova pasta:

# mount /dev/sdb1  /ssd/

Você pode realizar a montagem na inicialização adicionando a seguinte linha no arquivo /etc/fstab.

/dev/sdb1 /ssd ext3 defaults 0 0

Agora você está pronto para mover o MySQL para o novo disco. Primeiro pare o serviço MySQL com:

# service mysqld stop

I would recommend you stopping Apache/nginx as well to prevent any attempts to write in the databases:

# service httpd stop
# service nginx stop

Agora copie todo o diretório do MySQL para o novo disco:

# cp /var/lib/mysql /ssd/ -Rp

Isso pode levar um tempo dependendo do tamanho de suas bases de dados MySQL. Quando esse processo estiver completo, renomeie o diretório do MySQL:

# mv /var/lib/mysql /var/lib/mysql-backup

Em seguida, criaremos um link simbólico.

# ln -s /ssd/mysql /var/lib/mysql

Agora você está pronto para iniciar seu MySQL e serviço web:

# service mysqld start
# service httpd start
# service nginx start

Neste ponto, suas bases de dados MySQL serão acessadas a partir do novo disco.

Source:
https://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/