programming/database

데이터베이스 옵티마이저
옵티마이저란?데이터베이스 옵티마이저(Database Optimizer)는데이터베이스에서 SQL 쿼리를 빠르고 효율적으로 실행하기 위해 최적의 실행 계획을 만들어준다옵티마이저의 목적은 쿼리 실행에 필요한 비용을 최소화하여 성능을 극대화하는 것이다이 비용에는 디스크 I/O, CPU 사용량, 네트워크 트래픽 등이 포함된다 옵티마이저의 종류규칙 기반 옵티마이저(Rule-Based Optimizer, RBO): 이 옵티마이저는 사전 정의된 규칙에 따라 쿼리를 최적화한다예를 들어, 특정한 형태의 쿼리에서는 항상 인덱스를 사용하는 방식으로 최적화하는 식이 방식은 상대적으로 간단하지만 최신 데이터베이스에서는 사용하지 않는다특정 우선순위비용 기반 옵티마이저(Cost-Based Optimizer, CBO): 대부분의 ..
데이터베이스 Cluster
클러스터란?데이터베이스 클러스터링은 여러 대의 데이터베이스 서버(노드)를 하나의 논리적인 데이터베이스처럼 동작하게 만드는것이를 통해 병렬처리, 고가용성 ,성능 향상을 구현할 수 있다고가용성데이터 베이스에서 가용성이란1년 동안 몇 분이 정지했음을 비율로 나타낸 것고가용성이란 데이터베이스 장비(서버나 스토리지 등)를 각 2대 이상으로 구성하여한쪽에 장애가 발생하면 동일한 데이터를 가진 복제 데이터베이스(이중화된 데이터베이스)로빠른 시간내에서비스를 재개할 수 있도록 하는 것을 의미병렬처리데이터가 많거나, 복잡한 SQL을 실행하게 될 경우 많은 시간이 걸리게 된다이때 동일한 데이터를 가지고 있는 여러 데이터베이스가복잡한 SQL을 나누어서 작업한뒤결과를 통합하여 넘겨준다면 훨씬 빠르게 결과를 얻을 수 있다병렬처리..
데이터베이스 트랜잭션
트랜잭션이란 무엇인가?트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위로 간주되는 일련의 연산보통 은행 이체 작업을 예로 들어 설명한다은행 계좌 이체 작업은 한쪽의 출금과 반대쪽의 입금 두 가지 연산이 함께 이루어져야만 올바른 결과를 가져온다트랜잭션은 이러한 일련의 작업들이 모두 성공하거나 모두 실패하도록 보장하여 데이터의 일관성을 유지합니다.ACID관계형 데이터 베이스에서 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질트랜잭션은 ACID라는 네 가지 기본 특성을 준수해야 한다원자성(Atomicity): 트랜잭션 내의 모든 연산은 하나의 단위로 처리되어야 함일부만 실행되거나 취소되는 일이 없어야 하며, 모두 성공하거나 모두 실패해야 함예)디비에서 A테이블에 insert를하고..
데이터베이스 파티셔닝
디비 파티셔닝이란?큰 테이블을 파티션이라는 작은 단위로 나누어 관리하는것사용 이유하나의 DBMS에 너무 큰 table이 들어가면서 용량과 성능 측면에서 많은 이슈가 발생하게 되었고,이런 이슈를 해결하기 위한 방법으로 table을 ‘파티션(partition)’이라는 작은 단위로 나누어 관리하는 ‘파티셔닝(Partitioning)’기법 이 나타나게 되었다 파티션이라는 단위는 무엇인가?하나의 파티션은 데이터베이스 내에서 데이터가 물리적으로 분리되어 저장되는 단위를 말하며,주로 특정 조건에 따라 분리된다아래는 그 조건들의 예시 범위 단위 (Range)특정 값의 범위를 기준으로 데이터를 분리예를 들어, 날짜가 "2024-01-01"부터 "2024-12-31"까지인 데이터를 하나의 파티션으로 저장하고, 다른 연도..
데이터베이스 인덱스
데이터베이스 인덱스란?데이터베이스 인덱스는 책의 목차와 비슷한 역할이다 데이터베이스에서 원하는 데이터를 더 빠르게 찾을 수 있도록 도와주는 도구인덱스를 사용하면 검색 속도를 크게 향상시킬 수 있으며, 이는 특히 대량의 데이터를 다룰 때 중요함 왜 인덱스를 사용하는가?만약 인덱스가 없다면, 특정 레코드를 찾기 위해 모든 레코드를 하나씩 확인해야 함하지만 인덱스를 사용하면 특정 컬럼의 값을 기준으로 데이터를 빠르게 찾아낼 수 있다 사전에서 특정 단어를 찾을 때,앞에서 부터 한장씩 넘기는것이 아닌'사과' 면 'ㅅ' 부분으로 바로 넘어가서 찾는것과 비슷한 이치 인덱스의 종류B-Tree 인덱스: 가장 일반적으로 사용되는 인덱스 타입데이터를 트리 구조로 관리하여 빠르게 검색, 삽입, 삭제가 가능하다 대부분의 관계형..
데이터베이스 Lock의 종류
Lock 이란여러 커넥션에서 동시에 동일한 자원을 요청할 경우순서대로 하나의 커넥션만 변경할 수 있게 해주는 기능동시성을 제어하기 위한 기능 Lock의 종류1. Shared Lock (공유 락)특징: 여러 트랜잭션이 동시에 특정 데이터(주로 읽기 작업)를 공유할 수 있도록 허용하는 Lock입니다.용도: 데이터를 읽기 위해 사용되며, 다른 트랜잭션이 해당 데이터에 대해 쓰기 잠금을 걸 수 없도록 합니다.장점: 여러 트랜잭션이 동시에 데이터를 읽을 수 있기 때문에 읽기 작업의 효율성을 높일 수 있습니다.단점: 쓰기 작업이 지연될 수 있습니다.2. Exclusive Lock (배타 락)특징: 한 트랜잭션만 특정 데이터에 접근할 수 있도록 허용하는 Lock입니다. 주로 쓰기 작업을 위해 사용됩니다.용도: 데이..
데이터베이스 정규화
정규화란? 정규화(Normalization)란 데이터베이스의 데이터 중복과 불일치를 줄이기 위해 데이터 구조를 체계적으로 정리하는 과정 왜하나?일관성,무결성을 높여 데이터 삽입, 수정, 삭제 시 발생할 수 있는 여러 문제를 효과적으로 방지하기 위해서새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다 정규화의 종류제 1정규화(1NF)각 테이블의 모든 필드가 원자값(Atomic Value)을 가져야 한다즉, 하나의 칸에는 하나의 값만 존재해야 한다각 컬럼이 하나의 속성만을 가져야한다.하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야한다.각 컬럼이 유일한 이름을 가져야한다.칼럼의 순서가 상관없어야한다.제 2정규화(2NF)두 번째 정규형은 첫 번째 정규형을 ..

디비 데드락
디비 데드락이란? 위 그림처럼 데드락(교착 상태)은 두 개 이상의 트랜잭션이 서로가 점유한 자원을 요청하면서 무한정으로 대기하는 상황이다이로 인해 해당 트랜잭션들은 더 이상 진행할 수 없게 되어 시스템의 성능과 안정성에 부정적인 영향을 미침 데드락이 발생하는 조건 데드락이 발생하기 위해서는 다음 네 가지 조건이 모두 만족되어야 한다상호 배제(Mutual Exclusion): 자원은 한 번에 한 트랜잭션만 사용점유와 대기(Hold and Wait): 이미 자원을 점유한 트랜잭션이 추가적인 자원을 요청하며 대기비선점(No Preemption): 자원을 점유한 트랜잭션은 자발적으로 자원을 해제하기 전까지 그 자원을 강제로 빼앗길 수 없다순환 대기(Circular Wait): 트랜잭션들이 원형으로 자원을 서로..