전체 글 36

[SQLP 시험대비 요약/단답형] 소프트 파싱과 하드 파싱

DBMS는 사용자로부터 실행된 SQL을 받으면 가장 먼저 SQL 파싱을 수행합니다. 먼저 SQL Parser가 SQL 개별 요소를 분석해서 파싱트리를 생성합니다. SQL에 문법적 오류가 없는지 체크하고 (= Syntax 체크) 오브젝트 존재 여부, 권한 확인 등의 의미상 오류를 체크합니다. (= Semantc 체크) 검사가 끝나면 해당 SQL과 일치하는 SQL이 메모리에 캐싱되어 있는지를 확인하고 캐싱되어 있다면 별도의 최적화 작업을 수행하지 않고 SQL에 대한 실행계획을 찾아 바로 실행합니다. (= 소프트 파싱) 캐싱되어 있지 않다면 최적화 작업을 수행하게 됩니다. (= 하드 파싱) 이 최적화 작업은 옵티마이저가 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성해서 비교한 후 ..

IT 이야기/DB 2022.09.10

[DB 기술면접] 해시 조인(Hash Join)이란 무엇인가

정의 해시 조인은 작은 집합으로 해시 테이블을 생성하고 큰 집합을 읽으면서 해시 테이블을 탐색하는 조인 기법입니다. 해시 테이블을 생성하는 데 사용되는 집합을 Bulid Input이라 하고 해시 테이블을 탐색하는 데 사용되는 집합을 Probe Input 이라고 합니다. 즉, 해시 조인은 두 단계로 진행됩니다. 작동 매커니즘 1. Build 단계 : 작은 쪽 테이블(Build Input)을 스캔해서 해시 테이블(해시 맵)을 생성한다. 2. Probe 단계 : 큰 쪽 테이블(Probe Input)을스캔해서 해시 테이블을 탐색하면서 조인한다. 예를 들어 배송업체 관리 테이블 (약 400건), 배송내역 테이블 (약 80,000건)을 해시 조인한다고 가정해보겠습니다. 1. Build 단계 : 우선 작은 쪽 테이블..

IT 이야기/DB 2022.09.09

[DB 기술면접] 클러스터 인덱스, 넌클러스터 인덱스 차이점은?

SQL Server 에서는 인덱스를 클러스터 인덱스와 넌클러스터 인덱스로 나눌 수 있습니다. 이 둘의 가장 큰 차이점은 리프 페이지 구조인데요. 각각의 특징을 살펴보도록 하겠습니다. 클러스터 인덱스 1. 인덱스의 리프 페이지가 곧 데이터 페이지이다. 2. 이 데이터 페이지에 있는 데이터는 클러스터 인덱스의 키 컬럼으로 모두 정렬되어 있다. 아래와 같이 클러스터 인덱스를 만들어보자 CREATE CLUSTERED INDEX IDX__CUST_TABLE__TEST ON dbo.CUST_TABLE(cust_no, svc_nation_cd) 마지막 리프 페이지에는 인덱스 키 컬럼 외 나머지 컬럼 정보가 저장됩니다. 넌클러스터 인덱스 넌클러스터 인덱스의 리프 페이지 구조는 해당 테이블에 클러스터 인덱스가 있냐 없냐..

IT 이야기/DB 2022.09.08

[MSSQL] INSERT문 다양한 사용법

SQL에는 데이터 조작 언어 (DML)가 있으며 DML에는 데이터를 삽입, 입력, 추가하는 INSERT문이 있습니다. 지금부터 INSERT문에 대한 다양한 사용법을 MS-SQL 기준으로 소개해 드리겠습니다. 우선 데이터를 입력할 테이블을 하나 생성합니다. CREATE TABLE dbo.CUST_TABLE ( custid int , custname varchar(10) , country varchar(10) ) INSERT INTO VALUE 가장 기본적인 INSERT문 입니다. 특정 값을 가지는 행들을 테이블에 입력합니다. INSERT INTO dbo.CUST_TABLE(custid, custname, country) VALUES (1, 'test', 'korea'); VALUES절 기능이 확대되어 쉼표..

IT 이야기/DB 2022.09.07

[MSSQL] 테이블 및 컬럼 디스크립션(Description) 추가, 수정, 조회

테이블 및 컬럼에 디스크립션 (또는 코멘트) 추가하는 방법과 추가한 내용을 조회하는 방법을 소개해 드리겠습니다. SQL Server에서 디스크립션을 추가하고 수정하는 명령어는 아래와 같습니다. sp_addextendedproperty sp_updateextendedproperty 컬럼 디스크립션(Description) 추가, 수정 스크립트 -- 테이블 생성 CREATE TABLE dbo.CUST_TABLE ( custid varchar(10) , custname varchar(20) , country varchar(20) ) GO -- 데이터 입력 INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2455', 'junsu', 'korea'); IN..

IT 이야기/DB 2022.09.06

[MSSQL] 데이터베이스 정렬 방식 (COLLATE, COLLATION)

SQL을 사용하다보면 일반적으로 대소문자를 구분하지 않고 작동한다는 것을 알 수 있습니다. 왜 그럴까요? 데이터베이스에는 Collation이라는 개념이 있는데 보통 대소문자를 구분하지 않도록 설정 해놓고 SQL을 사용하기 때문입니다. 1. 정렬 방식 (Collation) 이란 정렬 방식 (Collation)은 지원 언어, 정렬 순서, 대소문자 구분, 악센트 구분 등과 같은 문자형 데이터에 대한 여러 측면을 포괄하는 특성입니다. 다음과 같이 테이블 함수를 사용해서 시스템에서 지원하는 collation 정보를 확인할 수 있습니다. SELECT name , description FROM sys.fn_helpcollations(); 예를 들어 Latin1_General_CI_AS 정렬 방식은 다음과 같은 특징을..

IT 이야기/DB 2022.09.05

[DB 기술면접] 인덱스(index)란 무엇인가, 생성 방법과 원리

데이터베이스에서 인덱스란 테이블에서 데이터를 더 빨리 찾게 해주는 자료구조입니다. 그리고 일반적으로 인덱스의 자료구조는 B-Tree 를 뜻합니다. 인덱스 생성 방법 인덱스 (B-Tree)가 테이블에서 데이터를 더 빨리 찾을 수 있는 이유 인덱스 생성의 장단점 인덱스 생성 방법 우선 인덱스를 만들기 위해서 테이블을 생성하고 데이터를 입력합니다. (MS SQL 기준) -- 테이블 생성 CREATE TABLE dbo.CUST_TABLE ( custid int , custname varchar(10) , country varchar(10) ) DECLARE @i int = 1 -- 데이터 입력 WHILE (@i

IT 이야기/DB 2022.09.04

SQLP 응시자격 (4년제 대학 졸업했으면 바로 응시가능 합니다.)

SQLP 응시자격 SQLP를 취득하기 위해서 SQLD를 꼭 먼저 취득해야 한다고 알고 계신 분들이 더러 있는데, 그것은 잘못된 정보입니다. 한국데이터진흥원은 SQLP 응시자격을 아래와 같이 고시합니다. SQL 전문가 자격시험의 응시자격은 아래와 같으며 응시자격은 시험일 기준 시험일 이전에 응시자격 요건이 충족되어야 한다. 학력/경력기준 또는 자격기준 중 한가지의 요건이 충족될 경우 응시자격이 부여된다. 응시자격 학력 및 경력 기준 - 학사학위 이상 취득한 자 - 전문학사학위 취득 후 실무경력 2년 이상인 자 - 고등학교 졸업한 후 실무경력 4년 이상인 자 자격보유 기준 - 국내·외 데이터베이스 관련 자격을 취득한 자 - SQL 개발자 자격을 취득한 자 - 데이터아키텍처 전문가 및 준전문가 자격을 취득한 ..

IT 이야기/DB 2022.09.03

SQLP 자격증의 가치와 공부하는 이유

SQLD 자격증이 있는데 SQLP도 따야할까? 데이터 직무의 중요성과 인기가 커지면서 많은 분들이 SQLD를 응시하고 있습니다. 실제로 SQLD 자격증 응시자 수는2016년 4,256명에서 2021년 23,391명으로 약 5배 이상이나 증가했으며 올해 2022년까지도 꾸준히 증가할 것으로 예상됩니다. 그 원인 중 하나는 비IT 직군의 직원들도 본인들의 기업 환경에서 데이터를 직접 뽑아 활용할 수 있어야만 유능한 직원으로 인정받고, 그런 직원들이 속한 기업만이 선도적인 기업으로 설장할 수 있는 시대가 왔기 때문이 아닐까 싶습니다. 그러나 문제는 자격증의 가치입니다. 다양한 직군의 사람들이 SQLD 자격증을 취득하면서 SQL이 기본 소양이 되는 이러한 변화는 사회 전반적으로 매우 바람직하지만 IT/데이터를 ..

IT 이야기/DB 2022.09.02

[MSSQL] 로컬서버 접속 후 DB와 사용자 생성 방법

안녕하세요. 마술공입니다. SQL Server 설치 후 로컬서버에 접속하여 DB와 사용자를 생성하는 방법에 대해서 소개해 드리겠습니다. 우선 SQL Server의 로컬 DB로 Connect합니다. 서버에 연결되면 Databases > New Database... 로 접근합니다. 새롭게 생성할 데이터베이스의 명칭과 초기 사이즈 등을 설정합니다. DB가 만들어졌다면 사용자를 생성할 차례입니다. Security > Logins > New Login... 으로 접근합니다. Login name과 password를 입력합니다. 그리고 디폴트 데이터베이스를 설정합니다. 해당 사용자가 생성된 것을 확인할 수 있습니다. 이제 사용자에게 권한을 부여할 차례입니다. 해당 사용자를 우클릭하여 Properties로 접근합니다...

IT 이야기/DB 2022.09.01
반응형