| variables | value | 설명 |
|---|---|---|
| innodb_buffer_pool_size | 1GB (default) → 증가 | 클 수록 쿼리 실행 시간 단축 (OS RAM의 80%) |
| innodb_log_file_size | 134MB (default) → 증가 | 클 수록 쿼리 실행 시간 단축 (OS RAM의 80%) |
| innodb_log_buffer_size | 8MB (default) → 유지 또는 128MB 로 증가 | large transaction을 수행할 때 필요 |
| innodb_flush_method | O_DIRECT (default) → 유지 | [ fdatasync ] DB -> OS캐시 -> DataFile [ O_DIRECT ] DB -> DataFile innodb_buffer_pool 설정으로, OS캐시를 사용하지 않아도 때문에(중복 저장으로 인한 메모리 낭비) O_DIRECT로 사용 |
| innodb_flush_log_at_trx_commit | 1 (default) → 유지 | 1은 트랜잭션 즉시 처리 0은 트랜잭션을 모아 1초 간격으로 처리 |
| key_buffer_size | 16MB (default) → 유지 | 메모리에 있는 인덱스 블록에서 사용되는 버퍼의 크기 |
| value | 설명 | |
|---|---|---|
| join_buffer_size | 262KB | join 쿼리에서 사용하는 버퍼 크기 |
| optimizer_switch | 최적화 관련 여러 옵션들이 있음 (index, join 등) |
| value | 설명 | |
|---|---|---|
| have_query_cache | NO | |
| query_cache_size | thread_cache_size | |
| query_cache_type | ||
| thread_cache_size | 9 |

인덱스 설정 기준
인덱스 스캔 종류
1. range
- B-Tree 수직 탐색 후 leaf node level에서 필요한 범위까지 탐색 (leaf는 Linked list로 연결되어 있음)

- 범위 조건 설정 시 (<, >, BETWEEN, IS NULL, IS NOT NULL 등) range scan 수행
SELECT * FROM table1 WHERE table1_id > 1;

SELECT COUNT(*) FROM table1;

SELECT * FROM table1 WHERE table1_id = 25;
Hint
USE 키워드 : 특정 인덱스를 사용하도록 권장IGNORE 키워드 : 특정 인덱스를 사용하지 않도록 지정FORCE 키워드 : USE 키워드와 동일한 기능을 하지만, 옵티마이저에게 보다 강하게 해당 인덱스를 사용하도록 권장USE INDEX FOR JOIN : JOIN 키워드는 테이블간 조인뿐 아니라 레코드 검색하는 용도까지 포함USE INDEX FOR ORDER BY : 명시된 인덱스를 ORDER BY 용도로만 사용하도록 제한USE INDEX FOR GROUP BY : 명시된 인덱스를 GROUP BY 용도로만 사용하도록 제한SELECT *
FROM TABLE1
USE INDEX (COL1_INDEX, COL2_INDEX)
WHERE COL1=1 AND COL2=2 AND COL3=3;
SELECT *
FROM TABLE2
IGNORE INDEX (COL1_INDEX)
WHERE COL1=1 AND COL2=2 AND COL3=3;
SELECT *
FROM TABLE3
USE INDEX (COL1_INDEX)
IGNORE INDEX (COL2_INDEX) FOR ORDER BY
IGNORE INDEX (COL3_INDEX) FOR GROUP BY
WHERE COL1=1 AND COL2=2 AND COL3=3;
악성 쿼리 수정