IT 이야기 25

[MSSQL] Backup 옵션 : Compression(압축)

데이터베이스 백업은 압축 옵션을 지원합니다.이것은 CPU 리소스를 사용하여 데이터를 압축함으로써 DISK I/O를 줄이는 방법입니다. 압축된 백업은 동일한 데이터의 압축되지 않은 백업보다 작기 때문에 일반적으로 백업을 압축하면 DISK I/O가 적게 필요하므로 백업 속도가 크게 증가합니다. 또한 압축되었기 때문에 파일 용량이 작습니다. compression 옵션backup database [AdventureWorks2019] to disk = 'D:\DBBackup\TEST\AdventureWorks2019_compression_full_20221129_144100.bak' with compression, init; 백업 시간 비교-- 1. 일반 백업backup database [AdventureWork..

IT 이야기/DB 2022.12.28

[MSSQL] SQL Server 2019 SSMS 설치 방법

1.Microsoft SQL Server 2019 다운로드 페이지 접속 https://www.microsoft.com/ko-kr/sql-server/sql-server-downloads SQL Server 다운로드 | Microsoft 지금 Microsoft SQL Server 다운로드를 시작하세요. 내 데이터와 워크로드에 가장 적합한 SQL Server 체험판 또는 버전, 에디션, 도구 또는 커넥터를 선택하세요. www.microsoft.com 2. 웹 페이지에서 SQL Server Express 버전 지금 다운로드 클릭 3. 다운로드된 exe 파일을 실행 4. 설치 유형을 기본으로 선택하여 설치를 진행 5. 설치하고자하는 언어를 선택하고 수락을 눌러 설치를 진행 6. 설치 위치를 지정하고 (지정하지 ..

IT 이야기/DB 2022.10.11

[MSSQL] 집합 연산자 (UNION, INTERSECT, EXCEPT) 합집합, 교집합, 차집합

합집합 집합 이론에서 두 집합 간의 모든 요소를 포함하는 집합이다. (합집합의 개념) T-SQL에서 UNION 연산자는 두 입력 쿼리의 결과를 하나로 결합한다. 두 가지 형태의 UNION 연산자를 지원하는데, UNION ALL과 UNION(암시적으로 DISTINCT 처리) 이다. UNION ALL UNION ALL 멀티 셋 연산자는 두 입력 쿼리로부터 만들어지는 어떠한 행이라도 모두 결과에 포함 시켜 반환한다. 이 때 행을 비교하거나 중복을 제거하는 등의 작업을 수행하지 않는다. Query 1이 m개 행을 반환하고 Query 2가 n개 행을 반환한다면 결과 쿼리는 m+n개의 행을 반환하게 된다. UNION UNION 집합 연산자는 두 쿼리의 결과를 결합한 다음 중복을 제거한다. 하나의 행이 양쪽 입력 집..

IT 이야기/DB 2022.10.10

[DB 기술면접] 페이지와 익스텐트 (SQL Server 단일 익스텐트/혼합 익스텐트)

SQL Server 기준의 페이지와 익스텐트 데이터베이스를 구성하는 데이터 파일은 내부적으로 페이지라고 하는 8KB의 논리 단위로 구분되어 사용된다. 페이지는 테이블 등의 오브젝트에 저장된 데이터를 읽고 쓸 때의 최소 I/O 단위다. 그러나 오브젝트에 새로운 영역을 할당해야 하는 경우에는 페이지가 아니라 익스텐트라는 단위가 사용된다. 익스텐트는 8KB 페이지가 8개로 구성되어 있다. 테이블에 할당된 모든 페이지에 빈 용량이 없어지면 테이블에는 새로운 익스텐트가 할당된다. 단일 익스텐트와 혼합 익스텐트 하나의 오브젝트에 8페이지 모두를 점유하는 단일 익스텐트와 복수의 오브젝트를 공유하는 혼합 익스텐트가 존재한다. SQL 서버는 2014까지 디폴트 동작으로 오브젝트의 초기 구성에 혼합 익스텐트를 할당했다. ..

IT 이야기/DB 2022.10.09

[MSSQL] 중복 제거 조회 (distinct, group by)

SELECT문으로 데이터를 조회 시 중복된 값이 조회되는 경우가 있습니다. 중복된 값을 제거하고 조회할 수 있는 방법에 대해서 스크립트를 통해 소개해드리도록 하겠습니다. 우선 테스트할 테이블을 조회 합니다. SELECT country FROM dbo.CUST_TABLE 국가(country) 컬럼에 중복된 값들이 조회되는 것을 확인할 수 있습니다. 그럼 이제 중복된 값들을 제거 해보겠습니다. Distinct distinct 구문은 지정된 집합의 중복 튜플을 제거해서 결과 집합을 반환합니다. SELECT distinct country FROM dbo.CUST_TABLE 쿼리 수행 시 중복 튜플이었던 denmark 와 germany가 한 개씩만 남고 사라지는 것을 확인할 수 있습니다. 이번에는 다른 방법으로 ..

IT 이야기/DB 2022.09.16

[SQLP 시험대비 요약/단답형] 선택도와 카디널리티

옵티마이저는 쿼리 실행 비용을 계산하기 위해 다양한 통계정보를 사용합니다. 그리고 그 중에서 비용 계산의 출발점이 되는 선택도와 카디널리티에 대해서 알아보겠습니다. 공식을 활용해 답을 구하는 방식으로 단답형 문제 출제될 가능성이 있으니 공식을 꼭 외우시길 당부드립니다. 선택도(Selectivity) 선택도란 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율이며 선택도를 계산하기 위해서는 NDV가 사용됩니다. NDV :컬럼 값 종류 개수 (Number of Distinct Values) 선택도 = 1 / NDV 카디널리티(Cardinality) 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수를 뜻 합니다. 카디널리티 = 총 로우 수 x 선택도 = 총 로우 수 / NDV 예를 들어 상품분류 칼럼..

IT 이야기/DB 2022.09.15

[MSSQL] 문자열 자르기 (SUBSTRING, RIGHT, LEFT)

SQL Server에서는 문자열 잘라내기 기능을 제공합니다. 테스트를 위해 테이블을 생성합니다. CREATE TABLE dbo.PROD_TABLE ( prod_cd varchar(10) ) INSERT INTO PROD_TABLE(prod_cd) VALUES ('DP0312'); INSERT INTO PROD_TABLE(prod_cd) VALUES ('AP0312T'); INSERT INTO PROD_TABLE(prod_cd) VALUES ('AP0312C'); SUBSTRING 문자열에 대해 시작 위치 위치부터 지정된 만큼의 문자를 잘라내어 출력할 수 있습니다. -- 첫번째 문자부터 문자 2개를 잘라낸다. SELECT SUBSTRING(prod_cd, 1, 2) AS cd1 FROM PROD_TABLE..

IT 이야기/DB 2022.09.13

[MSSQL] Lock 확인 및 Kill 하는 방법

DB를 사용하다보면 Lock이 발생하여 특정 테이블에 더이상 접근할 수 없는 현상이 발생합니다. Lock에 대한 이론적 설명은 뒤로하고 우선 Lock을 확인하고 kill 하는 방법에 대해서 알아보겠습니다. Lock 을 조회하는 시스템 프로시저 명령어를 다음과 같습니다. EXEC SP_LOCK 아래와 같이 조회됩니다. 이제 의도적으로 Lock을 발생시켜 보겠습니다. INSERT문을 수행하되 트랜잭션이 종료되지 않도록 합니다. BEGIN TRAN INSERT INTO dbo.CUST_TABLE(custid, custname, country) VALUES (8, 'test8', 'korea') 그리고 해당 테이블을 조회해 보겠습니다. SELECT * FROM dbo.CUST_TABLE 그러면 쿼리가 계속 돌아..

IT 이야기/DB 2022.09.12

[SQLP 시험대비 요약/단답형] 공유커서, 세션커서, 애플리케이션 커서

커서(Cursor)란 커서는 상황에 따라 여러 가지 의미로 사용되므로 커서의 의미를 명확히 해야 합니다. 커서는 아래 3가지를 모두 일컫는 말입니다. 공유 커서 (shared cursor) : 라이브러리 캐시에 공유돼 있는 커서 세션 커서 (session cursor) : Private SQL Area(PGA)에 저장된 커서 애플리케이션 커서 (application cursor) : 세션 커서를 가리키는 핸들 공유 커서 (shared cursor) SQL을 수행하면 서버 프로세스는 해당 SQL이 라이브러리 캐시에 공유돼 있는지를 먼저 확인합니다. 없으면 최적화를 통해 실행계획을 만들고, 라이브러리 캐시에 공유합니다. 라이브러리 캐시에 공유돼 있는 Shared SQL Area를 '커서'라고 부릅니다. 세션..

IT 이야기/DB 2022.09.11

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

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

IT 이야기/DB 2022.09.10
반응형