PHPMG 1 – Vídeo da palestra do Wagner Bianchi: Performance e tuning de MySQL

Posted by admin | Banco de dados | terça-feira 23 fevereiro 2010 21:46

Confira os vídeos da palestra do Wagner Bianchi (Belo Horizonte/MG): Performance e tuning de MySQL:

Parte 1:

(mais…)

MySQL – InnoDB e MyISAM

Posted by admin | Banco de dados | terça-feira 19 maio 2009 8:28

MyISAM

- Foi implementado a partir do código da tabela ISAM., introduzindo diversas melhorias como:
- Os arquivos de tabela são transportáveis entre diferentes sistemas operacionais;
- Campos BLOB e TEXT podem ser indexados;
- Os Arquivos índices e de dados podem ser armazenados em dispositivos diferentes (aumento de performance);
- Algoritmos de distribuição de dados e gerenciamento de índices melhorados;

InnoDB

- Rodam sob um engine, desenvolvido pelo Innobase( www.innodb.com), que acrescenta ao MySQL o suporte a
TRANSAÇÕES e a CONSTRAINTS de chave estrangeira.
- Para obter o máximo de performance com tabelas InnoDB é necessário configurar o arquivo my.conf( ou my.ini no
Windows) de acordo com as características de hardware do servidor onde o MySQL está rodando. Os Detalhes dessa configuração podem ser obtidos no manual do InnoDB.

Convertendo Tabelas MyISAM para InnoDB

O InnoDB não tem uma otimização especial para criação de índices separados. Assim não há custo para exportar e importar a tabela e criar índices posteriormente. O modo mais rápido de se alterar uma tabela para InnoDB é fazer as inserções diretamente em uma tabela InnoDB, isto é, use ALTER TABLE ... TYPE=INNODB, ou crie uma tabela InnoDB vazia com definições idênticas e insira os registro com INSERT INTO ... SELECT * FROM ....

Para obter um melhor controle sobre o processo de inserção, pode ser bom inserir grandes tabelas em pedaços:

INSERT INTO newtable SELECT * FROM oldtable WHERE yourkey > something AND yourkey <= somethingelse;

Depois de todos os dados serem inseridos você pode renomear as tabelas.

Durante a canversão de tabelas grandes você deve configurar á área de buffer com um tamanho grande para reduzir a E/S de disco. Não deve ser maior que 80% da memória física. Você deve configurar o arquivo de log do InnoDB grande, assim como o buffer de log.

Certifique-se de que você não irá ocupar todo o tablespace: tabelas InnoDB gasta muito mais espaço que tabelas MyISAM. Se um ALTER TABLE ficar sem espaço, ele irá iniciar um rollback, que pode levar horas se ele estiver no limite de disco. Para inserções, o InnoDB utiliza o buffer de inserção para fundir registros de índices secundários a índices em grupos. Isto economiza muito a E/S de disco. No rollback tal mecanismo não é usado e o rollback pode demorar 30 vezes mais que a inserção.

No caso de um rollback demorado, se você não tiver dados valiosos e seu banco de dados, é melhor que você mate o processo de banco de dados, delete todos os arquivos de dados e de log do InnoDB e todos os arquivos de tabela .frm e inicie o seu trabalho de novo, do que esperar que milhões de E/Ss de disoc de complete.

Você pode encontrar mais informações direto no site do mysql que por sinal tem uma das melhores documentações online.

http://dev.mysql.com/doc/refman/4.1/pt/using-innodb-tables.html

Mysql – Criando usuário e concedendo privilégios

Posted by admin | Banco de dados | domingo 19 abril 2009 15:29

Para criar um usuário no mysql e conceder privilégios para sua tabela, entre como root em seu servidor mysql, crie a tabela que o usuário vai utilizar e execute o comando abaixo …

grant all privileges on nomeDoBanco.* to 'nomeDoUsuario' 

identified by 'senhaDoUsuario' with grant option;

lembre-se de reiniciar seu servidor mysql ....