DB 5

Percona MySQL 감사로그 설정

8.4 기준컴포넌트 설치(MySQL 클라이언트)-- 컴포넌트 설치INSTALL COMPONENT 'file://component_audit_log_filter';-- 설치 확인SELECT * FROM mysql.component;-- 감사 로그 설정 확인SHOW VARIABLES LIKE 'audit_log%';-- 감사 로그 파일 위치SELECT @@datadir; 설정-- 설치 후에 다음을 실행-- DB 툴에서는 실행되지 않고, MySQL 직접 접근하여 실행해야 함.SOURCE /usr/share/mysql/audit_log_filter_linux_install.sql;-- 다음 내용부터는 DB툴에서 실행 가능SET @filter_json = '{ "filter": { "class": { "na..

DB 2025.12.28

[DB] 풀 인덱스 스캔, 인덱스 전용 스캔(커버링 인덱스)

커버링 인덱스란?쿼리를 구성하는 컬럼이 모두 인덱스 컬럼일 경우, 이때 해당 인덱스를 커버링 인덱스라고 합니다.예시 )-- IDX_TEMP -> id, column1, column2SELECT id, column1, column2FROM TB_TEMP;SELECT id, column1FROM TB_TEMPWHERE id = '1'-- 여기에 인덱스 외에 다른 컬럼을 사용하게 된다면 커버링 인덱스가 아닙니다.-- 이 경우에 EXPLAIN 조회 시, Extra에 Using index가 조회됩니다 풀 인덱스 스캔이란?말 그대로 인덱스 전체를 스캔한다는 의미입니다.풀 테이블 스캔 보다는 부하가 덜하지만, 그래도 인덱스 전체를 스캔하기 때문에 부하가 낮지는 않습니다. 풀 인덱스 스캔이 발생할 수 있는 경우 1..

DB 2025.12.28

Database Table Lock

이번에 작업한 개발 내용 중, 데이터 컨버전이 필요한 부분이 있었는데, 해당 내용 실행 시, 테이블 락이 걸리면서 관련 테이블에 데이터를 쓸 수 없는(Write) 상황이 발생했다.테이블 락이란?트랜잭션이나 명령이 하나의 테이블 전체에 대해 잠금을 거는 행위락이 걸린 동안에는 다른 트랜잭션이 해당 테이블에 대해 읽거나 쓸 수 없다. 구분InnoDBMyISAM기본 락Row-level Lock (행 락)Table-level Lock (테이블 락)락 충돌 가능성낮음높음동시성높음낮음특징트랜잭션 지원트랜잭션 미지원우리는 InnoDB를 사용하기 때문에, InnoDB에서 테이블 락이 발생하는 대표적인 사례를 나열해보자.InnoDB에서 테이블 락이 걸리는 대표적 사례Foreign Key 제약 조건 충돌부모 테이블을 참조..

DB 2025.04.14

[MySQL] 테이블 파티셔닝

테이블 파티셔닝이란?하나의 큰 테이블을 논리적으로 여러 개의 파티션으로 나누어 저장하는 방식대량 데이터 처리에 효과적✅ 장점쿼리 성능 향상 → 파티션 프루닝(Partition Pruning)으로 특정 파티션만 조회데이터 삭제 속도 개선 → DELETE 대신 DROP PARTITION으로 빠르게 삭제INSERT 성능 향상 → 특정 파티션에만 추가테이블 크기 관리 최적화 → 데이터 분산 저장아카이빙 용이 → 특정 파티션을 파일로 저장 후 삭제 가능ℹ️ 파티션 프루닝: 조건에 따라 필요한 파티션만 조회하는 기법 ✅ 단점특정 쿼리에서 성능 저하파티션 키(파티션을 나누는 컬럼)이 조회 조건에 포함되어 있지 않으면 오히려 일반 테이블보다 느려질 수 있음인덱스 관리가 어려움파티션 키 외에 다른 컬럼을 인덱스로 추가..

DB 2025.04.14