전체 글 96

Vaccum

VACUUM은 dead tuple 을 정리하고, 디스크 공간을 확보하며, 테이블 통계 정보를 업데이트합니다.임계치 이상으로 발생한 Dead Tuple을 정리하여 FSM (Free Space Map) 으로 반환Transaction ID Wraparound 방지통계정보 갱신visibility map을 갱신하여 index scan 성능 향상Vacuum 종류 PostgreSQL에는 여러 종류의 VACUUM이 있으며, 각각의 목적과 사용 사례가 다릅니다.VACUUM목적: 데드 튜플을 정리하고, 디스크 공간을 재사용 가능하게 만듭니다.특징: 테이블에 대한 잠금이 적고, 디스크 공간을 운영 체제에 반환하지 않습니다.VACUUM 테이블명;VACUUM FULL목적: 데드 튜플을 완전히 제거하고, 디스크 공간을 운영 체제..

Postgresql 2025.01.11

maria, mysql swap 사용

maria나 mysql  swap 사용률이 높을 경우 확인해야할 항목 정리  1. vm.swappiness 확인 - 해당 항목은 보통 1 로 설정함 스왑 활용도, 스와핑 활용도, 스와피니스리눅스 커널 속성 중 하나스왑메모리 활용 수준 조절스왑 사용의 적극성 수준값의 범위: 0 ~ 100 (기본값: 60)값                  설명------------------  -------------------- vm.swappiness = 0   스왑 사용안함[1]vm.swappiness = 1   스왑 사용 최소화vm.swappiness = 60  기본값vm.swappiness = 100 적극적으로 스왑 사용→ 메모리 여유가 충분할 때 성능향상을 위해 vm.swappiness = 10 정도를 권고하는 ..

Mysql & Maria/admin 2025.01.09

Innodb_buffer_pool 관련 튜닝사항

MySQL & Maria DB Innodb_buffer_pool 사용량은 성능에 중요한 Point가 된다. 사용량이 높게되면 Disk I/O가 발생하게 되고 성능이 떨어지게된다.Innodb_buffer_pool_size는 DOCS에서는 physical memory의 80%로 하는것을 말하고 있다.  버퍼 사용량사용량(%) = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100100% : 메모리가 가득 차 있으며 추가적인 읽기/쓰기 작업이 디스크에 의존하게 되어 성능 저하를 초래할 가능성이 높습니다이 값이 100%라면?Buffer Pool이 데이터로 완전히 채워졌으며 더 이상 추가 데이터를 캐시할 여유가 없음.신규 데이터를 캐싱하려면 ..

Mysql & Maria/admin 2024.12.31

슬로우쿼리 모니터링

슬로우 쿼리가 발생하면 로그 남기기postgresql.conf 에 설정값 추가## 5초이상 기록 (ms 단위 )log_min_duration_statement = 5000## 특정 데이터베이스, 특정 유저 권한에서 발생한 슬로우쿼리 모니터링ALTER DATABASE test SET log_min_duration_statement = 5000;설정 후 config reloadSELECT pg_reload_conf(); 쿼리와 실행계획 로그에 남기기## 1. postgresql.conf에 auto_explain 라이브러리를 추가session_preload_libraries = 'auto_explain';## 2. 라이브러리 로드 후 설정 LOAD 'auto_explain';SET auto_explain.lo..

Postgresql 2024.12.26

Visibility Map(가시성 맵)

PostgreSQL의 **Visibility Map(VM)**은 테이블의 힙 페이지에서 삭제되지 않은 모든 튜플(행)이 가시 상태인지를 추적하기 위한 특수한 데이터 구조입니다.가시 상태란?PostgreSQL은 MVCC 방식을 사용하여 트랜잭션의 격리성과 동시성을 제공합니다.특정 튜플(행)이 트랜잭션의 관점에서 유효하게 보이는지를 의미합니다.각 튜플은 다음 정보를 포함합니다:xmin: 튜플을 삽입한 트랜잭션 ID.xmax: 튜플을 삭제하거나 갱신한 트랜잭션 ID.튜플의 가시 여부 결정:현재 트랜잭션이 튜플의 xmin보다 늦게 시작했는지 확인.튜플이 삭제되지 않았거나(xmax가 NULL), 현재 트랜잭션에서 해당 삭제를 아직 커밋하지 않았는지 확인.Visibility Map의 구조각 테이블은 별도의 VM 파..

Postgresql 2024.12.17

쿼리성능 분석 툴 pg_stat_statements

pg_stat_statements는 PostgreSQL의 확장 모듈로, SQL 쿼리 실행 통계를 수집하고 조회할 수 있도록 합니다.주요 기능쿼리 성능 분석:실행된 쿼리의 호출 횟수, 평균 실행 시간, 총 시간 등 다양한 성능 통계를 제공합니다.리소스 사용 모니터링:CPU 사용량, I/O 횟수 등을 추적하여 리소스 소비가 많은 쿼리를 식별합니다.튜닝 도구:성능 저하를 유발하는 쿼리를 최적화하는 데 도움을 줍니다.설치CREATE EXTENSION pg_stat_statements;shared_preload_libraries = 'pg_stat_statements' -- postgresql.conf 재시작 필요 위 처럼 db에서 활성화 해주면 되고 db마다 활성화가 필요하기 때문에 template1 에다 설치..

Postgresql 2024.12.17

Performance Schema

MySQL의 Performance Schema는 데이터베이스 서버의 성능을 모니터링하고 분석하는 데 사용되는 도구입니다. Performance Schema는 서버의 동작에 대한 세부적인 정보를 수집하고,이를 기반으로 성능 문제를 진단하거나 최적화를 수행할 수 있게 도와줍니다. Instrument & Consumer더보기1. Instrument정의: "Instrument"는 MySQL 서버에서 발생하는 다양한 이벤트를 추적하기 위한 추적 도구입니다. 각 이벤트 유형(예: 쿼리 실행, I/O 작업, 대기 이벤트 등)에 대해 세부 정보를 수집하기 위해 성능 스키마에서 사용됩니다.용도: Instrument는 MySQL의 다양한 작업을 모니터링하고, 이러한 작업에 대한 성능 데이터를 수집하는 데 사용됩니다.주요 ..

Mysql & Maria/admin 2024.12.13

PostgreSQL 15.8 시스템 변수 최적화

시스템 변수 확인SELECT name, context , unit , setting , boot_val , reset_valFROM pg_settingsWHERE name in ('shared_buffers','work_mem','maintenance_work_mem')ORDER BY context,name; 컬럼명설명예시namePostgreSQL 설정 변수의 이름.listen_addresses, work_memcontext설정 변경 시 적용 범위를 나타냄.postmaster: PostgreSQL 서버 재시작 필요.sighup: 설정 파일 재로드로 적용 가능.user: 현재 세션에서 즉시 변경 가능.unit설정 값의 단위를 나타냄.kB, MB, ms, N/Asetting현재 PostgreSQL에서 적용 ..

Postgresql 2024.12.11