Arquivo da tag: mysql

MySQL – Criação de Tablespace

No começo, antes da versão 5.1, quando ainda não tínhamos o “innodb-file-per-table” todas as tabelas eram criadas, e, armazenadas dentro de uma única tablespace, chamada de  “shared tablespace”, em português “área compartilhada de tabelas”, ou ainda, em “brasileiro”: casa da mãe Joana. Os famosos arquivos IBDATAx. Uma baderna. Dados, índices, metadados, transações, catálogos… Enfim, tudo referente às tabelas innodb ficam em um mesmo arquivão no S/O.

Pró: Contiguidade. Alocava-se um grande espaço justaposto no disco evitando-se fragmentação física. Contras: Performance, manutenção, etc. No frigir dos ovos, era muito ruim.

Com o nascimento do 5.1 e seu novo parâmetro maroto “innodb-file-per-table”, que como diz a tradução ao pé da letra: dançou mané – agora é uma área (tablespace/arquivo) para cada tabela. Resolveu sim os problemas de manutenção. Em alguns casos, até de performance, em virtude da melhor alocação dos dados no Buffer Pool (buffer cache). Mas, também, chegou com muitos outros problemas: aumentou muito o número de arquivos no S/O, e, com isso a necessidade de “ponteiros”, com isso, tivemos que rever as configurações de memória.

Continue lendo MySQL – Criação de Tablespace

MySQL 5.7 – Explain de Sessão

Como sempre digo… uma conexão em um banco de dados pode ser chamada de thread, sessão, conexão, etc. Cada um dá o nome que quiser à conexão feita em seu banco de dados. Nunca, jamais, discuta com o DBA!

Cenário: Uma query está rodando no MySQL. Roubando sua paciência, além de recursos de I/O, memória, CPU, etc. Antes de dar um Kill básico, voce gostaria (mas, muito) de saber que diabos esta query está fazendo.

DBA que é DBA usa a tela preta. No terminal, vc teria que dar um show full processlist, rezar para que o conteúdo da query caiba no tamanho limite, recortar a query e colar após um comando explain.

Continue lendo MySQL 5.7 – Explain de Sessão

Novo MySQL 8.0 lançado!

Todos os anos novos produtos são lançados. Na área de TI não é diferente. Já vi muita coisa boa ser lançada, reeditada, copiada… Mas, também já vi muito lixo tecnológico e “emblomation” de marketing. Nestes 34 anos de TI, já muita coisa. No mundo de banco de dados não é diferente.

O MySQL escorregou em alguns lançamentos. Mas, não é o caso desta versão 8.0 que traz algumas significativas melhorias. Na minha opinião, o que realmente conta:

Dicionário de Dados: Quem tem muitos objetos em sua instância vai entender o do que estou falando. Tenho clientes com mais de 3 milhões de objetos, e, não é divertido dar um simples SELECT no (DES)INFORMATION_SCHEMA. Travamento de instância, lentidão, LOCK (YES, LOCKS!). O novo dicionário de dados, chega em boa hora, e, parece resolver este problema.

ROLES! Nada faz mais sentido do que agrupar um monte de papéis e atribuir estes papéis a um determinado usuário, ao invés da eterna chatice de ficar atribuindo um-a-um cada privilégio de cada sujeito. Os mais malas-sem-alça, certamente, já tinha criado uma PROC para copiar privilégios. Mas, pára! Estamos nos século 21, estava na hora!

Índices invisíveis: Não entendi? Para que eu quero um índice que nem o MySQL enxerga, e, não usa em nenhuma query. Ah! Pequeno Padawan, eu explico. Nunca “dropou” um índice de uma tabela gigante, se arrependeu, e, depois ficou assistindo toda uma temporada de GoT, enquanto, recriava o maldito índice? Essa é a vantagem dos índices invisíveis. Voce coloca um índice na geladeira, se ninguém deu falta dele, após algum tempo, voce capa ele fora.

Continue lendo Novo MySQL 8.0 lançado!