Escalando o Mysql para escritas concorrentes
Seguem algumas dicas do Dathan Pattishall da Flickr… enjoy it
–>spread data around: federate users por shards: eles fazem um hash pelo user id para o cluster id
–>innodb não funciona com pks grandes (baseadas em strings): eles tinham uma pk que era uma url (string) e a converteram para um 64-bit number(ID) usando a função conv(substr(md5(url),0,16),16,10)
–>innodb & strings: indexar uma string em innodb ocupa muito espaço, além disso a fragmentação nas páginas prejudica a performance. A solução foi “bufferizar” as escritas - eles usam um deamon java que faz o buffer de até 4000 mensagens (transações) e as aplica serialmente usando uma única thread
–>reduza o uso de grandes strings: coloque dados históricos ou não produção em MyIsam . A vantagem é que o Myisam mantem os dados usando 1/6 do tamanho do innodb.
Dê uma olhada no Blog do Dathan Pattishall : http://mysqldba.blogspot.com/