A exclusão de linhas do MySQL causa um erro na tabela de bloqueio

4

Eu tive algumas linhas para excluir, mas elas não podem ser excluídas de uma vez sem esse erro

ERRO 1206 (HY000): o número total de bloqueios excede o tamanho da tabela de bloqueio

Então eu escrevi um script para excluir 100.000 linhas 10.000 de cada vez. Ele correu uma vez, mas quando eu corri uma segunda vez eu recebo o erro na primeira tentativa de excluir 10.000.

A maneira como estou tentando excluir as 10.000 linhas é usar uma instrução de exclusão que se refere a todos os 2 milhões de linhas, mas uso uma cláusula de limite para afetar apenas 10.000.

Eu tentei adicionar uma "tabela de desbloqueio"; declaração para o script antes da primeira exclusão, mas isso não ajuda. Eu ainda recebo o erro da tabela de bloqueio na primeira exclusão.

Alguma idéia de como posso fazer isso?

Existe uma maneira que eu possa dizer para não bloquear registros? Posso ter certeza de que nada mais está acessando a tabela.

    
por Dave L 13.08.2011 / 18:30

1 resposta

1

É o mecanismo de armazenamento InnoDB?

Esse erro significa que o MySQL não tem espaço suficiente para armazenar todas as linhas de bloqueio necessárias para executar sua consulta. Dependendo da RAM que você tem, defina innodb_buffer_pool_size como um valor razoável (256MB, 512MB), você provavelmente nunca encontrará esse erro.

Verifique o valor padrão com mysql> show global variables like 'innodb_buffer%'; .

    
por 14.08.2011 / 12:59