일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 다익스트라
- 스택
- 너비 우선 탐색
- 구현
- 자바스크립트
- 오라클
- 백준 알고리즘
- 브루트포스
- 이분 탐색
- 브루트포스 알고리즘
- 백준알고리즘
- BFS
- 다이나믹 프로그래밍
- 너비우선탐색
- oracle
- 그리디 알고리즘
- 데이터베이스
- 그래프 탐색
- SWEA
- 백트래킹
- DFS
- C++
- SW Expert Academy
- 프로그래머스
- 그래프 이론
- 문자열
- 파이썬
- javascript
- Python
- DP
- Today
- Total
목록분류 전체보기 (152)
민규의 흔적

COMMIT과 ROLLBACK 트랜잭션의 완료 - COMMIT 연산 트랜잭션에서 변경하려는 내용이 데이터베이스에 완전하게 반영된다. 트랜잭션의 철회 - ROLLBACK 연산 트랜잭션에서 변경하려는 내용이 데이터베이스 일부만 반영된 경우, 원자성을 보장하기 위해서 트랜잭션이 갱신한 사항을 트랜잭션 수행되기 전의 상태로 되돌린다. 아래의 예시를 보자. 위 그림의 파란색 선 전체를 하나의 트랜잭션으로 보자. 위의 트랜잭션 연산은 정상적으로 수행되어, 끝내 COMMIT 연산을 통해 데이터베이스에 트랜잭션으로 변경된 내용이 그대로 반영되었다. 하지만, 아래의 트랜잭션 연산은 d1, u1, i1 연산을 수행한 이후, i2 연산을 수행하기 전에 고장이 나버려 수행하지 못하였다. 위와 같은 경우 ROLLBACK 연산을..

트랜잭션이란, 하나의 논리적인 단위를 수행하는 데이터베이스 연산자들의 모임이다. 40명의 학생 데이터 중, 하나를 삽입하는 것도 트랜잭션이며, 한 번에 삽입하는 것도 트랜잭션이다. DBMS는 트랜잭션 단위로 연산 중간에 하나라도 실패하면 전으로 돌릴 수 있다. 다음의 예시를 보자. 위 예시는 두 사람 간의 계좌이체 트랜잭션이다. 계좌이체 시 한 명은 돈을 보냈는데 다른 한 명은 돈을 받지 못하거나, 반대로 돈을 보내려다 취소했는데 다른 한 명이 돈을 받는 상황이 생기면 매우 곤란할 것이다. 한 명이 돈을 보내면 다른 한 명은 무조건 돈을 받아야 하고, 한 명이 돈을 보내지 않으면 다른 한 명은 무조건 돈을 받지 않는 상태만이 유효해야 한다. 즉, 위의 2개의 SQL문은 하나의 트랜잭션으로 취급하며, 모두..
시스템 카탈로그 데이터베이스의 객체(사용자, 릴레이션, 뷰, 인덱스, 권한 등)와 구조들에 관한 모든 데이터를 포함하는 것을 의미하며, 메타데이터(데이터에 관한 데이터의 의미)라고 한다. 사용자 및 질의 최적화 모듈 등 DBMS 자신의 구성 요소에 의해서 사용된다. 데이터 사전(Data dictionary) 또는 시스템 테이블 이라고도 부른다. 시스템 카탈로그 활용 - 질의 최적화 시스템 카탈로그의 사용 목적 중 하나로, DBMS가 질의를 수행하는 여러 가지 방법들 중에서 가장 비용이 적게 드는 방법을 찾는 과정을 질의 최적화라고 한다. 다음의 예시 질의를 보며 시스템 카탈로그가 어떻게 활용되는지 알아보자. SELECT EMPNAME, SALARY, SALARY*1.1 FROM EMPLOYEE WHERE..

뷰(VIEW) 뷰(VIEW)란, 간단히 말해 다른 릴레이션으로부터 유도된 릴레이션(Derived relation)이다. 같은 의미로 뷰는, 한 사용자의 전체 외부 뷰 대신에 하나의 가상 릴레이션(Virtual relation)을 의미한다. 기존의 기본 릴레이션(Base relation, 실제 릴레이션)에 대한 SELECT문 형태로 정의되며, 이는 뷰 = SELECT문 이라고 쉽게 이해할 수 있다. 뷰 정의 위에서 언급했듯, 뷰는 SELECT문 형태로 정의되며, 정의 방법은 다음과 같다. CREATE OR REPLACE VIEW 뷰 이름 [(애트리뷰트(들))] AS SELECT문 [WITH CHECH OPTION]; 뷰의 이름 다음에 애트리뷰트들을 생략하면, SELECT문의 SELECT절에 열거된 애트리뷰..

2023년 11월 21일 문제 링크 : 백준 2493번 - 탑 문제 KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 ..
물리적 데이터베이스 설계는 끊임없이 이루어지는 작업으로, 성능을 향상시키기 위한 고민을 지속적으로 해야 한다. 인덱스 선정 지침 1. 어떤 릴레이션에 인덱스를 생성해야 하는가 2. 어떤 애트리뷰트를 탐색 키로 선정해야 하는가 3. 몇 개의 인덱스를 생성해야 하는가 4. 각 인덱스에 대해 클러스터링 인덱스, 밀집/희소 인덱스 중 어느 유형을 선택할 것인가 인덱스를 선정하는 한 가지 방법은 가장 중요한 질의들을 차례로 고려해보고, 현재의 인덱스가 최적의 계획에 적합한지 고려해보고, 인덱스를 추가하면 더 좋은 계획이 가능한지 알아보는 것이다. 인덱스를 결정하는데 도움이 되는 몇 가지 지침 지침 1 : 기본 키는 클러스터링 인덱스를 정의할 훌륭한 후보이다. 지침 2 : 외래 키도 인덱스를 정의할 중요한 후보이다..
SQL의 CREATE TABLE 문에서 PRIMARY KEY절로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 기본 인덱스를 생성한다. UNIQUE로 명시한 애트리뷰트에 대해서는 DBMS가 자동적으로 보조 인덱스를 생성한다. (오버헤드는 증가함) 이는 값이 새로 들어오면, 중복된 값인지 아닌지 빠르게 체크하기 위해서이다. 다른 애트리뷰트에 추가로 인덱스를 정의하기 위해서는 DBMS마다 구문이 다소 다른 CREATE INDEX문을 사용해야 한다. 여기서는 오라클 기준으로 설명을 이어나가겠다. 다수의 애트리뷰트를 사용한 인덱스 정의 한 릴레이션에 속하는 두 개 이상의 애트리뷰트들의 조합에 대하여 하나의 인덱스를 다음과 같이 정의할 수 있다. CREATE INDEX EmpIndex ON EMPLOYEE (..

다단계 인덱스 인덱스 자체가 클 경우에는 인덱스를 탐색하는 시간조차 오래 걸릴 수 있다. ( 데이터 파일에 대한 인덱스 파일이 여타 다른 데이터 파일만큼 큰 경우 ) 이러한 경우 인덱스 엔트리를 탐색하는 시간을 줄이기 위해 단일 단계 인덱스를 디스크 상의 하나의 순서 파일로 간주하고, 단일 단계 인덱스에 대해 다시 인덱스를 정의할 수 있다. 다단계 인덱스는 가장 상위 단계의 모든 인덱스 엔트리들이 한 블록에 들어갈 수 있을 때까지 이런 과정을 반복하며, 최종 과정을 거쳐 가장 상위 단계의 인덱스가 만들어지면 해당 인덱스를 마스터 인덱스(Master Index)라고 부른다. 마스터 인덱스는 한 블록으로 이루어지기 때문에 주기억 장치에 상주할 수 있다. 대부분의 다단계 인덱스는 B+트리를 사용한다. 위 예시..