auto_increment 를 설정하고 데이터베이스에 값을 입력 시에
insert 가 되었을때도 값이 증가,
중복된 키값으로 인하여 insert 가 안됐을 때도 auto_increment 값이 증가하고 있는것을 확인함
이부분을 조치하기위해 추가
https://kkensu.tistory.com/16
https://stuffdrawers.tistory.com/11
1. innodb_autoinc_lock_mode=0
- Auto-increment lock이 테이블 레벨로 동작
- Insert into로 실제 삽입된 경우가 아닌 업데이트 경우에는 해당 테이블의 Auto-increment 값을 증가시키지 않는 옵션
2. innodb_autoinc_lock_mode=1
- 단순한 insert에 대해서는 lock을 걸지 않고, INSERT 되는 레코드 건수를 정확히 예측할 수 있을 때 사용해야 함
- latch(mutex)를 이용하여 처리함
3. innodb_autoinc_lock_mode=2
- Auto-increment lock을 사용하지 않고, 항상 latch(mutex)를 사용함
- 대량의 INSERT 실행 도중 다른 커넥션에서 INSERT를 수행할 수 있어. 동시 처리 성능이 높음.
- 그러나 복제를 사용하는 경우 마스터와 슬레이브의 자동 증가 값이 달라질 가능성이 있으니 사용 시 주의가 필요
결과적으로 문제를 해결하기 위해서 innodb_autoinc_lock_mode 값을 기본값이 아닌 0으로 설정하여 사용해야 함
이 경우, Concurrent insert가 매우 빈번히 발생할 경우 Auto-increment lock이 병목이 될 가능성이 있으니 주의해야 함
SET global innodb_autoinc_lock_mode = 0;
커맨드 상에서 위와 같이 입력했을 때 Variable 'innodb_autoinc_lock_mode' is a read only variable 와 같은 에러가 나올 수 있다.
이때는 /etc/mysql/mysql.conf.d/mysql.cnf 파일을 열어서 innodb_autoinc_lock_mode = 0 이라고 추가해 준다.
## 리눅스
mysql.cnf
또는
my.cnf
## 윈도우
C:₩ProgramData₩MySQL₩MySQL Server 5.7₩my.ini
제일 마지막 줄에 추가
=================================================================================================================
innodb_autoinc_lock_mode = 0
=================================================================================================================
insert into parsing_data
(stock_code , parsing_date)
values (‘1’,’1’);