미스터 역마살

[Mysql 에러] THE TOTAL NUMBER OF LOCKS EXCEEDS THE LOCK TABLE SIZE 본문

Database/MYSQL

[Mysql 에러] THE TOTAL NUMBER OF LOCKS EXCEEDS THE LOCK TABLE SIZE

Mr. YeokMaSsal 2022. 7. 31. 12:44
728x90
반응형

에러가 나는 이유

THE TOTAL NUMBER OF LOCKS EXCEEDS THE LOCK TABLE SIZE 에러 발생할때 이유는 아래와 같다.

MySQL은 저 문장이 들어오면 일단 select 결과를 모두 메모리로 가져온다. 그 메모리가 buffer 다.

이걸 조정하는 게 buffer_size 옵션이다. 그런데, 가지고 올 데이터량이 많아서 buffer_size를 넘어간다면? MySQL 은 Temp_Table이 완성되기 전에 You_Table 이 변경되면 안되니까, You_Table 에다가 lock을 걸어버린다. 즉, 그동안 다른 트랜잭션이 데이터를 변경할 수 없다는 소리다. 그래서 이런 에러가 생긴다.

 

해결방안

innodb_buffer_pool_size의 기본값이 8,388,608이라는데 이것은 byte 값이다.

innodb_buffer_pool_size=64MB 이런식으로 변경해 주면 된다고 한다.

innodb_buffer_pool_size=64M

 

참고 사이트 : https://avaiable.tistory.com/52#:~:text=0%20%EB%A9%94%EB%89%B4%20%EB%8D%94%EB%B3%B4%EA%B8%B0-,%5Bmysql%20%EC%97%90%EB%9F%AC%5D%20THE%20TOTAL%20NUMBER%20OF%20LOCKS,EXCEEDS%20THE%20LOCK%20TABLE%20SIZE&text=%ED%95%B4%EA%B2%B0%EC%B1%85%EC%9D%80%20mysql%EC%9D%98%20%EC%84%A4%EC%A0%95,%EA%B0%92%EC%9D%84%20%EB%8A%98%EB%A0%A4%EC%A3%BC%EB%8A%94%20%EA%B2%83%EC%9D%B4%EB%8B%A4

 

 

 

 

728x90
Comments