Desempenho errático do InnoDB

3

Estou fazendo alguns testes com uma tabela InnoDB muito simples (chamada Test) com a seguinte estrutura:

Id int(10) unsigned NOT NULL AUTO_INCREMENT
UserId int(10) NOT NULL
Body varchar(512) COLLATE utf8_unicode_ci NOT NULL
CreatedAt datetime NOT NULL

um índice adicional no UserId:

KEY Idx_Test_UserId (UserId) USING BTREE

Quando tento executar esta consulta ...

INSERT INTO Comments (UserId,Body,CreatedAt) VALUES (1,'This is a test',NOW())

... às vezes eu termino a operação em alguns milissegundos, mas outras vezes demora cerca de um segundo.

Eu tenho o mesmo problema com uma instrução SELECT simples:

SELECT Body FROM Comments WHERE UserId=1

Eu sou a única pessoa que faz os testes nesta tabela específica, eu realmente não entendo que eu tenha essas diferenças de tempo de execução.

Última observação, quando estou fazendo os mesmos testes com uma tabela MyISAM, não tenho problemas.

    
por user257938 13.08.2011 / 22:35

1 resposta

0

Para o InnoDB, a variável "auto_increment" deve estar em um índice (primeiro ou sozinho) para evitar alguns problemas de bloqueio. Isso não acontece com o MyISAM, pelo que entendi.

A propósito, por que o "Id" não é a chave primária? Não que seja necessário, mas apenas "parece" que deveria ser para esta tabela.

    
por 06.03.2013 / 22:44

Tags