본문 바로가기
Linux/Mysql

Mysql InnoDB 설정 (my.cnf)

by 준섭이 2013. 12. 19.
728x90

Mysql InnoDB 설정 (my.cnf)


다음은 MySQL InnoDB 설정 변수 이다. ( vi /etc/my.cnf)

innodb_data_file_path

Data File(Tablespace)의 속성을 정의한다.

[Data file path]파일명:파일크기:autoextend:max:파일최대크기;

파일 구분은 ';'이고 속성 구분은 ':' 이다.


innodb_autoextend_increment

Data File(Tablespace)이 확장될 때 증가되는 Size(MB) (default=8M)


innodb_additional_mem_pool_size

default : 2M

Data Dictionary 정보를 보관하기 위한 Memory Size.


innodb_buffer_pool_size

default : 8M

index 및 raw data Cache 용 Memory Size를 의마하며 Maximum Size는 real Memory의 80%까지 정의 가능하다. 하지만, Memory Paging을 최소화 할 수 있는 Size가 적당하다. 참고로 Oracle의 권고 SGA Size는 real Memory의 50%이다. 32 Bit O/S의 경우 Addressing 특성 상 Maximum 4G이므로 O/S 및 다른 용도의 Memory를 감안하여 이보다 작게 정의해야 한다.


innodb_flush_method

Disk I/O Buffer의 사용 여부

일반적으로 Disk I/O가 발생하면 그 즉시 Disk에 반영되지 않고 Memory에 caching되었다가 일정 Size이상이 되면 그 때 Disk에 Physically 반영되는데, 이러한 과정 없이 즉시로 Disk에 반영 시키는 Option이다.

[O_DIRECT] Cache Write 시 Disk에도 동일하게 반영 시킨다.

[O_DSYNC]


innodb_flush_log_at_trx_commit

Commit 시 Commit Log를 Log File에 어떻게 기록할지를 지정한다.

[0] Log Buffer가 꽉 차거나 Flush Log가 발생할때 Log File에 기록

[1] Commit 이 발생할 때 마다 Log File에 기록

[2] 1초마다 Log File에 기록


innodb_log_file_size

트랜잭션을 기록하는 로그 파일의 크기를 결정하는 옵션으로 로그파일은 무한정 계속 커지는 것이 아니라 일정한 크기와 갯수를 가지고 순환식으로 처리된다.

보통 일반적으로 innodb_buffer_size 의 15% 정도로 설정한다.

만약 메모리가 1GB이면 innodb_buffer_pool_size = 512M 이고, innodb_log_file_size = 80M 이다.


innodb_log_buffer_size

로그 파일을 기록하기 위한 Buffer Size로 Transaction이 작거나 거의 없다면 크게 잡는것은 낭비이다.

보통 1M~8M 사이로 설정.


innodb_log_archive

Log File의 Archive화 여부로 복구 시 log File을 사용하므로 설정할 필요가 없음.


innodb_file_per_table

Table마다 별도의 Data File을 가지게 하는 옵션으로 하나의 Tablespace에는 하나의 Table Data만 저장한다. 단, 단점은 Data와 Index가 동일 Tablespace(Data File)에 저장된다는 것이다.






'Linux > Mysql' 카테고리의 다른 글

mysql dump 및 restore  (0) 2020.06.01
mysql user 생성 및 권한 설정  (0) 2020.06.01
리눅스 mysql 설치  (1) 2016.10.31
mysql 실행 시 -bash: mysql: command not found  (0) 2014.02.07
리눅스 My-SQL cmake 설치  (2) 2013.12.16