Metadados Information_schema – MySQL

Ola pessoal,

Sabemos que um banco de dados é um conjunto estruturado de dados com o objetivo de retornar alguma informação.

Quando falamos de “metadados”, tratamos sobre os dados sobre outros dados. Um pouco confuso, mas o principal objetivo é saber que os metadados tratados no MySQL, estão disponíveis na information_schema. Saber manusear os metadados nesta base é tarefa diária do DBA.

A information_schema é a estrutura de dicionário de dados utilizada pelo MySQL, funcionando como um repositório central para metadados de qualquer banco de dados.

Nela podemos obter:

– Todo o schema de objetos
– Estatisticas do servidor (Conexões, uso de CPU, Bytes enviados e recebidos)
– Privilégios
– Store procedure e Views

Porém ele é um banco de “dados virtual”, já que em nenhum momento ele esta armazenado no disco. Mas contem tabelas como qualquer outra base, onde o seu conteudo pode ser acessado com a instrução select.

O primeiro exemplo, podemos verificar os grants atribuidos a um usuário:

Acompanhar os processos que são executados na instância. Geralmente, esta opção é mais completa do que utilizar o “show processlist”, já que você consegue atribuir critérios para filtrar a sua busca:

É possível obter a lista de objetos de toda uma base, seja uma tabela, view, ou um procedimento armazenado.

Com a user_statistcs, podemos obter diversas informações sobre a “saúde” da instância, se tornando uma ótima opção para analises. Segue um exemplo de retorno:

Esta tabela ainda não esta disponível no MySQL, porém em um dos seus principais fork’s que é o Percona Server, é possível consultar estas informações. Como por exemplo, identificar o cliente que mais recebe ou envia bytes pela rede, que efetua selects, efetua update, entre outros.

Para mais informações sobre esta feature, recomendo a leitura do próprio blog do Percona Server.

Através dos comandos show e desc, também podemos obter os metadados de uma forma mais fácil no MySQL. Claro que consultando diretamente na information_schema teremos maiores informações, porém muitas vezes o show e o desc são suficientes para o momento.

Segue algumas instruções show suportadas:

– show databases: Lista o nome das bases disponíveis
– show tables: Lista as tabelas do banco atual
– show tables from nomedabase: Lista as tabelas do banco especificado na consulta, sem precisar de um use.
– show columns from table_name ou desc table_name: Exibe a estrutura da coluna para aquela tabela (Também explicado neste post)
– show index from table_name: Exibe as informações sobre os indices e a coluna indexada na tabela
– show create table: Exibe o esqueleto da tabela, a forma da qual ela foi criada.

Existe também o cliente mysqlshow, que pode ser utilizada no shell para retornar a lista das bases de dados disponíveis. Exemplo:

A information_schema contém diversas outras tabelas para consulta sobre particionamento, engines entre outros. Recomendo também a leitura na doc do MySQL referente a este assunto.

Neste post, além de falar sobre as views, também disponibilizei a maneira para identificar ela em alguma base e em seguida, obter o código gerado.

Referencias:

https://dev.mysql.com/doc/refman/5.1/en/tables-table.html
http://www.cooperati.com.br/2012/10/29/mysql-utilizando-os-metadados-do-information_schema/

É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 🙂

Jose Wilson

Deixe uma resposta