DBMS

· DBMS
🪡 블록 단위 I/O Oracle을 포함한 모든 DBMS에서 I/O는 블록 단위로 이루어진다.즉, 하나의 레코드를 읽더라도 레코드가 속한 블록 전체를 읽는 것인데, 그렇기 때문에 가장 중요한 성능 지표는 엑세스하는 블록의 개수이며 옵디마이저 판단에 가장 큰 영향을 미치는 것도 마찬가지이다. 블록 단위 I/O는 버퍼 캐시와 데이터 파일 I/O 모두에게 적용된다. - 데이터 파일에서 DB 버퍼 캐시로 블록 적재를 할 때- 데이터 파일에서 블록을 직접 읽고 쓸 때- 버퍼 캐시에서 블록을 읽고 쓸 때- 버퍼 캐시에서 변경된 블록을 다시 데이터 파일에 쓸 때 🧶 메모리 I/O vs 디스크 I/O 1. I/O 효율화 튜닝의 중요성 디스크를 경유한 데이터 입출력은 디스크의 엑세스 암이 움직이며 헤드를 통한 읽기 쓰기..
· DBMS
🪡 SQL 처리 과정 과거 데이터베이스 프로그래밍을 할 때에는, 처리 절차를 프로그래머가 직접 작성을 해야 했다. 그러나 지금은 구조화된 질의언어(SQL) 을 통해 사용자가 원하는 결과집합을 정의하고, 그것을 얻는 데에 필요한 처리절차를 직접 기술을 하지는 않는다. 대신 프로그래밍을 해주는 엔진이 DBMS 내에 내장이 되어 있기 때문이며, SQL 옵티마이저가 그 역할을 수행한다. 옵티마이저에 의해서 생성된 처리절차를 실행계획이라고 부른다. 옵티마이저에서는 실행 계획을 생성하고, 프로시저(또는 코드) 형태로 변환하는 과정을 거친 뒤 SQL 엔진에 의해 수행이 된다. 🐣SQL 파싱(Parsing) 사용자가 SQL을 실행하게 되면, 제일 먼저 SQL Parser가 SQL 문장에 문법적 오류가 없는지 검사한다...
· DBMS
🪡 아기텍처 개관 ✨모델링의 정의 DBMS마다 데이터베이스에 대한 정의가 조금씩 다르다. 오라클은 디스크에 저장된 데이터 집합 (Datafile, Redo Log FIle, Control File 등) 을 데이터베이스라고 지칭하고, SGC(System Global Area) 공유 메모리 영역과 이를 엑세스하는 프로그램 집합을 합쳐서 인스턴스(Instance)라고 부른다. 기본적으로는 하나의 인스턴스가 하나의 데이터베이스만을 엑세스하는 형식이지만, RAC(Real Application Cluster)환경에서는 여러 인스턴스가 하나의 데이터베이스를 액세스할 수 있다. 반대로, 하나의 인스턴스가 여러 개의 데이터베이스를 엑세스할 수는 없다. SQL Server는 하나의 인스턴스당 최고 32,767개의 데이터베..
· DBMS
✨ JOIN? 조인은 두 개 이상의 테이블을 하나의 집함으로 만드는 것이다. SQL 문에서 FROM 절에 두 개 이상의 테이블이 나열될 경우에 조인을 수행한다. 조인을 하는 테이블이 A, B, C 세 개가 존재할 때, DBMS에서는 동시에 수행을 하는 게 아니라, A와 B를 먼저 JOIN을 수행한 다음, 그 결과와 C를 JOIN 수행한다. 다음과 같이 수행되는 JOIN은 단계별로 다른 기법을 사용할 수 있는데, 자주 사용되는 것은 NL JOIN, HASH JOIN, SORT MERGE JOIN이 존재한다. 🪡 NL JOIN NL JOIN은 중첩 FOR문과 그 방식이 유사하다고 할 수 있다.즉, 선행 테이블의 조건을 만족하는 행이 나오면, 후행 테이블을 읽으면서 조인을 수행하는 것이다. FOR문이 그러하듯..
· DBMS
✨ INDEX? 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 책에 책갈피를 꽂아놓는 것과 같다. 테이블 기반 선택적으로 생성할 수 있으며, 생성하지 않을 수도 있고 여러 개를 생성해도 된다. 인덱스의 기본 목적은 검색 성능의 최적화이며 검색 조건을 만족하는 데이터를 효과적으로 사용할 수 있게 돕는다. 그러나 insert, update, delete등과 같은 dml 작업을 수행할 때 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다. 🪡 트리 기반 인덱스 DBMS에서 가장 일반적인 인덱스는 B-Tree Index이다. 브랜치 블록(Branch Block) 과 리프 블록(Leaf Block)으로 구성되어 있으며, 가장 상위에 있는 블록을 루트 블록(Root Block)이라고 한다. 루트블..
· DBMS
✨ 옵티마이저? 옵티마이저(Optimizer)는 사용자가 작성한 SQL 문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다. 이러한 것을 실행 계획(Execution Plan) 이라고 한다. 관계형 데이터베이스는 Java, C등과 같은 프로그램 언어와 다르게 사용자의 요구사항만 기술하고 처리 과정에 대해서는 기술하지 않는데, 그렇기 때문에 옵티마이저에서는 다양한 실행 방법 중 최적의 실행 방법을 결정하는 것이다. 그러므로 옵티마이저가 선택한 실행 방법이 수행 속도에 가장 큰 영향을 끼치게 된다. 그러나 이런 결정을 정할 때, 옵티마이저는 실제로 처리해보지 않은 상태에서 정해야 한다는 어려움이 존재한다. 옵티마이저가 최적의 실행 방법을 결정하는 방식은 규칙기반의 옵티마이저(RBO, Rule Based ..
· DBMS
✨ 절차형 SQL? 절차형 SQL은 개발 언어와 같이 SQL에서도 절차지향의 프로그래밍이 가능하도록 하는 것을 말한다. 절차형 SQL을 이용하면 연속적인 실행이나 조건에 따른 분기처리를 이용, 특정 기능을 수행하는 저장 모듈을 생성 가능하다. 이 글에서는 오라클에 대해서만 설명을 할 것이다. ✨ PL/SQL? PL/SQL은 오라클에서 제공하는 절차적 프로그래밍을 위한 트랜잭션 언어이다. 이것을 이용하여 PL/SQL 문장을 데이터베이스 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 컴포넌트인 Stored Module을 개발할 수 있다. 오라클의 저장 모듈에는 Procedure, User Defined Function, Trigger가 있다. - Block 구조로 기능별 모듈화가 가능..
· DBMS
✨ DCL이란? DCL은 유저를 생성하고 권한을 제어할 수 있는 DATA CONTROL LANGUAGE 명령어의 약자이다. 유저 별로 다른 권한을 줄 수 있는 것이라고 생각하면 쉽다. 예를 들어, 데이터를 사용하는 모든 유저에게 테이블을 삭제하는 권한을 주는 것이 아니라, 필요한 유저에게만 그 권한을 줄 수 있고, 어느 유저에게는 데이터를 편집할 수 있는 권한만, 어느 유저에게는 삭제와 추가가 가능한 권한까지 등 각자 필요한 권한만을 줄 수 있는 것이다. 사용자는 100개이상의 시스템 권한을 가질 수 있는데, 이것을 하나하나 사용자에게 권한을 주고 회수하는 것은 매우 비효율적이고 피곤하기 때문에 ROLE을 이용하여 간편하게 부여하게 된다. 🪡 ROLE? ROLE은 부여할 권한을 정리해놓은 것이라고 보면 ..
· DBMS
✨ WINDOW FUNCTION? 기존에 inline view를 이용해 복잡한 형태로 SQL문을 작성해야 하던 것을 부분적으로나마 정의하기 쉽도록 만든 함수로, 복잡한 프로그램을 하나의 문장으로 해결이 가능하다. 분석 함수(ANALYTIC FUNCTION) / 순위 함수(RANK FUNCTION)으로도 알려져 있는 윈도우 함수는 데이터웨어하우스에서 발전했다. WINDOW FUNCTION은 기존에 사용하던 집계 함수를 포함하여 전용으로 새로 만들어진 것도 있으며, 다른 함수와 달리 중첩 사용이 불가능하지만 서브쿼리에서는 사용이 가능하다. * 윈도우 함수에는 ORVER 문구가 반드시 필요하다. WINDOW FUNCTION의 종류는 크게 다섯 개로 분류할 수 있는데, 벤더별로 지원 함수에 차이가 있다. 1. ..
JEE-JEEE
'DBMS' 카테고리의 글 목록 (2 Page)