SQL
-
[SQL] SQL 처리과정Database 2023. 7. 6. 22:38
엔진 역할 Parser SQL 문장을 이루는 개별 구성요소들을 분석하고 파싱해서 파싱트리(내부적인 구조체)를 만든다. 이 과정에서 사용자 SQL에 문법적인 오류(syntax error)가 없는지, 의미상 오류(semantic error)가 없는지 확인한다. Optimizer Query Transformer 파싱된 SQL을 좀 더 일반적이고 표준적인 형대로 변환한다. Estimator 오브젝트 및 시스템 통계정보를 이용해 쿼리 수행 각 단계의 선택도,카디널리티,비용을 계산하고 궁극적으로는 실행계획 전체에 대한 총 비용을 계산한다. Plan Generator 하나의 쿼리를 수행할 떼, 후보군이 될만한 실행계획들을 생성해 낸다. Row Source Generator 옵티마이저가 생성한 실행계획을 SQL엔진이 ..
-
[SQL] 옵티마이저Database 2023. 7. 6. 22:27
SQL은 기본적으로 구조적(structured), 집합적(set-based), 선언적(declarative)인 질의 언어이다. 원하는 결과 집합을 구조적,집합적으로 선언하지만 그 결과 집합을 만드는 과정을 절차적을 수밖에 없다. 즉 프로시저가 필요하다. 이 프로시저를 만들어내는 DBMS 내부 엔진이 SQL 옵티마이저이다. 옵티마이저는 사용자가 원하는 작업을 가장 효율적을 수행할 수 있는 최적의 데이터 액세스 경로를 선택해 주는 DBMS의 핵심 엔진이다. 옵티마이저의 최적화 단계 1. 사용자로부터 전달받은 쿼리를 수행하는데 후보군이 될만한 실행계획을 찾는다. 2. 데이터 딕셔너리에 미리 수집해 준 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다. 3. 최저 비용을 나타내는 실행..
-
[SQL] 소프트 파싱 / 하드 파싱Database 2023. 7. 5. 23:54
시스템 공유 메모리에서 SQL과 실행계획이 캐싱되는 영역을 Oracle에서는 라이브러리 캐시(Library Cache),SQL Server에서는 프로시저 캐시(Procedure Cache)라고 부른다. 사용자가 SQL을 실행하면 제일 먼저 SQL Parser가 SQL문장에 문법적 오류가 없는지 검사(Syntax검사)를 한다. 문법적으로 오류가 없으면 의미상 오류가 있는지(Semantic 검사)를 한다. 예를 들어 존재하지 않거나 권한 없는 객체를 사용했는지 또는 존재하지 않는 컬럼을 사용했는지 등의 검사를 한다. Syntax검사,Semantic 검사를 마치면 사용자가 발핼한 SQL과 그 실행계획이 라이브러리 캐시에 캐싱됐는지를 확인한다. 만약 캐싱돼 있다면 무거운 최적화 과정을 거치지 않고 곧바로 실행 ..
-
[SQL] 인덱스 스캔 방식Database 2023. 7. 5. 00:15
1. Index Range Scan 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프블록을 필요한 범위(Range)만 스캔하는 방식 Ex) Index Range Scan (Oracle) create table test1(c1 number,c2 number,c3 number); insert into test1 values(1,2,3); insert into test1 values(4,5,6); insert into test1 values(7,8,9); commit; create index idx1 on test1(c1); set autot on select c1 from test1 where c1=1; C1 ---------- 1 Execution Plan -------------------..
-
[SQL] 내장 함수 - 문자형 함수Database 2023. 7. 4. 23:09
내장 함수(Built-in Function) : SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작하는데 사용됨 단일행 함수(Single-Row Function) : 단일 행 값이 입력됨 문자형 함수 : 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수, 몇몇 문자형 함수는 숫자로 리턴하기도함 숫자형 함수 날짜형 함수 변환형 함수 NULL 관련 함수 LOWER(문자열) : 문자열의 알파벳 문자를 소문자로 변경 SQL> select LOWER('SQL HELLO') as lower from dual; LOWER --------- sql hello UPPER(문자열) : 문자열의 알파벳 문자를 대문자로 변경 SQL> select UPPER('sql hello') as ..
-
[SQL] 내장 함수 - 단일행 함수(Single-Row Function)Database 2023. 7. 4. 23:03
함수(function)는 벤더에서 제공하는 함수인 내장함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)으로 나눌 수 있음 내장 함수(Built-in Function) : SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작하는데 사용됨 단일행 함수 : 단일 행 값이 입력됨 다중행 함수 : 다중 행 값이 입력됨, 집계함수 / 그룹함수 / 윈도우함수 단일행 함수(Single-Row Function) 종류 내용 함수의 예 문자형 함수 문자를 입력하면 문자나 숫자 값을 반환 LOWER,UPPER,ASCII,CHR/CHAR,CONCAT,SUBSTR/SUBSTRING,LENGTH/LEN,LTRIM,RTRIM,TRIM 숫자형 함수 숫자를 입력하..
-
[SQL] DDL / DML / DCL / TCLDatabase 2023. 7. 4. 22:51
데이터 정의어 (DDL) CREATE 데이터베이스 개체 생성 ALTER 데이터베이스 개체 수정 DROP 데이터베이스 개체 삭제 RENAME 데이터베이스 개체 이름 변경 TRANCATE 테이블의 모든 행 삭제 데이터 조작어 (DML) SELECT 데이터 조회 INSERT 데이터 삽입 UPDATE 데이터 수정 DELETE 데이터 삭제 데이터 제어어(DCL) GRANT 특정 사용사에게 특정 작업에 대한 권한 부여 REVOKE 특정 사용사에게 특정 작업에 대한 권한 취소 트랜젝션 제어(TCL) COMMIT 트랜젝션의 작업결과를 저장 반영 ROLLBACK 트렌잭션 작업 취소 데이터베이스를 마지막 commit된 시점의 상태로 복원 SAVEPOINT 현 시점에서 savepoint 까지의 트랜젝션만 rollback하기..