MySQL INSERT DELAYED
Posted by André Ribeiro Camargo Tue, 08 Jun 2010 10:30:00 GMT
Uso MySQL na aplicação dos shoppings com storage InnoDB. Funciona muito bem.
Mas ultimamente notei um gargalo de performance no banco quando tenho alguns INSERTs concorrentes na tabela de acessos (tipo uns 9). SHOW PROCESSLIST no console do mysql não mostrava outra coisa que não fosse COMMIT na informação das threads. E as requisições acabam ultrapassando a minha meta de consumir, no máximo, 1 segundo.
Pesquisei um pouco a respeito de como otimizar isso e descobri o INSERT DELAYED, vamos tentar…
Primeiro mexi no banco, ALTER TABLE nome_da_tabela ENGINE=MYISAM; para converter a tabela de InnoDB para MYISAM.
Depois alterei a aplicação, copiando o método ActiveRecord::Base#create para meu model e renomeando-o para create_without_callbacks (eu uso before_create para setar alguns atributos e queria manter os callbacks funcionando)
E para ver se funcionou, no console do MySQL rode SHOW STATUS LIKE ‘delay’; e leia aqui o significado de cada variável
Estou ansioso para comparar os logs de produção :-)
