DataBase 27

"만화로 보는 오라클 튜닝" 을 통해 배운 Oracle SQL 튜닝

실무에서 SQL 성능 문제를 접할 때마다 인덱스를 추가하거나 실행계획만 확인하곤 했다. 그러나 이번에 "만화로 보는 오라클 튜닝"을 읽으면서, Oracle의 뷰와 실행계획 원리를 활용해 더 체계적으로 접근할 수 있다는 것을 알게 되었다. 책을 통해 정리한 주요 내용은 다음과 같다. 1. Dictionary View로 문제 시점 확인SQL이 언제, 어떤 상황에서 부하를 일으켰는지는 DBA 성능 뷰(Dynamic Performance View) 로 확인할 수 있다.V$SQL, V$SESSION, DBA_HIST_SQLSTAT 등을 이용하면 SQL 실행 횟수, 소요 시간, 블록 I/O를 추적할 수 있다. V$SQL – SQL별 누적 성능 확인SELECT sql_id, executions, ..

DataBase/Oracle 2025.09.29

실무에서 자주 쓰이는 Oracle 주요 기능 정리 (트리거, 프로시저, 패키지, 통계)

Oracle 데이터베이스는 단순한 CRUD뿐 아니라 다양한 고급 기능을 통해 복잡한 비즈니스 로직을 효율적으로 처리할 수 있도록 지원한다. 이번 글에서는 트리거, 저장 프로시저, 패키지, 통계 수집과 같은 Oracle의 핵심 기능들을 정리했다.각각의 개념이 언제, 왜, 어떻게 쓰이는지를 쉽고 간단하게 정리했으니 참고하면 좋을 듯 하다. 1. 트리거(Trigger)테이블에서 INSERT, UPDATE, DELETE 같은 이벤트가 발생했을 때 자동으로 실행되는 저장 코드이다. 활용 예시주문 테이블에 INSERT 발생 시 재고 감소 자동 처리로그인 로그 테이블에 INSERT가 발생하면 알림 기록 추가CREATE OR REPLACE TRIGGER trg_update_stockAFTER INSERT ON ord..

DataBase/Oracle 2025.08.01

PostgreSQL 기동 실패 - pg_log Permission Denied 해결

문제 상황EC2 Ubuntu 18.04에서 PostgreSQL 14를 재시작하려 했으나 서비스가 기동되지 않았다. systemctl status postgresql@14-main 을 통해 확인한 결과, 다음과 같은 에러 로그가 출력되었다.FATAL: could not open log file "pg_log/postgresql-YYYY-MM-DD_HHMMSS.log": Permission denied pg_log 디렉토리에 대한 접근 권한이 없어 PostgreSQL이 로그 파일을 생성하지 못하고 종료되는 상황이었다.(이전에 DB 백업 작업을 하면서 pg_log 폴더에 대한 권한이나 소유자 설정이 바뀐 듯 했다.) 원인 분석PostgreSQL은 postgres 사용자로 실행되며, 로그를 기본적으로 pg..

DataBase/PostgreSQL 2025.07.17

UUID vs Auto-incrementing Key: 어떤 ID 방식을 선택할까?

데이터베이스 설계 시, 테이블의 기본 키(primary key)를 어떻게 구성할지는 시스템의 규모와 보안, 운영 효율성과 관련이깊은 중요한 선택이다. 가장 널리 사용되는 두 가지 방식은 UUID와 Auto-incrementing Key이다. 각각의 특성과 적절한 사용 사례를 비교해보고자 한다. 1. Auto-incrementing Key란?Auto-incrementing Key는 데이터베이스가 자동으로 증가시키는 정수형 ID이다.(예: 1, 2, 3...) 장점짧고 간결한 ID로 URL이나 로그에서 보기 편함연속된 값으로 인덱싱 효율이 높음개발 및 디버깅 시 식별이 쉬움 단점전역 고유성이 보장되지 않음URL 패턴을 통한 열거(enumeration) 공격에 취약함ID를 통해 전체 데이터 구조를 유추할 가능..

DataBase 2025.06.19

Ubuntu 18.04에서 PostgreSQL DB 백업 스케쥴러 구축하기

이 포스팅에서는 PostgreSQL 14.2를 사용하는 Ubuntu 18.04 서버에서 작동 백업 스케쥴러를 구축하는 방법에 대해 설명하려고 한다. 매일 자정마다 pg_dump를 이용해 DB 백업을 수행하고, 백업 파일은 별도의 폴더에 저장하며, 30일이 지난 백업은 자동으로 삭제하도록 구성할 예정이다.  1. 준비 사항운영체제: Ubuntu 18.04PostgreSQL 버전: 14.2백업 도구: pg_dump스케줄러: cron백업 경로: /home/ubuntu/pg_backups (백업 파일은 이 경로 내의 backups 폴더에 저장)또한, 백업 작업을 진행하기 전에 데이터베이스 접속 정보를 정확히 확인하고, 필요한 경우 DBeaver 등을 통해 DB 이름과 사용자 정보를 점검해야 한다.  2. 백업 ..

DataBase 2025.03.22

DB Connection Pool (데이터베이스 연결 풀) 개념

DB Connection Pool은 애플리케이션이 데이터베이스와의 연결(Connection)을 효율적으로 관리하기 위한 기술이다.    1. 왜 Connection Pool이 필요한가?애플리케이션이 데이터베이스와 통신하려면 DB연결이 필요하다. - 매번 새로운 연결을 생성하고 해제하는 것은 성능 저하와 자원 낭비를 초래한다.- 특히, 대량의 요청이 발생하면 연결 생성/해제 오버헤드로 인해 응답속도가 느려지고 시스템 부하가 증가한다. 따라서 Connection Pool을 사용하여 DB 연결을 미리 생성하두고 필요할 때 재사용하여 성능을 향상시킨다.   2. Connection Pool의 동작 방식1. 초기 연결 생성- 애플리케이션이 시작될 떄, 설정된 개수만큼 DB 연결을 생성하여 "풀(Pool)"에 저장..

DataBase 2025.01.25

인덱스의 개념과 성능이 향상되는 이유/유의사항 (With SSMS)

실제 현업에서 몇억 개의 row를 가진 테이블에 적절한 인덱스를 추가했더니, 조회 시간이 수십 초에서 몇 초 이내로 대폭 감소한 경험이 있었다. 이런 현상은 대용량 데이터베이스 성능 최적화의 대표적인 사례로, 인덱스가 어떻게 데이터베이스에서 성능을 향상시키는지 보여준다. 이번 포스팅에서는 인덱스의 개념과 성능이 향상되는 이유를 SQL Server Management Studio(SSMS) Version 16을 중심으로 정리해보고자 한다.  1. 인덱스란?데이터베이스에서 인덱스(Index)는 특정 데이터를 빠르게 찾기 위해 사용되는 구조로, 책의 색인 역할을 한다고 볼 수 있다. 데이터베이스 테이블은 수백만, 수억 개의 데이터를 포함하고 있을 수 있으며, 인덱스는 이러한 대용량 데이터를 효율적으로 조회하는..

DataBase/MSSQL 2024.09.19

[MSSQL] SQL Server 문자열 데이터 타입: `varchar`와 `nvarchar`의 차이점 및 사용 가이드

SQL Server에서는 문자열 데이터를 저장할 수 있는 다양한 데이터 타입을 제공한다. 이 중에서 `varchar`와 `nvarchar`는 가장 많이 사용되는 타입이다.  이 글에서는 `varchar`와 `nvarchar`의 차이점, 다른 대표적인 문자 타입과의 비교, 길이 선언 방법, 그리고 실제 사용 시 권고사항을 다룬다.   1. `varchar`와 `nvarchar`의 차이점- `varchar` (Variable Character):   - 비-Unicode 지원: 주요 영어와 같은 단일 언어의 문자열 데이터를 저장할 때 사용한다.   - 저장 크기: 각 문자는 1바이트를 사용한다. 예를 들어, `varchar(20)`은 최대 20바이트를 차지한다.   - 사용 사례: 영어 텍스트, 로그 데이터..

DataBase/MSSQL 2024.07.26

[MSSQL] SQL Server에서 sa 계정을 잃어버렸을 때 복구 방법

관리하고 있는 SQL Server DB의 sysadmin권한을 가진 계정이 없고, 심지어 sa계정이 비활성화 상태이다..(비유하자면 전에 금고를 관리하던분이 관리하던 키와 함께 어디론가 사라진 그런 상황이다) 이런 답이 없는 상황을 어떻게 풀어나갈 수 있을까?    오늘은 SQL Server의 sa 계정이 비활성화된 경우, 권한을 복구하기 위한 절차를 설명한다. 이 포스팅에서는 SQL Server를 단일 사용자 모드로 설정하여 sa계정을 활성화하고 비밀번호를 변경하는 방법을 중점적으로 설명하고자 한다. *시스템 환경Database: SQL Server (v15.0.2000)운영체제: Window Server 2019    1. SQL Server 단일 사용자 모드에서 권한 복구단일 사용자 모드를 사용하여..

DataBase/MSSQL 2024.07.20

[MSSQL] 특정 테이블 열을 참조하는 모든 외래키를 탐색하는 방법

SQL Server의 특정 테이블 열을 참조하는 모든 외래 키 제약 조건을 찾으려면 시스템 카탈로그 뷰를 쿼리하면 된다. 다음은 특정 테이블의 특정 열을 참조하는 모든 외래 키 제약 조건을 보여주는 쿼리 예시이다.DECLARE @TableName NVARCHAR(128) = '';DECLARE @ColumnName NVARCHAR(128) = '';SELECT fk.name AS ForeignKeyName, tp.name AS ParentTable, cp.name AS ParentColumn, tr.name AS ReferencedTable, cr.name AS ReferencedColumnFROM sys.foreign_keys AS fkINNER JOIN sy..

DataBase/MSSQL 2024.07.13
반응형