안녕하세요. 바른호랑이입니다.
이번 게시글에서는 DB 및 SQL관련용어들에 대해서 간략하게 알아볼 예정입니다.
용어들과 그에 대한 내용은 아래와 같습니다.
1. 개념적 데이터 모델링
: 추상화 수준이 높고, 업무중심적이며 포괄적인 수준의 모델링을 지칭하는 용어로 전사적 데이터 모델링, EA(Enterprise Architect)수립시 많이 이용함.
2. 격리성(Isolation)
: 실행 중인 트랜잭션의 중간에 다른 트랜잭션이 접근할 수 없음.
3. 공유 Lock(Shared Lock)
: 데이터를 읽고자 할 때, 다른 공유 Lock과는 호환되지만 다른 배타적 Lock과는 호환되지 않음.
4. 관계(Relationship)
: 엔터티의 인스턴스 사이의 논리적인 연관성으로 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
5. 교착상태(DeadLock)
: 두 세션이 각각 Lock을 설정한 리소스를 서로 액세스하려고 마주보며 진행하는 상황으로 둘 중 하나가 물러나야 해결됨.
6. 규칙기반 옵티마이저(Rule-Based Optimizer)
: 미리 정해 놓은 규칙에 따라 액세스 경로를 평가하고 실행계획을 선택해주는 옵티마이저
7. 낙관적 동시성 제어(Optimistic Concurrency Control)
: 사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정함으로써, 데이터를 읽을 때 Lock을 설정하지 않고 수정 시점에서 다른 사용자에 의해 값이 변경되었는지 검사하는 동시성 제어 기법
8. 논리적 데이터 모델링
: 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현하는 모델링으로 재사용성이 높음.
9. 다중버전 동시성 제어(Multiversion Concurrency Control, MVCC)
: 현재 진행 중인 트랜잭션에 의해 변경된 데이터를 읽고자 할 때는 변경 이전의 상태로 되돌린 버전을 읽는 방식
10. 데이터 모델링
: 기업 업무의 대한 종합적인 이해를 바탕으로 데이터에 존재하는 업무규칙(Business Rule)에 대하여 참 또는 거짓을 판별할 수 있는 사실을 어떻게(How), 누가(Who)의 관점에서 정의하고, 전산화와는 별개의 관점에서 이를 명확하게 표현하는 추상화 기법
11. 데이터 독립성
: ANSI/SPARC에서 제시한 외부단계와 개념적 단계, 내부적 단계로 구성된 서로 독립적인 DB 스키마 구조에서 외부와 개념, 개념과 내부 단계에 대한 독립성을 의미함.
12. 동시성 제어(Concurrency Control)
: 다수 사용자에 의한 다중 트랜잭션이 동시에 작동할 때 DBMS는 이들 트랜잭션의 상호 간섭 작용에서 DB를 보호할 수 있어야 하며, 이를 동시성 제어라고 지칭함.
13. 동적 파티션 가지치기(Dynamic Partition Pruning)
: 액세스할 파티션을 실행시점(Run-Time)에서야 결정하는 것으로 파티션 키 컬럼을 바인드 변수로 조회하는 경우가 대표적임. NL(Nested Loop) Join시 에도 Inner 테이블이 Join 컬럼 기준으로 파티셔닝 되어 있으면 동적 Pruning이 작동함.
14. 디스크 소트(To-Disk Sort)
: 할당받은 소트 영역 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우로 External Sort라고도 함.
15. 메모리 소트(In-Memory Sort)
: 전체 데이터의 정렬 작업을 할당받은 소트 영역 내에서 완료하는 경우로 Internal Sort 또는 Optimal Sort라고도 함.
16. 모델(Model)
: 모형, 축소형의 의미로 사람이 살아가면서 나타날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형
17. 문장수준 읽기(Statement-Level Read Consistency)
: 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 단일 SQL문 내에서 일관성 있게 값을 읽는 것을 지칭하며, 일관성 기준 시점은 쿼리 시작 시점이 됨.
18. 물리적 데이터 모델링
: 실제 DB에 이식할 수 있도록 저장공간, 성능 등 물리적인 성격을 고려하는 모델링을 지칭함.
19. 반정규화(De-Normalization)
: 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능 향상과 개발(Development), 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
20. 배타적 Lock(Exclusive Lock)
: 데이터를 변경하고자할 때 사용하는 Lock으로 어떤 모드의 Lock과도 호환되지 않음.
21. 버퍼 캐시 히트율(Buffer Cache Hit Ratio)
: 전체 읽은 블록 중에서 메모리 버퍼 캐시에서 찾은 비율을 지칭하는 것으로 물리적인 디스크 읽기를 수반하지 않고 메모리에서 블록을 찾은 비율(공식 : Buffer Cache Hit Ratio = ( 버퍼 캐시에서 곧바로 찾은 블록 수 / 총 읽은 블록 수 ) x 100 )
22. 병렬 서버 프로세스
: 실제 병렬 작업을 수행하는 개별 프로세스
23. 부분범위처리
: 쿼리 결과집합을 전송할 때, 전체 데이터를 연속적으로 전송하지 않고 사용자로부터 Fetch Call이 있을 때마다 일정량씩 나눠서 전송하는 것을 지칭함.
24. 분산 DB
: DB를 연결하는 빠른 네트워크 환경을 이용하여 DB를 여러 지역, 노드로 위치시켜서 사용성/성능을 향상시킨 DB
25. 블로킹(Blocking)
: Lock 경합이 발생해 특정 세션이 작업을 진행하지 못하고 멈춰 선 상태
26. 비관적 동시성 제어(Pessimistic Concurrency Control)
: 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정함으로써, 데이터를 읽는 시점에 설정한 Lock을 트랜잭션이 완료될 때까지 유지하는 동시성 제어 기법
27. 비식별자관계
: 부모로부터 상속받은 주식별자를 자식 엔터티의 일반 속성으로 이용하는 연관관계
28. 비용(Cost)
: 쿼리를 수행하는데 소요될 것으로 예상되는 일량 또는 시간
29. 비용기반 옵티마이저(Cost-Based Optimizer)
: 비용을 기반으로 최적화를 수행하는 옵티마이저.
30. 비용기반 쿼리 변환
: 변환된 쿼리 비용이 더 낮을 때만 그 쿼리를 사용하고, 그렇지 않을 때는 원본 쿼리를 그대로 두고 최적화를 수행하는 것을 지칭함.
31. 선택도(Selectivity)
: 전체 대상 레코드 중에서 특정 조건에 의해서 선택될 것으로 예상되는 레코드 비율(공식 : Selectivity = Cardinality / Total Number Of Records)
32. 성능 데이터 모델링
: DB 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
33. 소프트 파싱(Soft Parsing)
: SQL과 실행계획을 캐시에서 찾아 곧바로 실행단계로 넘어가는 경우
34. 속성(Attribute)
: 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위(원자성)
35. 식별자(Identifier)
: 엔터티에서 각각의 인스턴스를 구분할 수 있는 논리적인 이름
36. 식별자관계
: 부모 엔터티로부터 상속받은 주식별자를 자식 엔터티의 주식별자로 이용하는 관계
37. 실행계획(Execution Plan)
: 사용자의 질의를 처리하기 위한 방법과 절차를 표현한 것으로 DBMS 내부적으로 옵티마이저에 의해 생성된 SQL 처리절차(프로시저)지칭
38. 엔터티(Entity)
: 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것
39. 영속성(Durability)
: 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 DB에 영속적으로 저장되는 특성
40. 옵티마이저(Optimizer)
: 사용자의 질의에 대해 최적의 실행방법(실행계획)을 결정하는 모듈로 규칙기반 옵티마이저와 비용기반 옵티마이저로 나눠짐
41. 원자성(Atomicity)
: 트랜잭션은 더 이상 분해가 불가능한 업무의 최소단위이므로, 전부 처리되거나 아예 하나도 처리되지 않아야 함.
42. 인덱스 손익분기점
: 인덱스에 의한 테이블 액세스와 테이블 전체 스캔의 수행 비용이 같아지는 지점을 지칭
43. 인스턴스(Instance)
: SGA 공유 메모리 영역과 이를 액세스하는 프로세스 집합을 합쳐서 지칭하는 용어
44. 일관성(Consistency)
: 하나의 트랜잭션을 성공적으로 완료하면 DB는 여전히 일관된 상태여야한다는 뜻으로 트랜잭션의 실행 결과로 DB상태가 모순되지 않아야 함.
45. 정규화(Normalization)
: 속성간의 함수적 종속, 다치종속, 조인종속에 의한 데이터처리(입력, 수정, 삭제)의 이상현상(Anomaly)을 제거하여 정규형(Normal Form)을 만들어 나가는 DB 이론
46. 정적 파티션 가지치기(Static Partition Pruning)
: 액세스할 파티션을 컴파일 시점(Compile-Time)에 미리 결정하는 것으로 파티션 키 컬럼을 상수 조건으로 조회하는 경우 작동함.
47. 카디널리티(Cardinality)
: 특정 액세스 단계를 거치고 나서 출력될 것으로 예상되는 결과 건수를 지칭하며, 총 행 수에 선택도를 곱해서 구함. 특정 컬럼의 유니크한 값의 개수(예시 : 성별이 남, 여로만 구성되면 카디널리티는 2임)
48. 클러스터링 팩터(Clustering Factor)
: 특정 컬럼을 기준으로 같은 값을 갖는 데이터가 서로 모여있는 정도
49. 트랜잭션 수준 읽기 일관성(Transaction-Level Read Consistency)
: 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 트랜잭션 내에서 일관성 있게 값을 읽는 것을 지칭하며 일관성 기준 시점은 트랜잭션 시작 시점이 됨.
50. 트랜잭션(Transaction)
: 업무 처리를 위한 논리적인 작업 단위
51. 파티션 가치지기(Pruning)
: 옵티마이저가 SQL의 대상 테이블과 조건절을 분석하여 불필요한 파티션을 액세스 대상에서 제외하는 기능
52. 하드 파싱(Hard Parsing)
: SQL과 실행계획을 캐시에서 찾지 못해 최적화 과정을 거치고 나서 실행단계로 넘어가는 경우를 지칭함.
53. 함수의 종속성(Functional Dependency)
: 속성의 값이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것으로 기준값을 결정자(Determinant)라고 하고 종속되는 값을 종속자(Dependent)라 함.
54. 휴리스틱(Heuristic) 쿼리 변환
: 결과만 보장된다면 무조건 쿼리변환을 수행하는 것
55. Bulid Input
: Hasho Join에서 해시 테이블 생성을 위해 선택된 집합
56. Dirty Read
: 다른 트랜잭션에 의해 수정된 아직 커밋되지 않은 데이터를 읽는 것을 지칭함.
57. Dynamic SQL
: String형 변수에 담아서 기술하는 SQL문을 지칭함.
58. ERD(Entity Relationship Diagram)
: 엔터티와 엔터티간의 관계를 이해하기 쉽게 도식화한 다이어그램
59. Global 파티션 인덱스
: 테이블 파티션과 독립적인 구성을 갖도록 파티셔닝한 인덱스를 지칭하는 것으로 SQL Server에서는 정렬되지 않은(un-aligned) 파티션 인덱스라 지칭함.
60. Index Skew
: 인덱스 엔트리가 왼쪽 또는 오른쪽에 치우치는 현상을 지칭함.
61. Index Space
: 인덱스 블록 전반에 걸쳐 밀도(density)가 떨어지는 현상을 지칭함.
62. Local 파티션 인덱스
: 테이블 파티션과 1:1로 대응되도록 파티셔닝한 인덱스를 지칭하는 것으로 SQL Server에서는 정렬된(aligned) 파티션 인덱스라 지칭함.
63. Lock Escalation
: 관리할 Lock 리소스가 정해진 임계치를 넘으면서 로우 레벨 락이 페이지, 익스텐트, 테이블 레벨 락으로 점점 확장되는 것을 지칭함.
64. LRU(Least Recently Used) 알고리즘
: 사용빈도가 높은 오브젝트가 메모리 캐시에 오래도록 상주하도록 관리하는 알고리즘
65. MultiBlock I/O
: I/O Call이 필요한 시점에 인접한 블록들을 같이 읽어 메모리를 적재하는 방식
66. NonPrefixed 파티션 인덱스
: 파티션 인덱스를 생성할 때, 파티션 키 컬럼을 인덱스 키 컬럼 왼쪽 선두에 두지 않는 것을 지칭하며, 파티션 키가 인덱스 컬럼에 아예 속하지 않을 때도 여기에 속함.
67. Non-Repeatable Read
: 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리에 없던 유령 레코드가 두 번째 쿼리에서 나타나는 현상
68. Prefixed 파티션 인덱스
: 파티션 인덱스를 생성할 때, 파티션 키 컬럼을 인덱스 키 컬럼 왼쪽 선두에 두는 것을 지칭함.
69. Probe Input
: Hash Join에서 Build Input으로 선택되지 못한 나머지 집합을 지칭하며, 해시 테이블을 탐색할 소스 데이터를 제공하는 집합
70. Query Coordinator
: 병렬 SQL문을 발행한 세션으로 각 병렬 서버 프로세스의 역할을 조정하고 결과를 취합하는 것을 지칭함.
71. Random 액세스
: 레코드간 논리적, 물리적 순서를 따르지 않고 한 건을 읽기 위해 한 블록씩 접근하는 방식
72. Read Committed
: 트랜잭션이 커밋되어 확정된 데이터를 다른 트랜잭션이 읽는 것을 허용하는 트랜잭션 격리성 수준
73. Read Uncommitted
: 트랜잭션에서 처리 중인 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽도록 허용함으로서 Dirty Read를 방지해주는 트랜잭션 격리성 수준
74. Repeatable Read
: 트랜잭션 내에서 쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지해주는 트랜잭션 격리성 수준
75. Sequential 액세스
: 레코드간 논리적 또는 물리적인 순서에 따라 차례대로 읽어 나가는 방식
76. Serializable Read
: 트랜잭션 내에서 쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌지 않음은 물론 새로운 레코드가 나타나지도 않는 트랜잭션 격리성 수준
77. Single Block I/O
: 한번의 I/O Call에 하나의 데이터 블록만 읽어 메모리에 적재하는 방식
78. SQL 처리 흐름도(Access Flow Diagram)
: SQL문의 내부적인 처리 절차를 도표화하여 표현한 것
79. Static SQL
: String형 변수에 담지 않고 코드 사이에 직접 기술한 SQL문을 지칭하며 Embedded SQL이라고도 함.
P.S 더 나은 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.
+ 본 글은 「SQL 전문가 가이드, 한국 데이터베이스 진흥원」참고하여 작성하였습니다.
'IT & 데이터 사이언스 > DB & SQL' 카테고리의 다른 글
[DB] 데이터 정합성과 무결성 그리고 데이터베이스 정규화 (4) | 2023.03.16 |
---|---|
[DB] 성능 데이터 모델링 (0) | 2023.03.08 |
[DB] 엔터티, 속성, 관계, 식별자 (2) | 2023.03.06 |
[DB] 데이터 모델과 모델링 (4) | 2023.03.03 |
[SQL] SQLP와 SQLD에 대하여 (0) | 2022.07.15 |
댓글