STUDY
-
Database LockSTUDY/DB 2023. 4. 26. 00:06
Database Lock이란? Lock은 여러 트랜잭션이 공유 데이터에 접근할 때 데이터를 잘못 업데이터하거나 잘못된 데이터 구조를 변경하는 것을 방지하는 것으로 데이터베이스 동시성과 일관성을 유지하는 데 중요한 역할을 한다. 일반적으로 데이터베이스는 베타적 락(Exclusive Locks)과 공유 락(Share Locks) 두 종류의 락을 사용하는데, 하나의 리소스(행 또는 테이블)에는 하나의 베타적 락만 획득할 수 있고, 여러 개의 공유 락을 동시에 획득할 수 있다. Lock의 설정 범위(Level) 데이터베이스 데이터베이스 범위의 Lock은 전체 데이터베이스를 기준으로 Lock을 하는 것을 의미한다. 즉, 1개의 세션만이 DB의 데이터에 접근이 가능하다. 파일 데이터베이스 파일을 기준으로 Lock을..
-
Isolation LevelSTUDY/DB 2023. 4. 25. 23:06
Isolation Level이란? 데이터베이스 트랜잭션 처리에서의 격리 수준을 의미하며, 동시에 수행되는 여러 트랜잭션들이 서로 영향을 주지 않도록 데이터베이스 시스템에서 제공하는 기술이다. 이를 통해 동시성과 일관성 사이의 균형을 조절할 수 있다. 1. READ UNCOMMITTED(읽기 미완료) 가장 낮은 격리 수준으로, 트랜잭션들이 아직 커밋되지 않은 데이터를 읽을 수 있다. 이로 인해 dirty read, non-repeatable, phantom read와 같은 문제가 발생할 수 있다. [예] 트랜잭션A가 어떤 값을 x에서 y로 변경하고 아직 커밋하지 않은 상황에서 트랜잭션B가 해당 값을 읽을 경우 트랜잭션B에 y가 조회되는 것이다. 하지만 속도가 빠르기 때문에 데이터의 일관성이 떨어지더라도, ..
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 3.1STUDY/Docker 2023. 4. 25. 17:31
마스터 노드 kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할로, API 서버와 주로 통신을 한다. API 서버 : 쿠버네티스 클러스터의 중심 역할을 하는 통로로, 주로 상태 값을 저장하는 etcd와 통신한다. etcd : 구성 요소들의 상태 값이 모두 저장되는 곳으로, etcd 외의 다른 구성 요소는 상태 값을 관리하지 않는다. 따라서 etcd의 정보만 백업돼 있으면 장애 상황에서 쿠버네티스 클러스터는 복구가 가능하다. 또한 etcd는 분산 저장이 가능한 key-value 저장소이므로, 복제해 여러 곳에 저장해 두면 하나의 etcd에서 장애가 발생하더라도 시스템의 가용성을 확보할 수 있다. 컨트롤러 매니저 : 쿠버네티스 클러스터의 오브젝트 상태를 관리한다. 노드 컨트롤러 - 상태 체크와 복구 ..
-
실행계획STUDY/DB 2023. 4. 19. 22:20
실행 계획이란? Sql Statement가 요구한 데이터를 추출하기 위해 DBMS가 차례로 수행하는 Access 과정 통계정보를 기반으로 다양한 Access Path를 수립하고 그 중 Cost가 가장 낮은 Access Path를 결정 옵티마이저에 의한 Plan이 잘못 수립될 가능성이 있기때문에 이해하고 제어하는 것이 필요 실행 계획 확인하는 방법 EXPLAIN PLAN : 쿼리 실행 계획을 생성하는 데 사용되는 SQL문으로, 쿼리를 실제로 실행하지 않고 실행 계획을 생성할 수 있다. 생성된 실행 계획은 'PLAN_TABLE'이라는 테이블에 저장된다. SET AUTUTRACE : 쿼리를 실행한 후 자동으로 실행 계획을 출력하는 기능을 활성화하는 명령어로, 쿼리 실행 결과와 실행 계획을 함께 확인할 수 있다..
-
Join 방식STUDY/DB 2023. 4. 13. 00:58
Join 두 개 이상의 테이블에서 조인 컬럼에 일치하는 행을 찾아서 연결하는 것으로, 대부분 SQL 쿼리에서 사용되며, 데이터베이스의 논리적 연산 중 하나이다. Driving Table 조인을 할 때 기준이 되는 테이블로, 조인 컬럼에 대해 인덱스를 가지고 있는 경우에 선택된다. 인덱스를 가진 테이블을 기준으로 조인을 수행하면, 조인 컬럼을 이용해 빠르게 해당 행을 찾을 수 있다. Driven Table 드라이빙 테이블에서 조인 컬럼과 일치하는 모든 행을 찾아서 조인하는 테이블 Join 종류 1. Nested Loop Join(순차적 루프에 의한 접근 방식) - 가장 기본적인 Join 방식으로, 두 개의 테이블 중 하나를 기준으로 하나씩 순차적으로 읽어들이면서 다른 테이블과 조인하는 방식 순차적으로 처리..
-
Index ScanSTUDY/DB 2023. 4. 12. 23:42
인덱스 탐색 데이터베이스는 인덱스를 활용하여 빠르게 데이터를 찾을 수 있다. 인덱스 탐색에는 수직적 탐색과 수평적 탐색이 있는데, 수직적 탐색을 통해 먼저 찾고자 하는 데이터의 범위를 결정한 후, 수평적 탐색을 수행하여 실제 데이터를 검색한다. 1. 수직적 탐색 - 인덱스에서 데이터를 찾기 위해 트리 구조를 따라 내려가는 과정 - 대표적인 인덱스 구조인 B-Tree 인덱스에서 수직적 탐색은 루트 노드에서 시작하여, 찾고자 하는 데이터에 해당하는 리프 노드에 도달할 때까지 하위 노드로 이동하는 과정 - 트리의 깊이에 비례하는 시간이 소요 2. 수평적 탐색 - 인덱스에서 데이터를 찾기 위해 동일한 레벨의 노드들 사이를 이동하는 과정 - B-Tree 인덱스의 경우, 리프 노드들은 연결 리스트로 구성되어 있음 ..
-
-