미스터 역마살
[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:44728x90
반응형
에러가 나는 이유
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
728x90
'Database > MYSQL' 카테고리의 다른 글
[Mysql 에러] Truncated incorrect INTEGER value : 'AWS' (0) | 2022.07.31 |
---|---|
[Mysql 에러] This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable) (0) | 2022.07.31 |
캐릭터 셋 바꾸는 방법 (0) | 2022.07.31 |
SHOW PROCESSLIST (0) | 2022.07.30 |
Mysql Server parameter (0) | 2022.07.30 |
Comments