O título deste artigo é bastante sugestivo do ponto de vista de performance em bancos de dados. Geralmente, independente do tipo de particionamento, horizontal ou vertical, ele servirá para eliminar overheads em operações adicionais na escrita e/ou recuperação de dados. Com o InnoDB Buffer Pool, a partir da versão 5.5 não é diferente, pois, poderemos […]
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
Começarei definindo o relacionamento de Muitos para Muitos MySQL
(Experts podem pular para o próximo parágrafo).
O que é um relacionamento de Muitos para Muitos MySQL
Um relacionamento de Muitos para Muitos MySQL é um relacionamento
que é multi-valorizado em ambas as direções.
Esse tipo de relacionamento é auxiliado pelo uso de uma tabela de ligação. Por exemplo, uma Pergunta (Question) pode ter mais de uma Categoria (Categorie), e uma Categoria pode ter mais de uma Pergunta.
CREATE TABLE link ([Leia mais]
Question_id int unsigned NOT NULL,
Category varchar(20),
PRIMARY KEY (`Question_id `,` Category`),
KEY `category_question` (`Category`,`Question_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
+-------------+---------------+
| Question_id | Category |
+-------------+---------------+
| 1 | Animals |
| 1 | …
Essa semana tive um problema grave em um cliente que precisava escalar o números de conexões simultâneas no MySQL de forma que estas conexões superassem o número de 2000. Vários problemas foram analisados, desde pontos básicos como configurações do próprio servidor de bancos de dados MySQL como alguns pontos relacionados ao Kernel. Somente para situar o leitor […]
Essa semana precisei implementar uma solução de combo dinâmico de Estado / Cidade que carregasse as opções das cidades de acordo com a escolha do estado. Obviamente teria que usar Ajax (JQuery) e o Json (JavaScript Object Notation) que é um formato leve de troca de dados (fonte: http://www.json.org/).
Fiz uma pesquisa rápida na NET e de cara encontrei um excelente artigo de Davi Ferreira: “Populando selects de cidades e estados com AJAX (PHP e jQuery)” (http://www.daviferreira.com/posts/populando-selects-de-cidades-e-estados-com-ajax-php-e-jquery). No entanto para o meu caso a solução do Davi teria que ser reinventada tendo em vista que no meu form haviam 3 conjuntos de Estado/Cidade. Um para os dados de endereço do usuário e outros dois para os dados profissionais. Uma opção seria repetir o código 3 …
[Leia mais]A Percona anunciou uma liberação de acesso antecipado, de um plugin PAM de autenticação para MySQL. Ao contrário do plug-in Monty Program também anunciado ontem, que aparentemente só suporta MariaDB, o plugin Percona suporta MySQL 5.5.x, Percona Server 5.2.x. e MariaDB 5.2.x.
O plugin de autenticação PAM Percona, é capaz de autenticar utilizando o usuário do sistema operacional (pam_unix), do servidor LDAP (pam_ldap), servidor RSA SecurID ou outros métodos de autenticação acessíveis. Dessa maneira, a Percona diz que está considerando o plugin de "acesso rápido": ele não tem o conjunto completo de recursos, mas é, no entanto, funcional. A versão atual do plugin exige que os usuários sejam criados dentro do MySQL, mesmo quando autenticado por PAM. A Percona diz que esta restrição será removida na versão final.
Com informações de …
[Leia mais]Muito se tem comentado e discutido sobre a utilização do InnoDB desde que a Oracle colocou no mercado e versão 5.5 do MySQL com o InnoDB Plugin, agora sendo este o Storage Engine padrão do MySQL.
Antes disso, talvez fosse mais cômodo criar somente um banco de dados e um muitas tabelas e iniciar os projetos. Agora será necessário entender bem como funcionam algumas estruturas do InnoDB, já que as tabelas que você criava antes agora serão controladas por um motor mais robusto, com integridade referencial, logs para suporte à transação, níveis de isolamento e muitos outros recursos que coloca o MySQL como uma opção robusta para ambientes de missão crítica.
Vou tratar de explicar neste artigo somente o funcionamento do Buffer Pool, área de memória criada e controlada pelo InnoDB, onde são armazenados dados e índices de tabelas.
Os exemplos deste artigo contam com uma instalação completamente nova do …
[Leia mais]Um dos pontos mais críticos para o workload do MySQL é a criação contínua de threads e sabendo-se que a cada conexão que uma aplicação ou um cliente qualquer realiza com o MySQL, uma nova *thread* é criada – imaginem um servidor com essa quantidade de requisições: mysql> \s -------------- mysql Ver 14.14 Distrib 5.5.17, [...]
A primeira coisa a se fazer ao se trabalhar com o InnoDB é utilizar as variáveis de status para checar se a configuração atual do Buffer Pool, definida em innodb_buffer_pool_size, satisfaz as necessidades dos bancos de dados atualmente armazenados no MySQL. Como já abordei aqui no blog, em outro post, manter os dados (e índices [...]
Os exemplos deste artigo contam com uma instalação completamente nova do MySQL, na versão 5.5.18, rodando em CentOS 6.0, conforme exibido abaixo: [root@mgm01 ~]# rpm -ivh MySQL-server-5.5.18-1.rhel5.i386.rpm Preparing... ################################# [100%] 1:MySQL-server ################################# [100%] *** PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER *** [...]
O suporte para a prova de conceito Tungsten para MongoDB chegou em maio, quando eu falei
sobre nosso hackathon para replicar o MySQL para o
MongoDB. Esse código ficou inativo por alguns meses enquanto
a gente trabalhou em outras coisas como a replicação paralela,
mas o período de ociosidade acabou. Em setembro, eu verifiquei as
correções feitas ao Tungsten Replicator para adicionar o suporte de instalação em uma linha para MongoDB
slaves.
A replicação do MySQL para MongoDB já é oficialmente suportada pelo Tungsten Replicator 2.0.5. No entanto, aqui está um rápido guia sobre como usar meus lab …
[Leia mais]