Pratical Mysql for Web Applications

Vou aproveitar a vinda ao Mysql Conference 2008 para fazer a minha estréia no Blog!

Hoje assisti uma Palestra interessante do Domas Mituzas sobre db design para performance de web applications.

Ele começou dizendo que o mundo web é um mundo diferente do transacional. Nao estamos falando de OLTP e sim OLWP (online web processing).
A web demanda muito mais do ambiente : need data now !! Em relacao ao acesso de dados: menos escrita (em geral inserts) e muitas leituras ( ordered data, range scan, pages)

Aqui vão algumas dicas de como obter melhor performance no Mysql para web applications:

ordering:
- file sorts sao ruins !! procure evitar usando as dicas abaixo …

indexing:
- crie índices para cada query
- use índices compostos
- crie índices para varchar(255) se este for usado no sort

innodb:
- criar indices compostos melhora o tempo de leitura
(para evitar file sorts (neste caso com order by), colocar a coluna do sort no índice pode ajudar
sim, isso aumenta tempo de escrita mas como na web o tempo de leitura é importante, pode valer a pena o sacrifício

query cache:
- não funciona pra grandes aplicações com muitas alteraçoes
- funciona para queries uniformes que não mudam muito

Counts:
-cuidado com counts , é melhor manter o dado calculado

Blobs:
- manter fora da logica da query de pesquisa, apenas fazer o display
- ou seja, leia os blobs em uma segunda query

Paginação:
- bom uso: WHERE id>xxx LIMIT

Character set:
- se possível usar latin 1 (ou outro 8bit charset)
- cuidado com utf8, filesorts ficam mais caros!

Persistent conections:
- “persistent = bad” !!!! (PASMEM, isso tava no slide dele !! vc deve estar se perguntando o que fazer com os pools de conexão, pois é, eu também! - vale a pena testar em nosso ambiente)
“connect is cheap , connection is not” (diferente do Oracle, onde o custo de abrir uma conexão é alto)
o respaldo para o comentário é que as aplicações não usam todas as conexoes e isso gera desperdício de recursos. E como abrir conexões em tese é barato … não precisaria de pool

Bem, essas foram as principais recomendações.

Vale a pena dar uma passada no site do Domas Mituzas: http://dammit.lt/

2 Responses to “Pratical Mysql for Web Applications”

  1. Gustavo Says:

    muito bom camila! estreou no blog com um excelente post! vamos tentar aplicar essas dicas no projeto do novo portal.

  2. Antonio Carlos Silveira Says:

    Muito bom mesmo camila, bom post :-)

Leave a Reply