2018년 2월 4일 일요일

Mysql InnoDB 관련 설정

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_pool_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)에 저장된다는 것이다.


댓글 없음:

댓글 쓰기

Creating CRC32 Hex string

public String getCRC32HexaString(String paramString) throws Exception  {   byte bytes[] = paramString.getBytes(DEFAULT_CHARSET);   Che...