Superkkt Blog

MySQL에서 innodb를 사용할 때 상당히 많은 개수의 row를 한꺼번에 삭제하거나 변경하려고 할때 아래와 같은 에러 메세지가 나오는 경우가 있다.

ERROR 1206 (HY000): The total number of locks exceeds the lock table size

구글에서 찾아보니 innodb의 row locking 과정에서 메모리가 부족해서 발생하는 문제점인것 같은데 해결 방법은 다음과 같다.

1. LIMIT를 사용해서 한번의 작업량을 줄인다.
mysql> update harvest set status='NEW' where status!='NEW' limit 5000000;

2. buffer 크기를 늘려준다.
[mysqld]
set-variable=innodb_buffer_pool_size=256M


그런데 위 2번을 적용하고 MySQL을 시작하려고 하면 fail이 나와서 1번 방법으로 해결했다. update하고 affected rows가 0이 아니면 또 update하고.. 0이 될때까지 반복~
2009/05/19 13:58 2009/05/19 13:58

trackbacks

trackbacks rss

이 글에는 트랙백을 보낼 수 없습니다

Leave a Comment