InnoDB의 옵션의 개요
InnoDB의 메모리 관련 옵션
- Innodb_buffer_pool_size
가장 중요한 옵션
데이블의 데이터와 인덱스를 캐싱하기 위해서 사용
사이즈가 클수록 성능이 향상됨
OS Cache보다 훨씬 효율적으로 메모리를 사용하며 Write성능에 큰 영향을 미침
서버메모리 용량의 70~80%정도로 설정하는 것이 적당
기본값은 8MB이며 반드시 재설정 필요
- Innodb_additional_mem_pool
DataDictionary(테이블 스키마 등)를 저장하기 위해서 사용. 필요한 경우 자동으로 증가
InnoDB의 로그 관련 옵션
- Innodb_log_file_size
InnoDB redo로그 파일 크기
Write 성능에 매우 큰 영향을 미침
설정 파일 크기에 따라 복구 시간이 증가될수 있어서 256M 사용권장
- Innodb_log_files_in_group
로그 그룹안에 포함될 로그 파일 수
기본적으로 2이며 3을 권장함
- Innodb_log_buffer_size
매우 큰 BLOB를 사용하지 않는한 2-8M의 기본값 사용
InnoDB log flush 주기 조절
- Innodb_flush_log_at_trx_commit(기본값은1)
0으로 설정하면 1초에 한번씩 디스크에 기록하고 씽크 - MySQL,시스템다운시 1시간 데이터 누락가능성 있음
1로 설정하면 commit시 디스크에 기록하고 씽크 - 어떤 다운시에도 데이터 유지
2로 설정하면 commit를 할때마다 디스크에 기록하고 싱크는 1초에 한번만함 - 시스템 다운시 1초간 데이터 누락
InnoDB의 로그 사이즈 재조정
- 일반적인 옵션처럼 수치만 변경해서 조절할 수 없음
MySQL종료
Data 디렉터리 안의 ib_log* 파일 삭제
설정의 innodgb_log_file_size 수정
MySQL 재시작
InnoDB의 flush 방법 설정
- InnoDB가 OS의 FileSystem과 연동하는 방식 설정
- 윈도우에서는 unbufferedIO가 늘 사용됨
- UNIX에서는 fsync(), O_SYNC/O_DSYNC를 파일 flush를 위해 사용가능
- 리눅스에서는 O_DIRECT를 사용하여 unbufferedIO를 사용할 수 있다 (double buffering을 막아줌)
InnoDB의 테이블 별 테이블 스페이스
- Innodb_file_per_table 옵션이 설정 가능
- 테이블 별로 테이블스페이스를 설정함
- 테이블 별로 설정해도 공통 테이블스페이스는 필요함
- 분리시 데이터를 여러개의 디스크로 분산 가능
- 테이블을 drop하면 디스크의 공간이 반환됨
- 테이블이 많을 경우 MySQL기동/종료시 속도가 빨라짐
그 밖의 InnoDB의 옵션들
- Innodb_thread_concurrency : 기본값은 8, 동시 사용 쓰레드수로 변경하지 않음
- FOREIGN_KEY_CHECKS/UNIQUE_CHECKS
데이터를 입력시 Foreign키와 Unique를 검사하지 않음
대용량 데이터 입력시 사용함(AUTOCOMMIT을 0으로 하는것도 추천)
- innodb_fast_shutdown
종료시 내무 메모리 구조 정리 작업과 버퍼 정리 작업을 건너뜀. 무결성에는 영향없음
ㅇㄹㅇ
댓글 없음:
댓글 쓰기