2024/12 10

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

mysql 매트릭 값 분석

Connection 부분 지표Connected Threads현재 MySQL 서버에 연결된 총 클라이언트 스레드 수쿼리: mysql_global_status_threads_connected모니터링 포인트: 과도한 연결은 서버 부하를 증가시킬 수 있음Running Threads현재 실행 중인 활성 스레드 수쿼리: mysql_global_status_threads_running의미: 실제로 작업을 수행 중인 스레드 수Max Used Connections최대 동시 연결 수쿼리: mysql_global_status_max_used_connections용도: 피크 로드 시 연결 상태 확인Threads Created서버 시작 후 생성된 총 스레드 수쿼리: mysql_global_status_threads_create..

모니터링 2024.12.09

SHOW SLAVE STATUS

1. Master의 binlog 위치 (Master Log Position)Master 서버에서 실행되는 binlog 파일에 모든 데이터 변경 (예: INSERT, UPDATE, DELETE 쿼리) 정보가 기록됩니다. 복제를 설정할 때, Slave 서버는 이 binlog 파일을 읽어와서 동일한 작업을 수행하게 됩니다.Master_Log_File: 현재 Master에서 사용하는 binlog 파일 이름Read_Master_Log_Pos: Slave가 읽고 있는 Master binlog 파일 내 위치 (바이트 단위)2. Relay 로그 위치 (Relay Log Position)Slave 서버에서는 Relay 로그라는 파일에 Master에서 전달된 binlog 이벤트를 저장하고, 이를 기반으로 SQL 스레드가 ..

Mysql & Maria/admin 2024.12.03

replication 깨진 후 bin log 복구

slave 가 깨지고나서 bin log를 이용해서 복구하는 방법 1. slave 깨짐 확인 - 1032 error 발생 : 키 없음 오류  2. slave 복제 중지 및 master binlog 확인2.1  [slave server] stop slavemysql> stop slave; Query OK, 0 rows affected (0.00 sec)  2.2  [master server] mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | ..

Mysql & Maria/admin 2024.12.03